Nehmen Sie eine beliebige Textdatei als Eingabe und generieren Sie N-Gramm dafür. Dieses Mal werden wir ** Wörter ** N-Gramm erzeugen.
Generieren Sie N-Gramm für die folgenden Artikel. Es wird davon ausgegangen, dass sich der Artikel in ./data/news.txt aus dem Verzeichnis befindet, in dem sich das Programm befindet.
Es ist ein Ergebnis, das die allgemeine Weisheit der Weltraumentwicklung auf den Kopf gestellt hat und als epochale Technologie, die die Startkosten senkt, Aufmerksamkeit erregt. Bei einem Treffen im Kennedy Space Center in Florida nach dem erfolgreichen Start der Rakete sagte Earon Musk, CEO = Chief Executive Officer von Space X: "Es ist möglich, die Rakete zurückzugeben. Das konnte ich beweisen ", sagte er und drückte seine Freude über den Erfolg des Experiments aus. Danach werden wir ein Experiment am Boden durchführen, um festzustellen, ob die diesmal zurückgegebene Rakete abnormal ist und ob es im nächsten Monat oder im nächsten Monat kein Problem gibt Er erklärte, dass er dieselbe Rakete erneut starten würde und sagte: "Die Rakete kann in Zukunft tausende Male wiederverwendet werden, aber derzeit ist es möglich, dies 10 bis 20 Mal zu tun. Einschließlich anderer Raketen." , In Zukunft wird die Wiederverwendung aller Raketen die Norm sein ", sagte er.
text2bow ist eine Funktion, die einen Satz in eine Wortmenge konvertiert und bei der Eingabe einer Datei mod = "file". Geben Sie bei der Eingabe einer Zeichenfolge mod = "str" an. (Wenn Sie es als Modul verwenden, kann dies mehr sein)
ngram.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import commands as cmd
#Text->Wort(Morphem)einstellen
def text2bow(obj,mod):
# input:Mod für Dateien="file", input:Mod für Strings="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-Grammgenerierung
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
#Ausgabe
def output_Ngram(ngram):
for i in range(len(ngram)):
print ngram[i].encode('utf-8')
def main():
argvs = sys.argv
# input:Für Dateien
bow = text2bow(argvs[2],mod="file")
# input:Für Saiten
#bow = text2bow(obj=u"Dies ist n-Es ist ein Programm, das Gramm erzeugt.",mod="str")
ngram = gen_Ngram(bow,int(argvs[1]))
output_Ngram(ngram)
if __name__ == "__main__":
main()
Derzeit wird davon ausgegangen, dass diesmal eine Textdatei als Eingabe übergeben wird. (Wenn Sie eine Zeichenfolge in das Programm eingeben, importieren Sie ngram.py und verwenden Sie verschiedene Methoden. Achten Sie nur auf den Mod-Wert von text2bow.) Die Ausführungsmethode ist wie folgt.
ngram.py
$ python ngram.py N textfile
Geben Sie 2 Gramm des obigen Nachrichtenartikels aus.
ngram.py
$ python ngram.py 2 data/news.txt
Raumfahrtentwicklung Der Entwicklung Gesunder Menschenverstand Gesunder Menschenverstand Umkippen Umgestürzt Tato Tomo Kann auch gesagt werden ...
Wenn Sie die obige Ausgabe erhalten können, ist es OK.
Dieses Mal habe ich ein Programm erstellt, das das Wort N-Gramm in Python verarbeiten kann. Um es als Modul zu behandeln, importieren Sie das Programm und verwenden Sie jede Methode. Ich wollte es mit Blick auf Vielseitigkeit machen, daher denke ich, dass es einfach importiert und verwendet werden kann.
Recommended Posts