Eintrag, bei dem Python-Anfänger ihr Bestes geben, um nach und nach 100 Sprachprozesse zu beenden

100 Sprachverarbeitungsklopfen 2015

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

Anfänger werden mit Python (3.x) ihr Bestes geben. Ich denke, es gibt viele ähnliche Artikel, aber als persönliches Memorandum. Wenn Sie Ratschläge oder Vorschläge haben, hinterlassen Sie bitte einen Kommentar!

Der Quellcode wird auch auf github veröffentlicht. https://github.com/hbkr/nlp100

Chapter1

00. Umgekehrte Reihenfolge der Zeichenfolgen


000.py


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

s [i: j: k] bedeutet mit Schritt k eine Scheibe von s von i nach j, also geht s [:: -1] vom Ende bis zum Anfang auf -1 zurück.

01. "Patatokukashi"


001.py


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

Wie oben erläutert, können Sie s [:: 2] verwenden, um eine Zeichenfolge zu extrahieren, indem Sie ein Zeichen vom Anfang bis zum Ende überspringen.

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


002.py


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

Sie können mit zip mehrere Sequenzobjekte gleichzeitig schleifen. sep.join (seq) verkettet seq mit sep als Trennzeichen, um eine Zeichenfolge zu erstellen. Die Listeneinschlussnotation lautet "Join" mit leeren Zeichen.

03. Umfangsrate


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]

Verwenden Sie "str.split (sep)", um die Zeichenfolge in eine Liste mit "sep" als Trennzeichen aufzuteilen. Wenn kein Trennzeichen angegeben ist, wird es durch Leerzeichen, Tabulatoren, Zeilenvorschubzeichenfolgen usw. getrennt. Die Anzahl der Zeichen wird nach dem Löschen des vorhergehenden und des folgenden mit "len ()" gezählt. Mit "str.strip (",. ")".

04. Elementsymbol


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}

Sie können sowohl den Elementindex als auch das Element mit enumerate (seq [, start = 0]) abrufen. Der Index wird wie er ist an den Operator "in" übergeben, um die Anzahl der zu erfassenden Zeichen anzupassen.

  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')}

Die N-Gramm-Methode ist eine Methode zum Indizieren von Sätzen mit N Zeichen als Stichwörter in der Reihenfolge der Zeichenfolgen. Die Funktion n_gram (s, n) schneidet das übergebene Sequenzobjekt s Element durch n aus und gibt es als Set-Typ zurück. Bei der Rückgabe als Set-Typ werden die Elemente nicht dupliziert.

06. Treffen


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.

Ich werde das in 005.py erstellte n_gram verwenden, aber diesmal habe ich versucht, den Ausdruck lambda zu verwenden (da ich diesmal nicht gesagt habe, dass ich eine Funktion erstellen soll). "X | Y" ist die Summenmenge, "X-Y" ist die Differenzmenge und "X & Y" ist die Produktmenge.

07. Anweisungsgenerierung nach Vorlage


007.py


def f(x, y, z): return "%s Zeit%s ist%s" % (x, y, z)

print(f(12, "Temperatur", 22.4))
Die Temperatur um 12 Uhr ist 22.4

"{1} bei {0} ist {2}" .format (x, y, z) "ist in Ordnung.

08. Kryptographie


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.

Es scheint, dass "a" <= c <= "z" "anstelle von" islower "verwendet werden kann. Ist das schneller

  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 .

Irgendwie wurde ich stur und tat mein Bestes in einer Zeile. Ich verwende sorted (), weil die Funktion shuffle () keinen Rückgabewert hat.

Recommended Posts

Eintrag, bei dem Python-Anfänger ihr Bestes geben, um nach und nach 100 Sprachprozesse zu beenden
100 Sprachverarbeitung Knock Kapitel 1 von Python
Python unerfahrene Person versucht, 100 Sprachverarbeitung 14-16 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 07-09 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 10 ~ 13 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 05-06 zu klopfen
Python unerfahrene Person versucht, 100 Sprachverarbeitung 00-04 zu klopfen
100 Sprachverarbeitungsklopfen mit Python 2015
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
100 Sprachverarbeitung Knock Kapitel 1 in Python
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (00 ~ 04)
Antwort auf AtCoder Beginners Selection von Python3
100 Sprachverarbeitung Knock-89: Analogie mit additiver Konstitutivität
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
Bildverarbeitung mit Python 100 Knock # 6 Farbreduktionsverarbeitung
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
So führen Sie eine Mehrkern-Parallelverarbeitung mit Python durch
100 Sprachverarbeitung Knock-99 (mit Pandas): Visualisierung durch t-SNE
Bildverarbeitung mit Python 100 Knock # 11 Glättungsfilter (Durchschnittsfilter)
[Python] Geben Sie Ihr Bestes, um SQL Alchemy zu beschleunigen
100 Sprachverarbeitungsklopfen (2020): 28
100 Sprachverarbeitungsklopfen (2020): 38
100 Sprachverarbeitung klopfen 00 ~ 02
[Verarbeitung natürlicher Sprache / NLP] Einfache Rückübersetzung durch maschinelle Übersetzung mit Python
[Sprachverarbeitung 100 Schläge 2020] Zusammenfassung der Antwortbeispiele von Python
100 Sprachverarbeitung Knock-92 (mit Gensim): Anwendung auf Analogiedaten
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Vergleichen Sie, wie die Verarbeitung für Listen nach Sprache geschrieben wird
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
100 Sprachverarbeitung klopfen 2020 [00 ~ 39 Antwort]
100 Sprachverarbeitung klopfen 2020 [00-79 Antwort]
100 Sprachverarbeitung klopfen 2020 [00 ~ 69 Antwort]
100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 17
Python: Verarbeitung natürlicher Sprache
Kommunikationsverarbeitung durch Python
100 Sprachverarbeitung Knock-52: Stemming
100 Sprachverarbeitung Knock Kapitel 1
Einführung in die Python-Sprache
100 Amateur-Sprachverarbeitungsklopfen: 07
100 Sprachverarbeitung Knock 2020 Kapitel 3
100 Sprachverarbeitung Knock 2020 Kapitel 2
100 Amateur-Sprachverarbeitungsklopfen: 09
100 Amateur-Sprachverarbeitungsklopfen: 47
100 Sprachverarbeitung Knock-53: Tokenisierung
100 Amateur-Sprachverarbeitungsklopfen: 97
100 Sprachverarbeitung klopfen 2020 [00 ~ 59 Antwort]
100 Amateur-Sprachverarbeitungsklopfen: 67
Sprachverarbeitung 100 Knocks-43: Extrahieren Sie Klauseln mit Nomenklatur in Bezug auf Klauseln mit Verben
Ich werde eine detaillierte Erklärung zum Tod schreiben, während ich 100 Python für die Verarbeitung natürlicher Sprache 2020 mit Python löse