Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)

Vorwort

Ich habe den Code in der Fortsetzung des letzten Males geschrieben. Ich habe den Teil gekürzt, der leicht zu sehen ist und so kurz wie möglich geschrieben werden kann. Bitte weisen Sie auf Fehler oder Verbesserungen hin.

(Zusatz) Da Sie darauf hingewiesen haben, wie der Code geschrieben wird, habe ich nach der Bearbeitung von 05, 06 und 09 hinzugefügt.

  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.

05.py


def word_ngram(seq, n):
    return ["-".join(seq.split()[i:i+n]) for i in range(len(seq.split())-n+1)]

def char_ngram(seq, n):
    return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]

def main():
    seq = "I am an NLPer"
    word_2gram_list, char_2gram_list = word_ngram(seq, 2), char_ngram(seq, 2)
    print(word_2gram_list)
    print(char_2gram_list)

if __name__ == '__main__':
    main()
['I-am', 'am-an', 'an-NLPer']
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']

Das Wort Bi-Gramm wird durch Bindestriche getrennt angezeigt, und das Zeichen Bi-Gramm wird mit Leerzeichen angezeigt.

(Nach dem Bearbeiten von ↓) Das word_ngram wurde neu geschrieben.

05.py


def word_ngram(seq, n):
    words = seq.split()
    return ["-".join(words[i:i+n]) for i in range(len(words)-n+1)]

def char_ngram(seq, n):
    return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]

def main():
    seq = "I am an NLPer"
    word_2gram_list, char_2gram_list = word_ngram(seq, 2), char_ngram(seq, 2)
    print(word_2gram_list)
    print(char_2gram_list)

if __name__ == '__main__':
    main()

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.

06.py


# coding:utf-8

def n_gram(seq, n):
    return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]

def main():
    X, Y = set(n_gram("paraparaparadise", 2)), set(n_gram("paragraph", 2))
    print("X: " + str(X))
    print("Y: " + str(Y))
    print("Summensatz: " + str(X.union(Y)))
    print("Produktset: " + str(X.intersection(Y)))
    print("Differenz gesetzt: " + str(X.difference(Y)))
    print("Enthält X se?: " + str("se" in X))
    print("Beinhaltet Y se?: " + str("se" in Y))

if __name__ == '__main__':
    main()
X: {'pa', 'ar', 'di', 'se', 'ad', 'ap', 'is', 'ra'}
Y: {'pa', 'ar', 'ph', 'ap', 'ag', 'gr', 'ra'}
Summensatz: {'di', 'se', 'ap', 'ag', 'pa', 'ar', 'ph', 'ad', 'is', 'gr', 'ra'}
Produktset: {'ap', 'ar', 'ra', 'pa'}
Differenz gesetzt: {'is', 'ad', 'di', 'se'}
Enthält X se?: True
Beinhaltet Y se?: False

Für n_gram habe ich so wie es ist char_ngram von 05.py verwendet.

(Nach dem Bearbeiten ↓) Der Druckteil wurde neu geschrieben.

06.py


# coding:utf-8

def n_gram(seq, n):
    return ["".join(seq[i:i+n]) for i in range(len(seq)-n+1)]

def main():
    X, Y = set(n_gram("paraparaparadise", 2)), set(n_gram("paragraph", 2))
    print("X: ", X)
    print("Y: ", Y)
    print("Summensatz: ", X | Y)
    print("Produktset: ", X & Y)
    print("Differenz gesetzt: ", X - Y)
    print("Enthält X se?: ", "se" in X)
    print("Beinhaltet Y se?: ", "se" in Y)

if __name__ == '__main__':
    main()

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.

07.py


# coding:utf-8

def ans(x, y, z):
    return '{}von Zeit{}Ist{}'.format(x, y, z)

def main():
    x, y, z = 12, 'Temperatur', 22.4
    print(ans(x, y, z))

if __name__ == '__main__':
    main()

Das war nicht so schwierig. Es war ein Problem, wenn ich das Format kannte.

08. Kryptographie

Implementieren Sie die Funktionsverschlüsselung, die jedes Zeichen der angegebenen Zeichenfolge mit den folgenden Spezifikationen konvertiert. ・ Wenn es in niedrigerem Englisch ist, ersetzen Sie es durch das Zeichen (219 - Zeichencode) ・ Andere Zeichen werden unverändert ausgegeben Verwenden Sie diese Funktion, um englische Nachrichten zu verschlüsseln / entschlüsseln.

08.py


# coding:utf-8

def cipher(seq):
    return ''.join(chr(219-ord(i)) if i.islower() else i for i in seq)

def main():
  seq = 'Is the order a rabbit?'
  print("Verschlüsselung: " + str(cipher(seq)))
  print("Entschlüsselung: " + str(cipher(cipher(seq))))

if __name__ == '__main__':
    main()
