C'est un record de défi de 100 langues de traitement knock 2015. L'environnement est Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64 bits). Cliquez ici pour une liste des coups passés (http://qiita.com/segavvy/items/fb50ba8097d59475f760).
05.n-gram
Créez une fonction qui crée un n-gramme à partir d'une séquence donnée (chaîne, liste, etc.). Utilisez cette fonction pour obtenir le mot bi-gramme et la lettre bi-gramme à partir de la phrase "Je suis un PNL".
Le code fini:
main.py
# coding: utf-8
def n_gram(target, n):
'''N de la liste spécifiée-Créer un gramme
argument:
target --Liste des cibles
n -- n-valeur gramme n (1 est uni-gramme, 2 pour bi-gram...)
Valeur de retour:
Liste de gramme
'''
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(' ')
#Mot bi-gram
result = n_gram(words_target, 2)
print(result)
#Personnage bi-gram
result = n_gram(target, 2)
print(result)
Résultat de l'exécution:
Terminal
[['I', 'am'], ['am', 'an'], ['an', 'NLPer']]
['I ', ' a', 'am', 'm ', ' a', 'an', 'n ', ' N', 'NL', 'LP', 'Pe', 'er']
J'ai également vérifié uni-gramme et tri-gramme pour tester la fonction.
main.Poursuite de py
#Word uni-gram
result = n_gram(words_target, 1)
print(result)
#Caractère uni-gram
result = n_gram(target, 1)
print(result)
#Mot tri-gram
result = n_gram(words_target, 3)
print(result)
#Caractère tri-gram
result = n_gram(target, 3)
print(result)
Résultat de l'exécution:
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']
Ça me va.
C'est tout pour le sixième coup. Si vous avez des erreurs, j'apprécierais que vous les signaliez.
Recommended Posts