Eine Aufzeichnung zur Lösung der Probleme in der zweiten Hälfte von Kapitel 1.
05. 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.
# -*- coding: utf-8 -*-
__author__ = 'todoroki'
def ngram(data, n):
res = []
for i in xrange(len(data) - 1):
res.append(data[i:i + n])
return res
string = 'I am an NLPer'
print u'Zeichenliste bi-gram:'
print ngram(string.split(), 2)
print u'String bi-gram:'
print ngram(string, 2)
#=>Zeichenliste bi-gram:
#=> [['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
#=>String bi-gram:
#=> ['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
Für das Bi-Gramm der Zeichenkette wird das Leerzeichen ebenfalls als ein Zeichen behandelt.
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.
# -*- coding: utf-8 -*-
__author__ = 'todoroki'
def ngram(data, n):
res = []
for i in xrange(len(data) - 1):
res.append(data[i:i + n])
return res
string1 = 'paraparaparadise'
string2 = 'paragraph'
X = ngram(string1, 2)
Y = ngram(string2, 2)
print u"Summensatz:"
print list(set(X).union(set(Y)))
print u"Produktset:"
print list(set(X).intersection(set(Y)))
print u"Differenz gesetzt:"
print list(set(X).difference(set(Y)))
print u'\'se\'Ist in X enthalten?'
print "se" in X
print u'\'se\'Ist in Y enthalten?'
print "se" in Y
#=>Summensatz:
#=> ['ad', 'ag', 'di', 'is', 'ap', 'pa', 'ra', 'ph', 'ar', 'se', 'gr']
#=>Produktset:
#=> ['ap', 'pa', 'ar', 'ra']
#=>Differenz gesetzt:
#=> ['is', 'ad', 'se', 'di']
#=> 'se'Ist in X enthalten?
#=> True
#=> 'se'Ist in Y enthalten?
#=> False
Der Summensatz, der Produktsatz und der Differenzsatz von Bi-Gramm werden unter Verwendung der Satzmethode erhalten.
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.
# -*- coding: utf-8 -*-
__author__ = 'todoroki'
def func(x, y, z):
return u"%s Zeit%s ist%s" % (x, y, z)
x = 12
y = u"Temperatur"
z = 22.4
print func(x, y, z)
#=>Die Temperatur um 12 Uhr ist 22.4
Verwenden Sie die Formatspezifikation der Druckanweisung für die Vorlage.
Implementieren Sie die Funktionsverschlüsselung, die jedes Zeichen der angegebenen Zeichenfolge mit 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.
# -*- coding: utf-8 -*-
__author__ = 'todoroki'
def cipher(data):
res = ""
for s in data:
if s.islower():
res += chr(219-ord(s))
else:
res += s
return res
string = "re1"
print u'Verschlüsselung:'
print cipher(string)
print u'Entschlüsselung:'
print cipher(cipher(string))
#=>Verschlüsselung:
#=> iv1
#=>Entschlüsselung:
#=> re1
Ob es sich um Kleinbuchstaben handelt oder nicht, wird durch die islower-Methode bestimmt. Es ist nicht erforderlich, eine spezielle Verbindung zu implementieren, da diese die Eigenschaft hat, dass sie wiederhergestellt wird, wenn die verschlüsselte erneut konvertiert wird.
09. 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.
# -*- coding: utf-8 -*-
__author__ = 'todoroki'
import random
def typoglycemia(data):
res = []
for d in data.split():
if len(d) > 4:
pre = d[0]
suf = d[-1]
word = list(d[1:-1])
random.shuffle(word)
res.append(pre + "".join(word) + suf)
else:
res.append(d)
return " ".join(res)
sentence = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
print typoglycemia(sentence)
#=> I cuodn'lt beevile that I cuold alluacty usdtanrend what I was reidang : the pmeenhnaol peowr of the huamn mind .
Das Innere der Zeichenfolge wird mithilfe der Zufallsmischmethode gemischt. Natürlich ist die Sortierung zufällig, daher ist die Ausgabe jedes Mal anders.
Recommended Posts