Verschlüsselung: Ih gsv liwvi z izyyrg?
Entschlüsselung: Is the order a rabbit?

Mit islower () wird beurteilt, ob alle Zeichen, bei denen zwischen Groß- und Kleinschreibung unterschieden wird, niedriger sind, und mit ord das Zeichen → ascii und mit chr, ascii → Zeichen. Ich konnte mir keinen besonders guten englischen Satz vorstellen und beschloss, ihn angemessen zu behandeln. ~~ Ich mag die Leute in Cocoa ~~

  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.

09.py


import random

def Typoglycemia(seq):
    return " ".join((x[0] + "".join(random.sample(x[1:-1], len(x[1:-1]))) + x[-1]) if len(x) > 4 else x for i,x in enumerate(seq.split()))

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

if __name__ == '__main__':
    main()
I coludn't bevelie that I cuold aultalcy urnteasndd what I was riednag : the pmenneaohl peowr of the hamun mdni.

Andere Zeichen als der Anfang und das Ende der Zeichenkette wurden mit random.sample ohne Duplizierung zufällig neu angeordnet.

(Nach dem Bearbeiten ↓) Typoglykämie wurde neu geschrieben.

09.py


import random

def Typoglycemia(seq):
    shuffle = lambda x: "".join(random.sample(x, len(x)))
    typo = lambda x: x[0] + shuffle(x[1:-1]) + x[-1]
    return " ".join(typo(x) if len(x) > 4 else x for x in seq.split())

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

if __name__ == '__main__':
    main()

Lambda-Ausdruck ist bequem. Ich werde es verwenden, wenn es in Zukunft verwendbar zu sein scheint.


Ich werde die Fortsetzung schreiben, wenn ich Lust dazu habe.

Recommended Posts

Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (05 ~ 09)
Python-Anfänger versucht 100 Sprachverarbeitung klopfen 2015 (00 ~ 04)
100 Sprachverarbeitungsklopfen mit Python 2015
100 Sprachverarbeitung Knock Kapitel 1 (Python)
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
100 Sprachverarbeitungsklopfen (2020): 28
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 3
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
100 Sprachverarbeitungsklopfen (2020): 38
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 1
100 Sprachverarbeitung klopfen 00 ~ 02
100 Sprachverarbeitung Knock Kapitel 1 von Python
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 2
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 4
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
100 Sprachverarbeitung klopfen 2020 [00 ~ 69 Antwort]
100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Sprachverarbeitung klopfen 2020 [00 ~ 49 Antwort]
Python: Verarbeitung natürlicher Sprache
100 Sprachverarbeitung Knock-52: Stemming
100 Sprachverarbeitung Knock Kapitel 1
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
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 Sprachverarbeitung Knock-51: Wortausschnitt
100 Sprachverarbeitung Knock-58: Extraktion von Taple
100 Sprachverarbeitung Knock-50: Satzumbruch
Sprachverarbeitung 100 Knock-87: Wortähnlichkeit
100 Sprachverarbeitung Knock-56: Co-Referenz-Analyse
Lösen von 100 Sprachverarbeitungsklopfen 2020 (01. "Patatokukashi")
100 Amateur-Sprachverarbeitungsklopfen: Zusammenfassung
100 Sprachverarbeitung Knock 2020 Kapitel 2: UNIX-Befehle
100 Sprachverarbeitung Knock 2015 Kapitel 5 Abhängigkeitsanalyse (40-49)
100 Sprachverarbeitung Knock 2020 Kapitel 4: Morphologische Analyse
100 Sprachverarbeitung Knock 2020 Kapitel 9: RNN, CNN
100 Sprachverarbeitung Knock-76 (mit Scicit-Learn): Beschriftung
100 Sprachverarbeitung Knock-55: Extraktion eindeutiger Ausdrücke
100 Sprachverarbeitung Knock-82 (Kontextwort): Kontextextraktion
100 Sprachverarbeitungsklopfen: Kapitel 1 Vorbereitungsbewegung
100 Sprachverarbeitung Knock 2020 Kapitel 6: Maschinelles Lernen
100 Sprachverarbeitung Knock Kapitel 4: Morphologische Analyse
Sprachverarbeitung 100 knock-86: Wortvektoranzeige
100 Sprachverarbeitung Knock 2020 Kapitel 5: Abhängigkeitsanalyse
100 Sprachverarbeitung Knock-28: Entfernen des MediaWiki-Markups
100 Sprachverarbeitung Knock 2020 Kapitel 7: Word Vector
100 Sprachverarbeitung Knock 2020 Kapitel 8: Neuronales Netz
100 Sprachverarbeitung Knock-59: Analyse der S-Formel
Sprachverarbeitung 100 Knocks-31 (mit Pandas): Verben
100 Sprachverarbeitung klopfen 2020 "für Google Colaboratory"