Entrée où les débutants en Python font de leur mieux pour frapper petit à petit 100 processus de langage

100 traitements linguistiques frappent 2015

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

Les débutants feront de leur mieux avec Python (3.x). Je pense qu'il existe de nombreux articles similaires, mais en tant que mémorandum personnel. Si vous avez des conseils ou des suggestions, laissez un commentaire!

Le code source est également publié sur github. https://github.com/hbkr/nlp100

Chapter1

00. Ordre inverse des chaînes


000.py


s = "stressed"
print(s[::-1])
desserts

s [i: j: k] signifie tranche de s de i à j avec le pas k, donc s [:: -1] recule de -1 caractère de la fin au début.

01. «Patatokukashi»


001.py


s = "Patatoku Kashii"
print(s[::2])
Voiture Pat

Comme expliqué ci-dessus, vous pouvez utiliser s [:: 2] pour extraire une chaîne de caractères en sautant un caractère du début à la fin.

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


002.py


s = "".join(i+j for i, j in zip("Voiture Pat", "Taxi"))
print(s)
Patatoku Kashii

Vous pouvez boucler plusieurs objets de séquence en même temps avec zip. sep.join (seq) concatène seq avec sep comme délimiteur pour créer une chaîne de caractères. La notation d'inclusion de liste est «join» avec des caractères vides.

03. Taux circonférentiel


003.py


s = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
count = [len(i.strip(",.")) for i in s.split()]
print(count)
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

Utilisez str.split (sep) pour diviser la chaîne en une liste avec sep comme délimiteur. Si aucun délimiteur n'est spécifié, il sera séparé par des espaces, des tabulations, des chaînes de saut de ligne, etc. Le nombre de caractères est compté par len () après avoir supprimé le précédent et le suivant ,. Avec str.strip (",. ").

04. Symbole d'élément


004.py


s = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
dic = {word[:2-(i in (1,5,6,7,8,9,15,16,19))]:i for i, word in enumerate(s.replace(".", "").split(), 1)}
print(dic)
{'He': 2, 'K': 19, 'S': 16, 'Ar': 18, 'Si': 14, 'O': 8, 'F': 9, 'P': 15, 'Na': 11, 'Cl': 17, 'B': 5, 'Ca': 20, 'Ne': 10, 'Be': 4, 'N': 7, 'C': 6, 'Mi': 12, 'Li': 3, 'H': 1, 'Al': 13}

Vous pouvez obtenir à la fois l'index de l'élément et l'élément avec ʻenumerate (seq [, start = 0]) . L'index est passé tel quel à l'opérateur ʻin pour ajuster le nombre de caractères à acquérir.

  1. n-gram

005.py


def n_gram(s, n): return {tuple(s[i:i+n]) for i in range(len(s)-n+1)}

s = "I am an NLPer"
print(n_gram(s, 2))
print(n_gram([t.strip(".,") for t in s.split()], 2))
{('m', ' '), ('n', ' '), ('e', 'r'), ('N', 'L'), (' ', 'N'), ('a', 'm'), ('a', 'n'), ('L', 'P'), ('I', ' '), (' ', 'a'), ('P', 'e')}
{('an', 'NLPer'), ('I', 'am'), ('am', 'an')}

La méthode N-gram est une méthode d'indexation de phrases avec N caractères comme mots-clés dans l'ordre des chaînes de caractères. La fonction n_gram (s, n) coupe l'élément s de l'objet séquence passé de n et le renvoie comme type d'ensemble. En retournant comme type d'ensemble, les éléments ne sont pas dupliqués.

06. Réunion


006.py


n_gram = lambda s, n: {tuple(s[i:i+n]) for i in range(len(s)-n+1)}

X = n_gram("paraparaparadise", 2)
Y = n_gram("paragraph", 2)

print("X: %s" % X)
print("Y: %s" % Y)
print("union: %s" % str(X|Y))
print("difference: %s" % str(X-Y))
print("intersection: %s" % str(X&Y))

if n_gram("se", 2) <= X: print("'se' is included in X.")
if n_gram("se", 2) <= Y: print("'se' is included in Y.")
X: {('a', 'd'), ('a', 'p'), ('i', 's'), ('s', 'e'), ('a', 'r'), ('p', 'a'), ('d', 'i'), ('r', 'a')}
Y: {('g', 'r'), ('p', 'h'), ('a', 'p'), ('a', 'r'), ('p', 'a'), ('r', 'a'), ('a', 'g')}
union: {('a', 'd'), ('g', 'r'), ('p', 'h'), ('a', 'p'), ('i', 's'), ('s', 'e'), ('a', 'r'), ('p', 'a'), ('d', 'i'), ('r', 'a'), ('a', 'g')}
difference: {('i', 's'), ('d', 'i'), ('a', 'd'), ('s', 'e')}
intersection: {('a', 'r'), ('p', 'a'), ('a', 'p'), ('r', 'a')}
'se' is included in X.

