100 Language Processing Knock Chapitre 1 par Python

Récemment, j'ai dû étudier Python, alors j'ai essayé de frapper 100 processus de langage. Premièrement, du chapitre 1: Mouvement préparatoire.

__ Traitement du langage 100 coups __

http://www.cl.ecei.tohoku.ac.jp/nlp100/

00. Ordre inverse des chaînes

Obtenez une chaîne dans laquelle les caractères de la chaîne «souligné» sont disposés à l'envers (de la fin au début).

q00='stressed'
print(q00[::-1])

01. «Patatokukashi»

Retirez les 1er, 3ème, 5ème et 7ème caractères de la chaîne de caractères "Patatokukashi" et obtenez la chaîne de caractères concaténée.

q01='Patatoku Kashii'
#print(q01[1]+q01[3]+q01[5]+q01[7])

# ->Version mise à jour
print(q01[1::2]) 

02. "Patcar" + "Tax" = "Patatokukasie"

Obtenez la chaîne de caractères "Patatokukashi" en reliant alternativement les caractères "Pattocar" + "Tax" depuis le début.

Solution 1

q021='Voiture Pat'
q022='Taxi'

length=min(len(q021),len(q022))

ansq02=''
for i in range(length):
    temp=q021[i]+q022[i]
    ansq02+=temp

print(ansq02)

Solution 2

q021='Voiture Pat'
q022='Taxi'

ansq022="".join(i+j for i,j in zip(q021,q022))

print(ansq022)

03. Taux circonférentiel

Décomposez la phrase "Maintenant, j'ai besoin d'un verre, alcoolique bien sûr, après les lourdes conférences sur la mécanique quantique." En mots, et créez une liste du nombre de caractères (alphabétiques) de chaque mot par ordre d'apparition.

q03="Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."

ansq03=[len(i.strip(",.")) for i in q03.split()]

print(ansq03)

04. Symbole d'élément

Décomposez la phrase "Salut, il a menti parce que le bore ne pouvait pas oxyder le fluor. De nouvelles nations pourraient également signer une clause de sécurité de paix. Arthur King Can." En mots 1, 5, 6, 7, 8, 9, 15, 16, 19 Le premier mot est le premier caractère et les autres mots sont les deux premiers caractères, et le tableau associatif (type de dictionnaire ou type de carte) de la chaîne de caractères extraite à la position du mot (quel nombre de mots depuis le début) est créé. Créez-le.

q04="Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."

dict={}

q04_list=[(i.strip(",.")) for i in q04.split()]
print(q04_list)

q04_listNum=[1, 5, 6, 7, 8, 9, 15, 16, 19]

for idx,val in enumerate(q04_list):
    temp_char=val
    idx += 1
    if ((idx) in q04_listNum):
        dict[temp_char[0]] = idx
    else:
        dict[temp_char[:2:1]] =idx

print(dict)
  1. n-gram Créez une fonction qui crée un n-gramme à partir d'une séquence donnée (chaîne, liste, etc.). Utilisez cette fonction pour obtenir le mot bi-gramme et la lettre bi-gramme de la phrase «Je suis un PNL».
q05="I am an NLPer"

# bi-gram for char
char_bigram=[q05[i:i+2] for i in range(len(q05)-1)]
print(char_bigram)

# n-bigram for words
words=[(i.strip(".,")) for i in q05.split()]
words_bigram=["-".join(words[i:i+2]) for i in range(len(words)-1)]
print(words_bigram)

06. Réunion

Trouvez l'ensemble des bi-grammes de caractères contenus dans «paraparaparadise» et «paragraphe» comme X et Y, respectivement, et trouvez l'ensemble de somme, l'ensemble de produits et l'ensemble de différences de X et Y, respectivement. En outre, découvrez si le bi-gram'se' est inclus dans X et Y.

import copy

def bigram(a):
    result=[a[i:i+2] for i in range(len(a)-1)]
    return result

q061="paraparaparadise"
q062="paragraph"

bigramX_list = copy.deepcopy(bigram(q061))
bigramY_list = copy.deepcopy(bigram(q062))

bigramX_set=set(bigramX_list)
bigramY_set=set(bigramY_list)
print ('bigramX_set =', bigramX_set)
print ('bigramY_set =', bigramY_set)

#Ensemble de somme
print ('Ensemble de somme= ',  (bigramX_set | bigramY_set))
#Jeu de différences
print ('Jeu de différences= ',  (bigramX_set - bigramY_set))
#Ensemble de produits
print ('Ensemble de produits= ',  (bigramX_set & bigramY_set))
#Chercher
print ('Résultats de recherche= ', 'se' in  (bigramX_set | bigramY_set))

07. Génération de déclaration par modèle

Implémentez une fonction qui prend les arguments x, y, z et renvoie la chaîne "y at x is z". De plus, définissez x = 12, y = "température", z = 22,4 et vérifiez le résultat de l'exécution.

def maketext(x=1,y='Anko',z=10):
    result="".join(str(x)+'de temps'+y+'Est'+str(z))
    return result

x,y,z=12,'Température',22.4

print (maketext(x,y,z))
#print (maketext())

08. Cryptographie

Implémentez le chiffrement de fonction qui convertit chaque caractère de la chaîne de caractères donnée selon les spécifications suivantes.

Remplacer par (219 --character code) caractères si minuscules Afficher les autres caractères tels quels Utilisez cette fonction pour crypter / décrypter les messages en anglais.

