Es ist ein Herausforderungsrekord von 100 Sprachverarbeitungsklopfen 2015. Die Umgebung ist Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64-Bit). Klicken Sie hier, um eine Liste der vergangenen Schläge anzuzeigen (http://qiita.com/segavvy/items/fb50ba8097d59475f760).
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.
Der fertige Code:
main.py
# coding: utf-8
def n_gram(target, n):
'''N aus der angegebenen Liste-Erstellen Sie ein Gramm
Streit:
target --Zielliste
n -- n-Gramm n Wert (1 ist uni-Gramm, 2 für bi-gram...)
Rückgabewert:
Liste der Gramm
'''
result = []
for i in range(0, len(target) - n + 1):
result.append(target[i:i + n])
return result
target = 'I am an NLPer'
words_target = target.split(' ')
#Wort bi-gram
result = n_gram(words_target, 2)
print(result)
#Zeichen bi-gram
result = n_gram(target, 2)
print(result)
Ausführungsergebnis:
Terminal
[['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
Ich habe auch Uni-Gramm und Tri-Gramm überprüft, um die Funktion zu testen.
main.Fortsetzung von py
#Wort uni-gram
result = n_gram(words_target, 1)
print(result)
#Charakter uni-gram
result = n_gram(target, 1)
print(result)
#Wort tri-gram
result = n_gram(words_target, 3)
print(result)
#Zeichen tri-gram
result = n_gram(target, 3)
print(result)
Ausführungsergebnis:
Terminal
[['I'], ['am'], ['an'], ['NLPer']]
['I', ' ', 'a', 'm', ' ', 'a', 'n', ' ', 'N', 'L', 'P', 'e', 'r']
[['I', 'am', 'an'], ['am', 'an', 'NLPer']]
['I a', ' am', 'am ', 'm a', ' an', 'an ', 'n N', ' NL', 'NLP', 'LPe', 'Per']
Klingt okay.
Das ist alles für den sechsten Schlag. Wenn Sie Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten.
Recommended Posts