Kürzlich habe ich eine Dump-Datei von Wikipedia gelesen und daran gearbeitet, daher möchte ich zusammenfassen, was ich zu diesem Zeitpunkt überprüft habe, und Punkte beachten, die beim Lesen zu beachten sind.
Laden Sie die Wikipedia-Dump-Datei von [diesem Link] herunter (https://dumps.wikimedia.org/jawiki/20200601/jawiki-20200601-pages-articles-multistream.xml.bz2) oder führen Sie das folgende Wget aus.
> wget https://dumps.wikimedia.org/jawiki/20200601/jawiki-20200601-pages-articles-multistream.xml.bz2
Mit pip installieren.
> pip install wikiextractor
Erweiterung ausführen. Speichern Sie dieses Mal das Ausgabeziel in einer Textdatei (wiki.txt). Sie können es in einem beliebigen Verzeichnis speichern, indem Sie den Pfad zu -o angeben.
> python -m wikiextractor.WikiExtractor jawiki-latest-pages-articles.xml.bz2 -o - --processes 4 > wiki.txt
Wie Sie anhand des Inhalts sehen können, bleibt das Dokument-Tag erhalten. Entfernen Sie es daher für alle Fälle.
> head wiki.txt
------------------------------------------------------
<doc id="17230" url="https://ja.wikipedia.org/wiki?curid=17230" title="Yoshimoto Imagawa">
Yoshimoto Imagawa
Yoshimoto Imagawa war der Wächter und Herr der Warring States von Suruga und Toko. Herr Imagawa, der 11. Besitzer. Aufgrund seiner ehelichen Beziehung zu seinen Schwestern sind Shingen Takeda und Shiyasu Hojo Schwager. Der Herrscher des weiten Gebiets von Tokaido mit dem Spitznamen "Kaidos Nr. 1 Yutori".
Neben territorialem Management wie rationalen Militärreformen durch die Einrichtung eines Eltern-Kind-Systems demonstrierte er auch sein Expeditionstalent und verwandelte Mr. Imagawa in einen kriegführenden Lord. Das Gebiet wurde von Suruga und Toko auf Teile von Mikawa und Owari ausgedehnt. Obwohl er während der Zeit der Warring States die Blütezeit der Imagawa-Familie errichtete, wurde er von Nobunaga Oda und Yoshikatsu Mouri (Shinsuke) im Kampf zwischen den Wannen besiegt, als er in Owari einfiel.
Geboren 1519 als dritter Sohn von Mr. Imagawas Eltern. Meine Mutter ist die Tochter von Nobuyoshi Nakamikado, dem regulären Zimmer meines Vaters. Es gibt jedoch eine Theorie, dass Yoshimoto ursprünglich ein Kind des Nebenraums war und nach den Hanakura-Turbulenzen (später beschrieben) ein Kind mit Jukei-Nonne adoptierte. Als er geboren wurde, wurde er im Alter von vier Jahren zum buddhistischen Tor geschickt, weil er seinen Bruder, Herrn Teru und Hikogoro, hatte und Kotokei Shogun im Seko Zentokuji Tempel in Fuji-gun, Suruga, anvertraut wurde. Sein Schüler Kyuei Shogiku (später Ohara Yuksai) übernahm die Rolle wegen des Todes von Shogun im Jahr 1529. Danach betrat er mit Yukisai den Kenjinji-Tempel und wurde unter der Leitung von Ryutaka Tsunean Sengaku Shoho. Außerdem studierten er und Yuksai während Okyu Sokyu im Myoshinji-Tempel und vertieften sein Lernen.
Danach kehrte er auf Geheiß von Shiki von Kyoto nach Suruga zurück, aber unmittelbar danach, im 5. Jahr der Astronomie (1536), starb er plötzlich. Zu diesem Zeitpunkt hatte er kein Erbrecht, weil er einen älteren Bruder, Hikogoro, hatte, aber selbst Hikogoro starb am selben Tag wie Herr Teru, so dass das Erbrecht zustande kam. Der gleiche Schüler wie Herr Teru und Hikogoro zu sein, war auch ein Schub, und Jyoyoshi, der von seinen hochrangigen Vasallen um Rückführung gebeten wurde, erhielt eine Voreingenommenheit vom Mainstream-Eroberer-General Yoshiharu Ashikaga und nannte sich Yoshimoto. Es war. Die Nachfolge des Besitzers wurde jedoch durch die Opposition von Herrn Fukushima, einem führenden Vasallen, verwirrt, und am Ende lehnte sich Herr Fukushima gegen seinen eigenen bluttragenden Halbbruder Genhiro Keisou (Hanakura no Ran) auf. ).
Löschen Sie das Tag, das auf den Artikel [hier] verweist (https://applingo.tokyo/article/1252).
> cat wiki.txt | sed '/^<[^>]*>$/d' > wiki_removed_doc_tag.txt
Japanisch wird nicht durch Leerzeichen getrennt, und es ist notwendig, Wörter gut zu erkennen. Es scheint, dass Satzstücke usw. mit Sprachen kompatibel sind, die zum Teil keine Leerzeichen haben, aber es scheint ein Beispiel zu geben, dass es sich gut anfühlt, im Voraus mit MeCab zu schreiben.
Installieren Sie MeCab
#Andere als Fenster
> pip install mecab-python3
# windows
> pip install mecab-python-windows
Trennung mit MeCab
import MeCab
text = "Trennung ist keine leichte Aufgabe, aber eine herausfordernde Aufgabe."
tokenizer = MeCab.Tagger("-Owakati") #Separater Schreibmodus
tokens = tokenizer.parse(text).split()
print(tokens)
# => ['Teilen', 'Ist', 'Einfach', 'damit', 'Ist', 'Ja', 'Nein', 'Hmm', 'Aber', ',', 'Herausfordernd', 'Nana', 'Aufgabe', 'damitす', '.']
Sie können wiki_removed_doc_tag.txt zwangsweise in diesen Text einfügen, aber dieses Mal werde ich es Zeile für Zeile lesen, unter Berücksichtigung der Belastung des Speichers. Übrigens, wenn Sie in Windows die Codierung nicht in der Option open () angeben, tritt ein Fehler auf. Geben Sie also encoding = "utf-8_sig" an.
mecab_tokenization.py
import MeCab
file_path = "wiki_removed_doc_tag.txt"
output_path = "wiki_mecab_space_separated.txt"
tokenizer = MeCab.Tagger("-Owakati")
output_text = "" #Fügen Sie hier zeilenweise Ergebnisse hinzu
#Lesen und verarbeiten
with open(file_path, "r") as f_in:
for line in f_in:
tokens = tokenizer.parse(line).split() #Teilen
text = " ".join(tokens) #Mit Leerzeichen trennen
output_text += text
#sparen
with open(output_path, "w") as f_out:
f_out.write(output_text)
Auf diese Weise ist es möglich, ohne Generierung von OOM und ohne Laden des gesamten Speichers zu verarbeiten.
Wenn Sie zu diesem Punkt kommen, erhalten Sie viele durch Leerzeichen getrennte Sätze, sodass Sie sie zum Lernen von Satzteilen verwenden können.
Recommended Posts