J'utiliserai le n_gram créé dans 005.py, mais cette fois j'ai essayé d'utiliser l'expression lambda (puisque je n'ai pas dit que je devrais créer une fonction cette fois). «X | Y» est l'ensemble de somme, «X-Y» est l'ensemble de différences et «X & Y» est l'ensemble de produits.

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


007.py


def f(x, y, z): return "%s temps%s est%s" % (x, y, z)

print(f(12, "Température", 22.4))
La température à 12 heures est de 22.4

" {1} à {0} est {2} ".format (x, y, z) est bien.

08. Cryptographie


008.py


def cipher(s): return "".join(chr(219-ord(c)) if c.islower() else c for c in s)

s = "Hi He Lied Because Boron Could Not Oxidize Fluorine."
print(cipher(s))
print(cipher(cipher(s)))
Hr Hv Lrvw Bvxzfhv Blilm Clfow Nlg Ocrwrav Foflirmv.
Hi He Lied Because Boron Could Not Oxidize Fluorine.

Il semble que «a» <= c <= «z» «peut être utilisé à la place de« est inférieur ». Est-ce plus rapide?

  1. Typoglycemia

009.py


from random import random

typo = lambda s: " ".join(t[0]+"".join(sorted(t[1:-1], key=lambda k:random()))+t[-1] if len(t) > 4 else t for t in s.split())

s = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
print(typo(s))
I cdnlu'ot blieeve that I culod aclualty uetdnnsard what I was rdeniag : the pnneehmoal pwoer of the huamn mind .

D'une certaine manière, je suis devenu têtu et j'ai fait de mon mieux en une seule ligne. J'utilise sorted () car la fonction shuffle () n'a pas de valeur de retour.

Recommended Posts

Entrée où les débutants en Python font de leur mieux pour frapper petit à petit 100 processus de langage
100 Language Processing Knock Chapitre 1 par Python
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 14-16
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 07-09
Une personne inexpérimentée en Python tente de frapper 100 traitement du langage 10 ~ 13
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 05-06
Une personne inexpérimentée en Python essaie de frapper 100 traitement du langage 00-04
100 coups de traitement du langage avec Python 2015
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
[Python] Essayez de classer les boutiques de ramen par traitement du langage naturel
100 traitements de langage avec Python
100 Language Processing Knock Chapitre 1 en Python
100 traitements de langage avec Python (chapitre 3)
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
Réponse à la sélection des débutants d'AtCoder par Python3
100 Language Processing Knock-89: Analogie avec la constitution additive
100 traitements de langage avec Python (chapitre 2, partie 2)
Traitement d'image par Python 100 Knock # 6 Traitement de réduction de couleur
100 traitements de langage avec Python (chapitre 2, partie 1)
Comment faire un traitement parallèle multicœur avec python
100 traitement du langage knock-99 (à l'aide de pandas): visualisation par t-SNE
Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)
[Python] Faites de votre mieux pour accélérer SQL Alchemy
100 coups de traitement linguistique (2020): 28
100 coups de traitement linguistique (2020): 38
100 traitement de la langue frapper 00 ~ 02
[Traitement du langage naturel / PNL] Comment effectuer facilement une traduction arrière par traduction automatique avec Python
[Traitement du langage 100 coups 2020] Résumé des exemples de réponses par Python
100 langage traitement knock-92 (utilisant Gensim): application aux données d'analogie
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
Comparez comment écrire le traitement des listes par langue
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
100 traitements linguistiques Knock 2020 [00 ~ 39 réponse]
100 langues de traitement knock 2020 [00-79 réponse]
100 traitements linguistiques Knock 2020 [00 ~ 69 réponse]
100 Language Processing Knock 2020 Chapitre 1
100 coups de traitement du langage amateur: 17
Python: traitement du langage naturel
Traitement de la communication par Python
100 Traitement du langage Knock-52: Stemming
100 Traitement du langage Knock Chapitre 1
Introduction au langage Python
100 coups de langue amateur: 07
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
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
Traitement du langage 100 knocks-43: Extraire les clauses contenant la nomenclature liée aux clauses contenant des verbes
J'écrirai une explication détaillée à mort en résolvant 100 traitements de langage naturel Knock 2020 avec Python