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.
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()
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()
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.
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 ~~
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