[PYTHON] 100 Klopfen der Verarbeitung natürlicher Sprache Kapitel 1 (Vorbereitungsbewegung)

Einführung

"[Knock 100-Sprachverarbeitung](http: //www.cl.ecei), veröffentlicht im Inui / Okazaki Laboratory der Tohoku University .tohoku.ac.jp / nlp100 /) “ist bekannt als eine Sammlung von Problemen für Studenten und berufstätige Erwachsene, die Sprachverarbeitung studieren.

Ich bin also auch ein Student der Tohoku-Universität. Obwohl mein Hauptfach anders ist, habe ich [Knock 100-Sprachverarbeitung] ausprobiert (http://www.cl.ecei.tohoku.ac.jp/nlp100/).

Kapitel 1: Vorbereitende Bewegung

00. Umgekehrte Reihenfolge der Zeichenfolgen

Holen Sie sich eine Zeichenfolge, in der die Zeichen der Zeichenfolge "betont" umgekehrt angeordnet sind (vom Ende bis zum Anfang).

words = "stressed"
print(words[::-1])

[Ergebnis] desserts

01. "Patatokukashi"

Nehmen Sie das 1., 3., 5. und 7. Zeichen der Zeichenkette "Patatokukashi" heraus und erhalten Sie die verkettete Zeichenkette.

words = "Patatoku Kashii"
print(words[::2])

[Ergebnis] Pat Auto

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

Erhalten Sie die Zeichenkette "Patatokukashi", indem Sie die Zeichen "Pattocar" + "Tax" von Anfang an abwechselnd verbinden.

word1 = "Pat Auto"
word2 = "Taxi"
for i in range(4):
    print(word1[i]+word2[i],end="")

[Ergebnis] Patatoku Kashii

03. Umfangsrate

Zerlegen Sie den Satz „Jetzt brauche ich nach den schweren Vorlesungen über Quantenmechanik einen Alkoholiker.“ In Wörter und erstellen Sie eine Liste der Anzahl der (alphabetischen) Zeichen in jedem Wort in der Reihenfolge ihres Auftretens.

PI = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
PI = PI.replace('.','')
PI = PI.replace(',','')
PI = PI.split()
ans = [len(num) for num in PI]
ans

[Ergebnis] [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]

04. Elementsymbol

Brechen Sie den Satz "Hi He Lied, weil Bor Fluor nicht oxidieren konnte. Neue Nationen könnten auch die Friedenssicherheitsklausel unterzeichnen. Arthur King Can." In die Wörter 1, 5, 6, 7, 8, 9, 15, 16 auf. Das 19. Wort ist das erste Zeichen, und die anderen Wörter sind die ersten beiden Zeichen. Erstellen.

element = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
dict = {}
list = [1,5,6,7,8,9,15,16,19]
for i,j in enumerate(element.split()):
    if i+1 in list:
        dict[i+1] = j[0]
    else:
        dict[i+1] = j[0:2]
print(dict)

[Ergebnis] {1: 'H', 2: 'He', 3: 'Li', 4: 'Be', 5: 'B', 6: 'C', 7: 'N', 8: 'O', 9: 'F', 10: 'Ne', 11: 'Na', 12: 'Mi', 13: 'Al', 14: 'Si', 15: 'P', 16: 'S', 17: 'Cl', 18: 'Ar', 19: 'K', 20: 'Ca'}

  1. n-gram

Erstellen Sie eine Funktion, die aus einer bestimmten Sequenz (Zeichenfolge, Liste usw.) ein n-Gramm erstellt. Verwenden Sie diese Funktion, um das Wort Bi-Gramm und den Buchstaben Bi-Gramm aus dem Satz "Ich bin ein NLPer" zu erhalten.

def n_gram(target, n):
    result = []
    for i in range(len(target) - n + 1):
        result.append(target[i:i + n])
    return result

target = "I am an NLPer"
words_target = target.split()

print("[Wort bi-gram]")
print(n_gram(words_target, 2))
print("[Zeichen bi-gram]") 
print(n_gram(target, 2))

[Ergebnis] [Wort Bi-Gramm] [['I', 'am'], ['am', 'an'], ['an', 'NLPer']] [Zeichen Bi-Gramm] ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']

06. Treffen

Suchen Sie den in "paraparaparadise" und "Absatz" enthaltenen Satz von Zeichen-Bi-Gramm als X bzw. Y und suchen Sie die Summen-, Produkt- und Differenzsätze von X bzw. Y. Finden Sie außerdem heraus, ob das Bi-Gramm in X und Y enthalten ist.

def n_gram(target, n):
    result = []
    for i in range(0,len(target) - n + 1):
        result.append(target[i:i + n])
    return result

text_x = "paraparaparadise"
text_y = "paragraph"

set_x = set(n_gram(text_x, 2))
set_y = set(n_gram(text_y, 2))

print("X:",end="")
print(set_x)
print("Y:",end="")
print(set_y)

print("----")

print("[Summensatz]")
# print(set_x | set_y)Aber ok
print(set_x.union(set_y))

print("[Produktset]")
# print(set_x & set_y)Aber ok
print(set_x.intersection(set_y))

print("[Differenz gesetzt]")
# print(set_x - set_y)Aber ok
print(set_x.difference(set_y))

print("----")

print("se in X: ",end="")
print('se' in set_x)
print("se in Y: ",end="")
print('se' in set_y)

[Ergebnis] X:{'ar', 'ap', 'ad', 'di', 'ra', 'pa', 'se', 'is'} Y:{'ar', 'ap', 'ag', 'gr', 'ph', 'ra', 'pa'} ---- [Summensatz] {'ar', 'ap', 'ag', 'ad', 'gr', 'ph', 'di', 'ra', 'pa', 'se', 'is'} [Produktset] {'pa', 'ar', 'ap', 'ra'} [Differenz gesetzt] {'is', 'ad', 'di', 'se'} ---- se in X: True se in Y: False

07. Anweisungsgenerierung nach Vorlage

Implementieren Sie eine Funktion, die die Argumente x, y, z verwendet und die Zeichenfolge "y bei x ist z" zurückgibt. Setzen Sie außerdem x = 12, y = "Temperatur", z = 22,4 und überprüfen Sie das Ausführungsergebnis.

def createSentence(x,y,z):
    print("{}von Zeit".format(x) + y + "Ist{}".format(z))

createSentence(12,"Temperatur",22.4)

[Ergebnis] Die Temperatur um 12:00 Uhr beträgt 22,4

08. Kryptographie

Implementieren Sie die Funktionsverschlüsselung, die jedes Zeichen der angegebenen Zeichenfolge mit den folgenden Spezifikationen konvertiert.

  • Durch Kleinbuchstaben ersetzen (219 - Zeichencode)
  • Andere Zeichen so ausgeben, wie sie sind Verwenden Sie diese Funktion, um englische Nachrichten zu verschlüsseln / entschlüsseln.
def cipher(s):
    result =''
    for i in s:
        if i.islower():
            result += chr(219-ord(i))
        else:
            result += i
    return result

text = "Man is but a reed, the most feeble thing in the nature, but he is a thinking reed. "
cipher(text)

[Ergebnis] 'Mzm rh yfg z ivvw, gsv nlhg uvvyov gsrmt rm gsv mzgfiv, yfg sv rh z gsrmprmt ivvw. '

  1. Typoglycemia

Erstellen Sie ein Programm, das die Reihenfolge der anderen Zeichen zufällig neu anordnet, wobei das erste und das letzte Zeichen jedes Wortes für die Wortfolge durch Leerzeichen getrennt bleiben. Wörter mit einer Länge von 4 oder weniger werden jedoch nicht neu angeordnet. Geben Sie einen geeigneten englischen Satz ein (zum Beispiel: "Ich konnte nicht glauben, dass ich tatsächlich verstehen konnte, was ich las: die phänomenale Kraft des menschlichen Geistes.") Und überprüfen Sie das Ausführungsergebnis.

import random

def typoglycemia(target):
    res = []
    for s in target.split():
        if len(s) < 5:
            res.append(s)
        else:
            head = s[0]
            tail = s[-1]
            inner = list(s[1:-1])
            random.shuffle(inner)
            res.append(head+"".join(inner)+tail)
    return " ".join(res)

target = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
print(typoglycemia(target))

[Ergebnis] I cud'lont bivleee that I colud aaclutly unnsetadrd what I was rindaeg : the phnomeneal pwoer of the human mind .

schließlich

Bitte weisen Sie auf Fehler hin. Ich werde es reparieren.

Recommended Posts

100 Klopfen der Verarbeitung natürlicher Sprache Kapitel 1 (Vorbereitungsbewegung)
[Sprachverarbeitung 100 Schläge 2020] Kapitel 1: Vorbereitende Bewegung
100 Sprachverarbeitungsklopfen: Kapitel 1 Vorbereitungsbewegung
100 Sprachverarbeitung Knock 2020 Kapitel 1: Vorbereitende Bewegung
100 natürliche Sprachverarbeitung klopft Kapitel 1 Vorbereitungsbewegung (zweite Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 1 Vorbereitungsbewegung (erste Hälfte)
NLP100: Kapitel 1 Vorbereitungsbewegung
100 Sprachverarbeitung Knock 2020 Kapitel 1
Python: Verarbeitung natürlicher Sprache
100 Sprachverarbeitung Knock Kapitel 1
100 Sprachverarbeitungsklopfen ~ Kapitel 1
100 Sprachverarbeitung klopft Kapitel 2 (10 ~ 19)
RNN_LSTM2 Verarbeitung natürlicher Sprache
100 Sprachverarbeitung Knock 2020 Kapitel 3
100 Sprachverarbeitung Knock 2020 Kapitel 2
100 natürliche Sprachverarbeitung klopft Kapitel 4 Morphologische Analyse (erste Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 3 Reguläre Ausdrücke (erste Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 4 Morphologische Analyse (zweite Hälfte)
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
Verarbeitung natürlicher Sprache 1 Morphologische Analyse
100 natürliche Sprachverarbeitung klopft Kapitel 3 Reguläre Ausdrücke (zweite Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 6 Englische Textverarbeitung (zweite Hälfte)
Verarbeitung natürlicher Sprache 3 Wortkontinuität
Ich habe versucht, die 2020-Version von 100 Sprachverarbeitungsproblemen zu lösen [Kapitel 1: Vorbereitungsbewegung 00-04]
100 natürliche Sprachverarbeitung klopft Kapitel 6 Englische Textverarbeitung (erste Hälfte)
100 natürliche Sprachverarbeitung klopft Kapitel 5 Abhängigkeitsanalyse (zweite Hälfte)
Ich habe versucht, die 2020-Version von 100 Sprachverarbeitungsproblemen zu lösen [Kapitel 1: Vorbereitungsbewegung 05-09]
Verarbeitung natürlicher Sprache 2 Wortähnlichkeit
100 natürliche Sprachverarbeitung klopft Kapitel 5 Abhängigkeitsanalyse (erste Hälfte)
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 2 Grundlagen des UNIX-Befehls (zweite Hälfte)
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 2 Grundlagen des UNIX-Befehls (erste Hälfte)
Studieren Sie die Verarbeitung natürlicher Sprache mit Kikagaku
100 Sprachverarbeitung Knock 2020 Kapitel 2: UNIX-Befehle
100 Sprachverarbeitung Knock 2015 Kapitel 5 Abhängigkeitsanalyse (40-49)
[Sprachverarbeitung 100 Schläge 2020] Kapitel 3: Reguläre Ausdrücke
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
100 Sprachverarbeitung Knock Kapitel 1 in Python
Verarbeitung natürlicher Sprache für vielbeschäftigte Menschen
100 Sprachverarbeitungsklopfen 2020: Kapitel 4 (morphologische Analyse)
100 Sprachverarbeitung Knock 2020 Kapitel 4: Morphologische Analyse
100 Sprachverarbeitung Knock 2020 Kapitel 9: RNN, CNN
[Sprachverarbeitung 100 Schläge 2020] Kapitel 5: Abhängigkeitsanalyse
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 3
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
Künstliche Sprache Logivan und Verarbeitung natürlicher Sprache (Verarbeitung künstlicher Sprache)
100 Sprachverarbeitung Knock 2020 Kapitel 6: Maschinelles Lernen
100 Sprachverarbeitung Knock Kapitel 4: Morphologische Analyse
[Sprachverarbeitung 100 Schläge 2020] Kapitel 7: Wortvektor
100 Sprachverarbeitung Knock 2020 Kapitel 10: Maschinelle Übersetzung (90-98)
100 Sprachverarbeitung Knock 2020 Kapitel 5: Abhängigkeitsanalyse
100 Sprachverarbeitung klopfen 2020: Kapitel 3 (regulärer Ausdruck)
100 Sprachverarbeitung Knock 2020 Kapitel 7: Word Vector
100 Sprachverarbeitung Knock 2020 Kapitel 8: Neuronales Netz
[Sprachverarbeitung 100 Schläge 2020] Kapitel 8: Neuronales Netz
[Sprachverarbeitung 100 Schläge 2020] Kapitel 2: UNIX-Befehle
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 1
[Sprachverarbeitung 100 Schläge 2020] Kapitel 9: RNN, CNN
100 Sprachverarbeitung Knock Kapitel 1 von Python
Vorbereitung zum Starten der Verarbeitung natürlicher Sprache