Prenez n'importe quel fichier texte comme entrée et générez N-gramme pour cela. Cette fois, nous allons générer ** mots ** N-gramme.
Générez N-gramme pour les articles suivants. On suppose que l'article se trouve dans ./data/news.txt à partir du répertoire où se trouve le programme.
On peut dire que c'est un résultat qui bouleverse le sens commun du développement spatial et qui attire l'attention en tant que technologie historique qui réduit les coûts de lancement. Lors d'une réunion tenue au Kennedy Space Center en Floride après le lancement réussi de la fusée, le PDG de Space X = directeur général Earon Musk a déclaré: «Il est possible de rendre la fusée. J'ai pu le prouver », a-t-il déclaré, exprimant sa joie du succès de l'expérience. Après cela, nous allons mener une expérience au sol pour voir si la fusée retournée cette fois est anormale, et s'il n'y a pas de problème, le mois prochain ou le mois prochain Il a déclaré qu'il lancerait à nouveau la même fusée, en disant: «La fusée peut être réutilisée des milliers de fois dans le futur, mais pour le moment, je pense qu'elle peut être réutilisée 10 à 20 fois, y compris d'autres fusées. , À l'avenir, la réutilisation de toutes les roquettes sera la norme », a-t-il déclaré.
text2bow est une fonction qui convertit une phrase en un ensemble de mots, et mod = "file" lors de la saisie d'un fichier. Lors de la saisie d'une chaîne de caractères, spécifiez mod = "str". (Si vous l'utilisez comme module, cela peut être plus)
ngram.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import commands as cmd
#texte->mot(morphème)ensemble
def text2bow(obj,mod):
# input:Mod pour les fichiers="file", input:Mod pour cordes="str"
if mod == "file":
morp = cmd.getstatusoutput("cat " + obj + " | mecab -Owakati")
elif mod == "str":
morp = cmd.getstatusoutput("echo " + obj.encode('utf-8') + " | mecab -Owakati")
else:
print "error!!"
sys.exit(0)
words = morp[1].decode('utf-8')
words = words.replace('\n','')
bow = words.split(' ')
return bow
# N-Génération Gram
def gen_Ngram(words,N):
ngram = []
for i in range(len(words)):
cw = ""
if i >= N-1:
for j in reversed(range(N)):
cw += words[i-j]
else:
continue
ngram.append(cw)
return ngram
#production
def output_Ngram(ngram):
for i in range(len(ngram)):
print ngram[i].encode('utf-8')
def main():
argvs = sys.argv
# input:Pour les fichiers
bow = text2bow(argvs[2],mod="file")
# input:Pour les cordes
#bow = text2bow(obj=u"C'est n-C'est un programme qui génère du gramme.",mod="str")
ngram = gen_Ngram(bow,int(argvs[1]))
output_Ngram(ngram)
if __name__ == "__main__":
main()
Pour le moment, on suppose qu'un fichier texte est passé cette fois en entrée. (Lors de la saisie d'une chaîne de caractères dans le programme, importez ngram.py et utilisez diverses méthodes. Faites attention uniquement à la valeur mod de text2bow) La méthode d'exécution est la suivante.
ngram.py
$ python ngram.py N textfile
--N: nombre arbitraire (par exemple 2 grammes-> N = 2) --textfile: chemin du fichier texte d'entrée
Sortie de 2 grammes de l'article de nouvelles ci-dessus.
ngram.py
$ python ngram.py 2 data/news.txt
Développement spatial De développement Bon sens Bon sens Renverser Renversé Tato Tomo Peut aussi être dit ...
Si vous pouvez obtenir la sortie ci-dessus, c'est OK.
Cette fois, j'ai créé un programme capable de gérer le mot N-gramme en Python. Pour le gérer comme un module, importez le programme et utilisez chaque méthode. J'avais l'intention de le faire avec la polyvalence à l'esprit, donc je pense qu'il peut être importé et utilisé facilement.
Recommended Posts