#Q08
def cipher(a):
    temp_list=[a[i:i+1] for i in range(len(a))]
    ciptex_list=[]
    for i in temp_list:
 
        texCode=ord(i)
        if (texCode>96 & texCode<123):
            updtexCode=chr(219-texCode)
        else:
            updtexCode=chr(texCode)

        ciptex_list.append(updtexCode)

    result="".join(i for i in ciptex_list)
    return result

print (cipher('abcdef')) #=> 'zyxwyu'
  1. Typoglycemia Créez un programme qui réorganise de manière aléatoire l'ordre des autres caractères, en laissant le premier et le dernier caractère de chaque mot pour la chaîne de mots séparés par des espaces. Cependant, les mots d'une longueur de 4 ou moins ne sont pas réorganisés. Donnez une phrase en anglais appropriée (par exemple, "Je ne pouvais pas croire que je pouvais réellement comprendre ce que je lisais: le pouvoir phénoménal de l'esprit humain.") Et vérifiez le résultat de l'exécution.
import random
def randsort(a):

    result = []
    listA = [(i.strip(',.')) for i in a.split()]
    randchar = lambda x: ''.join(random.sample(x,len(x)))

    for i in listA:
        if len(i) > 4:
            temp_word=i[:1:1]+randchar(i[1:len(i)-1:1])+i[len(i)-1::1]
            result.append(temp_word)
        else:
            result.append(i)
    return (result)

q09="I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."

print(randsort(q09))

Pour le moment, j'ai essayé d'écrire moi-même Python pour la première fois jusqu'à présent, mais j'ai fait beaucoup de recherches et appris beaucoup. Il y a peut-être d'autres moyens plus efficaces de le faire, mais pour l'instant, je vais le faire.

référence

"Obtenir la valeur de code d'un caractère" / "Obtenir un caractère à partir d'une valeur de code" en Python http://d.hatena.ne.jp/flying-foozy/20111204/1323009984

HOWTO Unicode https://docs.python.jp/3/howto/unicode.html

Python: Comparez deux éléments de liste avec une opération d'ensemble de types http://www.yukun.info/blog/2008/08/python-set-list-comparison.html

3.7 type de jeu --set, frozenset http://docs.python.jp/2.5/lib/types-set.html

Recommended Posts

100 Language Processing Knock Chapitre 1 par Python
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
100 traitements de langage avec Python (chapitre 3)
100 Language Processing Knock 2020 Chapitre 1
100 Traitement du langage Knock Chapitre 1
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 traitements de langage avec Python (chapitre 2, partie 2)
100 traitements de langage avec Python (chapitre 2, partie 1)
100 coups de traitement du langage avec Python 2015
100 Language Processing Knock 2020 Chapitre 2: Commandes UNIX
100 Language Processing Knock 2015 Chapitre 5 Analyse des dépendances (40-49)
100 Language Processing Knock 2020 Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 9: RNN, CNN
100 coups de traitement linguistique (2020): 28
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 3
100 Language Processing Knock: Chapitre 1 Mouvement préparatoire
100 Language Processing Knock 2020 Chapitre 6: Apprentissage automatique
100 Language Processing Knock 2020 Chapitre 10: Traduction automatique (90-98)
100 Language Processing Knock 2020 Chapitre 5: Analyse des dépendances
100 Traitement du langage Knock 2020 Chapitre 7: Vecteur de mots
100 Language Processing Knock 2020 Chapitre 8: Neural Net
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
100 coups de traitement linguistique (2020): 38
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 1
100 traitement de la langue frapper 00 ~ 02
100 Language Processing Knock 2020 Chapitre 1: Mouvement préparatoire
100 Language Processing Knock 2020 Chapitre 3: Expressions régulières
100 Language Processing Knock 2015 Chapitre 4 Analyse morphologique (30-39)
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 2
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 4
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
J'ai fait 100 traitements linguistiques Knock 2020 avec GiNZA v3.1 Chapitre 4
Traitement d'image par le remplacement du canal Python 100 Knock # 1
100 Language Processing Knock-89: Analogie avec la constitution additive
Traitement d'image par Python 100 Knock # 6 Traitement de réduction de couleur
[Programmeur nouveau venu "100 language processing knock 2020"] Résoudre le chapitre 1
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 coups de traitement du langage amateur: 17
100 traitements linguistiques Knock 2020 [00 ~ 49 réponse]
Python: traitement du langage naturel
Traitement de la communication par Python
100 Traitement du langage Knock-52: Stemming
100 coups de traitement du langage ~ Chapitre 1
100 coups de langue amateur: 07
Le traitement de 100 langues frappe le chapitre 2 (10 ~ 19)
100 coups de traitement du langage amateur: 09
100 coups en traitement du langage amateur: 47
Traitement 100 langues knock-53: Tokenisation
100 coups de traitement du langage amateur: 97
100 traitements linguistiques Knock 2020 [00 ~ 59 réponse]
100 coups de traitement du langage amateur: 67
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 14-16
100 Commandes de traitement du langage Knock UNIX apprises au chapitre 2
100 Traitement du langage Knock Expressions régulières apprises au chapitre 3
Une personne inexpérimentée en Python tente de frapper 100 traitement du langage 10 ~ 13
100 traitement du langage knock-99 (à l'aide de pandas): visualisation par t-SNE