Ich möchte Python machen, bin mir aber nicht sicher, wo ich anfangen soll Wir werden mit [100 Sprachverarbeitung Klopfen 2015] fortfahren (http://www.cl.ecei.tohoku.ac.jp/nlp100/) Die Umgebung ist Windows 10, Python 3.6.0
Holen Sie sich eine Zeichenfolge, in der die Zeichen der Zeichenfolge "betont" umgekehrt angeordnet sind (vom Ende bis zum Anfang).
00.py
string = "stressed"
print(string[::-1])
#In Scheiben implementiert
# string[Startposition:Endposition:Anzahl der Schritte]
#Start- und Endpositionen werden ab dem Ende durch Angabe einer negativen Zahl gezählt
#Sie können auch Folgendes tun
print(string[-1::-1])
Implementiert mit Slice
Nehmen Sie das 1., 3., 5. und 7. Zeichen der Zeichenkette "Patatokukashi" heraus und erhalten Sie die verkettete Zeichenkette.
01.py
string = "Patatoku Kashii"
print(string[::2])
#Entspricht jeweils 00, 2 durch Angabe des Slice-Schritts
Mit Schritten wie 00
Erhalten Sie die Zeichenkette "Patatokukashi", indem Sie die Zeichen "Pattocar" + "Tax" von Anfang an abwechselnd verbinden.
02.py
string1 = "Pat Auto"
string2 = "Taxi"
string3 = ""
i = 0
while i < len(string1):
string3 += string1[i] + string2[i]
i+=1
print(string3)
Ein wenig subtil ... Es kann nur die gleiche Zeichenlänge verbunden werden
Teilen Sie den Satz „Jetzt brauche ich nach den schweren Vorlesungen über Quantenmechanik einen Alkoholiker auf.“ In Wörter auf und erstellen Sie eine Liste mit der Anzahl der (alphabetischen) Zeichen in jedem Wort in der Reihenfolge ihres Auftretens.
03.py
import re #Verwendung von regulären Ausdrücken
from collections import defaultdict #Zum Zählen von Zeichen
string = "Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics."
# ,Wann.Nach Wort nach dem Löschen auflisten
words_list = re.sub('[,.]','',string).split()
#Initialisierung des Zählers
counter = defaultdict(int)
#Zähle ab dem ersten Wort / Buchstaben
for word in words_list:
for c in word:
counter[c] += 1
#Weil es ein Wörterbuchtyp ist(Brief,Zählerstand)In Tupellistentyp konvertieren
count_list = dict(counter).items()
print(count_list)
Insgesamt gibt es zu viel Typkonvertierungsverarbeitung ... Ich möchte sie etwas weiter reduzieren.
Teilen 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, 19 auf Das erste Wort ist das erste Zeichen, und die anderen Wörter sind die ersten beiden Zeichen. Erstelle es.
04.py
import re #Verwendung von regulären Ausdrücken
elements = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."
mono_words = [1, 5, 6, 7, 8, 9, 15, 16, 19]
shortened_elements = {}
# .Nach Wort nach dem Löschen auflisten
elements_list = elements.replace('.','').split()
#Während Sie die Elementwortliste einzeln erkunden
#Überprüfen Sie, ob es sich um einen definierten einstelligen Ausdruck handelt
#Geben Sie den abgekürzten Elementnamen und die Nummer von Anfang an in das Elementwörterbuch ein
#Sie können einen Iterator erhalten, indem Sie enumerate verwenden
for i,e in enumerate(elements_list):
count = i + 1
if(count in mono_words):
shortened_elements[e[:1]] = count
else:
shortened_elements[e[:2]] = count
print(shortened_elements)
Das Wort Bi-Gramm von "Ich bin ein NLPer" {‘I am’,’am an’,’an NLPer’} Mit dem Charakter Bi-Gramm {‘I a’,’a m ‘,’m a’,’a n’,’n N’,’N L’,’L P’,’P e’,’e r’}
Sollte das Ergebnis sein
05.py
import re #Verwendung von regulären Ausdrücken
#Zeichenkette und Liste als Sequenz vorbereitet
sentence_string = "I am an NLPer"
sentence_list = sentence_string.split()
#N mit Nummer n und Sequenz als Argumente-Grammfunktion
def n_gram(n,sequence):
#Liste für Rückgabewerte
ngram = []
#Gemeinsame Verarbeitung von Zeichenfolgen und Listen
#Konvertiert in eine zeichenweise Liste, wenn eine Zeichenfolge als Argument angegeben wird
# ,Wann.Wannスペースを削除
if isinstance(sequence, str):
sequence = list(re.sub('[,. ]','',sequence))
# n-Gramm-Erstellungsprozess
#Position von i in für Anweisung+Schneiden Sie das Argument n
#Das Ende von for reicht von der Listenlänge minus n bis zu dem Punkt, an dem 1 hinzugefügt wird
for i in range(len(sequence)-n+1):
ngram.append(sequence[i:i+n])
return ngram
#Wort bi-gram
print(n_gram(2,sentence_list))
#Zeichen bi-gram
print(n_gram(2,sentence_string))
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.
06.py
import re #Verwendung von regulären Ausdrücken
#Zeichenkette und Liste als Sequenz vorbereitet
X = "paraparaparadise"
Y = "paragraph"
# n-Wiederverwendung der Grammfunktion 05
def n_gram(n,sequence):
ngram = []
if isinstance(sequence, str):
sequence = list(re.sub('[,. ]','',sequence))
for i in range(len(sequence)-n+1):
#Da das Teil auf 05 geändert wurde, konnte die Liste in der Liste nicht in den später beschriebenen Satztyp konvertiert werden
#Die Konvertierungsverarbeitung wird in den Taple-Typ gestellt
ngram.append(tuple(sequence[i:i+n]))
return ngram
# X,Y bi-Gramerstellung
#Definiert als Set-Typ für die Set-Berechnung
X = set(n_gram(2,X))
Y = set(n_gram(2,Y))
#Summensatz
print(X | Y)
#Produktset
print(X & Y)
#Differenz gesetzt
print(X - Y)
print(Y - X)
# 'se'Überprüfen Sie, ob
if ('s','e') in X & Y:
print("'se'Ist in X und Y enthalten")
else:
print("'se'Ist nicht in X oder Y enthalten")
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
def tostr(x,y,z):
return ("%s Zeit%s ist%s" % (x,y,z))
print( tostr(12,"Temperatur",22.4))
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.
08.py
import re #Verwendung von regulären Ausdrücken
def cipher(str):
#Einmal auflisten und Zeichen für Zeichen verarbeiten
str = list(str)
re_str = []
for s in str:
if re.search('[a-z]',s):
#Das Eiko-Zeichen enthält 97 Zeichen~122 Im folgenden Prozess wird a->z,b->y,c->x...z->Konvertiert wie ein
re_str.append(chr(219-ord(s)))
else:
re_str.append(s)
return "".join(re_str)
test_str = "I am a esaka!!"
print(cipher(test_str))
#Ergebnis:I zn z vhzpz!!
print(cipher(cipher(test_str)))
#Ergebnis:I am a esaka!!
09.py
import random #Verwendung der Zufallszahlenverarbeitung
def rand_str(str):
#Liste durch Leerzeichen getrennt
str = str.split(' ')
re_str = []
for i,s in enumerate(str):
if len(s) > 4 and i != 0 and i != len(str)-1:
re_str.append("".join(random.sample(s,len(s))))
else:
re_str.append(s)
#Der Rückgabewert soll das Wort durch ein Leerzeichen ersetzen
return " ".join(re_str)
test_str = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
print(rand_str(test_str))
#Ergebnis: I tdcuon'l evibele that I ludoc ltyucala andnetrsdu what I was drienag : the lnpaeneohm erpow of the uahmn mind .
Ich habe falsch verstanden, dass ich nicht nur das erste und das letzte Wort einer bestimmten Zeichenfolge sortieren würde. Es ist der Anfang und das Ende von * jedem Wort *. Ist es dies, das vor einiger Zeit populär war?
Deshalb habe ich es unten behoben
09.py
import random #Verwendung der Zufallszahlenverarbeitung
def rand_str(str):
#Liste durch Leerzeichen getrennt
str = str.split(' ')
re_str = []
for i,s in enumerate(str):
if len(s) > 4:
re_str.append(s[0]+"".join(random.sample(s[1:-1],len(s)-2))+s[-1])
else:
re_str.append(s)
#Der Rückgabewert soll das Wort durch ein Leerzeichen ersetzen
return " ".join(re_str)
test_str = "I couldn't believe that I could actually understand what I was reading : the phenomenal power of the human mind ."
test_str2 = "Solange Sie den Text von Saisho und Saigo haben, wird der Junban durcheinander sein, aber wie wäre es, wenn Sie den Junban des Textes absichtlich ersetzen, basierend auf der Idee, dass Sie ihn richtig lesen können? Du wirst es richtig lesen, oder?"
print(rand_str(test_str))
#Ergebnis: I cnlu'dot belevie that I colud allctauy udeatsnnrd what I was radineg : the pehnomanel pwoer of the huamn mind .
print(rand_str(test_str2))
#Ergebnis:Solange es ein Schwert und ein Schwert gibt, ist das Schwert durcheinander, aber es wird absichtlich lächerlich gemacht, basierend auf dem Lehrplan, den Sie richtig lesen können. Ist es nicht richtig?
Vorerst damit
Recommended Posts