Version 2020 von 100 Klopfen der Sprachverarbeitung, die als Sammlung von Problemen der Verarbeitung natürlicher Sprache bekannt ist, wurde veröffentlicht. Dieser Artikel fasst die Ergebnisse der Lösung von Kapitel 1: Vorbereitende Bewegung aus den folgenden Kapiteln 1 bis 10 zusammen. ..
--Kapitel 1: Vorbereitende Bewegung
Wir verwenden Google Colaboratory für Antworten. Weitere Informationen zum Einrichten und Verwenden von Google Colaboratory finden Sie in diesem Artikel. Das Notizbuch mit den Ausführungsergebnissen der folgenden Antworten ist unter [github] verfügbar (https://github.com/hana-mame/nlp100/blob/master/chapter01.ipynb).
Holen Sie sich eine Zeichenfolge, in der die Zeichen der Zeichenfolge "betont" umgekehrt angeordnet sind (vom Ende bis zum Anfang).
str = 'stressed'
ans = str[::-1]
print(ans)
Ausgabe
desserts
Nehmen Sie das 1., 3., 5. und 7. Zeichen der Zeichenkette "Patatokukashi" heraus und erhalten Sie die verkettete Zeichenkette.
str = 'Patatoku Kashii'
ans = str[::2]
print(ans)
Ausgabe
Pat Auto
Erhalten Sie die Zeichenkette "Patatokukashi", indem Sie die Zeichen "Pattocar" + "Tax" von Anfang an abwechselnd verbinden.
str1 = 'Pat Auto'
str2 = 'Taxi'
ans = ''.join([i + j for i, j in zip(str1, str2)])
print(ans)
Ausgabe
Patatoku Kashii
Verwendung von Python- und Zip-Funktionen: Mehrere Listenelemente gleichzeitig abrufen Verwendung der Python-Listeneinschlussnotation Strings mit Python verketten und kombinieren
Brechen Sie den Satz auf "Jetzt brauche ich einen Drink, natürlich alkoholisch, nach den schweren Vorlesungen über Quantenmechanik."
import re
str = 'Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.'
str = re.sub('[,\.]', '', str) # ,Wann.Entfernen
splits = str.split() #Erstellen Sie eine wortweise Liste, die durch Leerzeichen getrennt ist
ans = [len(i) for i in splits]
print(ans)
Ausgabe
[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 8, 9, 7, 9]
Zeichenfolge durch Python ersetzen Zeichenfolgen in Python teilen Ermitteln Sie die Größe von Objekten verschiedener Typen mit der len-Funktion von Python
Brechen Sie den Satz „Hi He Lied, weil Bor Fluor nicht oxidieren konnte. Neue Nationen könnten auch eine 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 und das assoziative Array (Wörterbuchtyp oder Kartentyp) von der extrahierten Zeichenfolge bis zur Position des Wortes (welche Anzahl von Wörtern von Anfang an) Erstellen.
str = 'Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.'
splits = str.split()
one_ch = [1, 5, 6, 7, 8, 9, 15, 16, 19] #Nummernliste der Wörter, um ein Zeichen zu extrahieren
ans = {}
for i, word in enumerate(splits):
if i + 1 in one_ch:
ans[word[:1]] = i + 1 #Holen Sie sich 1 Zeichen, wenn in der Liste
else:
ans[word[:2]] = i + 1 #Wenn nicht, erhalten Sie 2 Zeichen
print(ans)
Ausgabe
{'H': 1, 'He': 2, 'Li': 3, 'Be': 4, 'B': 5, 'C': 6, 'N': 7, 'O': 8, 'F': 9, 'Ne': 10, 'Na': 11, 'Mi': 12, 'Al': 13, 'Si': 14, 'P': 15, 'S': 16, 'Cl': 17, 'Ar': 18, 'K': 19, 'Ca': 20}
Schleifenverarbeitung durch Python für Anweisung Verwendung von Python, Aufzählung: Abrufen von Listenelementen und Indizes Wie man eine bedingte Verzweigung mit einer if-Anweisung in Python schreibt Dict () und Wave-Klammern zum Erstellen eines Wörterbuchs in Python, Wörterbucheinschlussnotation
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 ngram(n, lst):
return set(zip(*[lst[i:] for i in range(n)]))
str = 'I am an NLPer'
words_bi_gram = ngram(2, str.split())
chars_bi_gram = ngram(2, str)
print('Wort bi-gram:', words_bi_gram)
print('Zeichen bi-gram:', chars_bi_gram)
Ausgabe
Wort bi-gram: {('am', 'an'), ('I', 'am'), ('an', 'NLPer')}
Zeichen bi-gram: {('I', ' '), (' ', 'N'), ('e', 'r'), ('a', 'm'), (' ', 'a'), ('n', ' '), ('L', 'P'), ('m', ' '), ('P', 'e'), ('N', 'L'), ('a', 'n')}
Funktionen in Python definieren und aufrufen Python, Set-Operation mit Set-Typ
Suchen Sie den in "paraparaparadise" und "Absatz" enthaltenen Satz von Zeichen-Bi-Gramm als X bzw. Y und suchen Sie den Summensatz, den Produktsatz und den Differenzsatz von X bzw. Y. Finden Sie außerdem heraus, ob das Bi-Gramm in X und Y enthalten ist.
Hier wird die in 05 erstellte Funktion ngram
wiederverwendet.
str1 = 'paraparaparadise'
str2 = 'paragraph'
X = ngram(2, str1)
Y = ngram(2, str2)
union = X | Y
intersection = X & Y
difference = X - Y
print('X:', X)
print('Y:', Y)
print('Summensatz:', union)
print('Produktset:', intersection)
print('Differenz gesetzt:', difference)
print('Enthält X se:', {('s', 'e')} <= X)
print('Enthält Y se:', {('s', 'e')} <= Y)
Ausgabe
X: {('a', 'r'), ('a', 'p'), ('s', 'e'), ('p', 'a'), ('r', 'a'), ('i', 's'), ('d', 'i'), ('a', 'd')}
Y: {('p', 'h'), ('a', 'r'), ('a', 'p'), ('p', 'a'), ('g', 'r'), ('r', 'a'), ('a', 'g')}
Summensatz: {('p', 'h'), ('a', 'r'), ('a', 'p'), ('s', 'e'), ('p', 'a'), ('g', 'r'), ('r', 'a'), ('i', 's'), ('a', 'g'), ('d', 'i'), ('a', 'd')}
Produktset: {('p', 'a'), ('r', 'a'), ('a', 'r'), ('a', 'p')}
Differenz gesetzt: {('d', 'i'), ('i', 's'), ('a', 'd'), ('s', 'e')}
Enthält X se: True
Enthält Y se: False
Implementieren Sie eine Funktion, die die Argumente x, y, z verwendet und die Zeichenfolge "y bei x ist z" zurückgibt. Stellen Sie außerdem x = 12, y = "Temperatur", z = 22,4 ein und überprüfen Sie das Ausführungsergebnis.
def generate_sentence(x, y, z):
print('{}Damals{}Ist{}'.format(x, y, z))
generate_sentence(12, 'Temperatur', 22.4)
Ausgabe
Um 12 Uhr ist die Temperatur 22.4
Formatkonvertierung mit Python, Format
Implementieren Sie die Funktionsverschlüsselung, die jedes Zeichen der angegebenen Zeichenfolge gemäß den folgenden Spezifikationen konvertiert. Durch Kleinbuchstaben ersetzen (219 - Zeichencode) Geben Sie andere Zeichen so aus, wie sie sind Verwenden Sie diese Funktion, um englische Nachrichten zu verschlüsseln / entschlüsseln.
def cipher(str):
rep = [chr(219 - ord(x)) if x.islower() else x for x in str]
return ''.join(rep)
message = 'the quick brown fox jumps over the lazy dog'
message = cipher(message)
print('Verschlüsselung:', message)
message = cipher(message)
print('Entschlüsselung:', message)
Ausgabe
Verschlüsselung: gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
Entschlüsselung: the quick brown fox jumps over the lazy dog
Unicode-Codepunkte und -Zeichen mit Python konvertieren Liste der Zeichenkettenmethoden zur Bearbeitung von Groß- und Kleinbuchstaben in Python
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 shuffle(words):
splits = words.split()
if len(splits) > 4:
splits = splits[:1] + random.sample(splits[1:-1], len(splits) - 2) + splits[-1:]
return ' '.join(splits)
words = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind."
ans = shuffle(words)
print(ans)
Ausgabe
I what could I reading human : phenomenal the couldn't of understand that believe was the power I actually mind.
Listenelemente mit Python mischen
Sprachverarbeitung 100 Klopfen sind so konzipiert, dass Sie nicht nur die Verarbeitung natürlicher Sprache selbst lernen können, sondern auch die grundlegende Datenverarbeitung und das allgemeine maschinelle Lernen. Sogar diejenigen, die maschinelles Lernen in Online-Kursen studieren, können sehr gute Ergebnisse erzielen. Probieren Sie es also bitte aus.
Recommended Posts