Récemment, j'ai lu un fichier de vidage de Wikipédia et y ai travaillé, je voudrais donc résumer ce que j'ai vérifié à ce moment-là et les points à noter lors de sa lecture.
Téléchargez le fichier de vidage Wikipedia à partir de ce lien ou exécutez le wget suivant.
> wget https://dumps.wikimedia.org/jawiki/20200601/jawiki-20200601-pages-articles-multistream.xml.bz2
Installez avec pip.
> pip install wikiextractor
Exécutez l'expansion. Cette fois, enregistrez la destination de sortie dans un fichier texte (wiki.txt). Vous pouvez l'enregistrer dans n'importe quel répertoire en spécifiant le chemin vers -o.
> python -m wikiextractor.WikiExtractor jawiki-latest-pages-articles.xml.bz2 -o - --processes 4 > wiki.txt
Comme vous pouvez le voir en vérifiant le contenu, la balise doc reste, alors supprimez-la au cas où.
> head wiki.txt
------------------------------------------------------
<doc id="17230" url="https://ja.wikipedia.org/wiki?curid=17230" title="Yoshimoto Imagawa">
Yoshimoto Imagawa
Yoshimoto Imagawa était le seigneur gardien et seigneur de la période des Royaumes combattants de Suruga et Toko. M. Imagawa, le 11e propriétaire. En raison de sa relation conjugale avec ses sœurs, Shingen Takeda et M. Shiyasu Hojo sont beau-frère. Le souverain de la vaste région de Tokaido, surnommé "le Yutori n ° 1 de Kaido".
Outre la gestion territoriale comme les réformes militaires rationnelles en instaurant un système parent-enfant, il a également démontré son talent en matière d'expédition et a réussi à transformer M. Imagawa en seigneur en guerre. Le territoire a été étendu de Suruga et Toko à des parties de Mikawa et Owari. Bien qu'il ait construit l'apogée de la famille Imagawa pendant la période des Royaumes combattants, il a été vaincu par Nobunaga Oda et vaincu par Yoshikatsu Mouri (Shinsuke) dans la bataille entre les cuves qui a eu lieu lorsqu'il a envahi Owari.
Né en 1519 en tant que troisième fils des parents de M. Imagawa. Ma mère est la fille de Nobuyoshi Nakamikado, qui est la chambre ordinaire de mon père. Cependant, il existe une théorie selon laquelle Yoshimoto était à l'origine un enfant de la pièce latérale et a adopté un enfant avec Jukei-nun après la turbulence de Hanakura (décrite plus tard). Lorsqu'il est né, il a été envoyé à la porte bouddhiste à l'âge de quatre ans parce qu'il avait son frère, M. Teru et Hikogoro, et a été confié à Kotokei Shogun au temple Seko Zentokuji à Fuji-gun, Suruga. Son disciple, Kyuei Shogiku (plus tard Ohara Yuksai), a repris le rôle à cause de la mort de Shogun en 1529. Après cela, il est entré dans le temple Kenjinji avec Yukisai et est devenu Sengaku Shoho sous la direction de Ryutaka Tsunean. De plus, lui et Yuksai ont étudié au temple Myoshinji pendant Okyu Sokyu et ont approfondi son apprentissage.
Après cela, il est retourné à Suruga de Kyoto à la demande de M. Shiki, mais immédiatement après cela, dans la 5ème année d'astronomie (1536), M. Shiki est décédé subitement. À ce stade, il n'avait aucun droit d'héritage parce qu'il avait un frère aîné, Hikogoro, mais même Hikogoro est mort le même jour que M. Teru, donc le droit d'héritage est venu. Être le même étudiant que M. Teru et Hikogoro a également été un coup de pouce, et Jyoyoshi, qui a été supplié d'être rapatrié par ses vassaux supérieurs, a reçu un parti pris du général conquérant général, Yoshiharu Ashikaga, et s'est appelé Yoshimoto. C'était. Cependant, la succession du propriétaire a été confuse par l'opposition de M. Fukushima, un vassal de premier plan, et à la fin, M. Fukushima s'est rebellé contre son propre demi-frère sanguinaire, Genhiro Keisou (Hanakura no Ran). ).
Supprimez la balise en vous référant à l'article ici.
> cat wiki.txt | sed '/^<[^>]*>$/d' > wiki_removed_doc_tag.txt
Le japonais n'est pas séparé par des blancs et il est nécessaire de bien reconnaître les mots. Il semble que Sentencepiece etc. sont compatibles avec les langages qui n'ont pas de blanc dans une certaine mesure, mais il semble y avoir un exemple qui fait du bien d'écrire à l'avance avec MeCab.
Installez MeCab
#Autre que les fenêtres
> pip install mecab-python3
# windows
> pip install mecab-python-windows
Séparation avec MeCab
import MeCab
text = "La séparation n'est pas une tâche facile, mais c'est une tâche difficile."
tokenizer = MeCab.Tagger("-Owakati") #Mode d'écriture séparé
tokens = tokenizer.parse(text).split()
print(tokens)
# => ['Partage', 'Est', 'Facile', 'alors', 'Est', 'Oui', 'Non', 'Hmm', 'Mais', ',', 'Difficile', 'Nana', 'tâche', 'alorsす', '.']
Vous pouvez mettre de force wiki_removed_doc_tag.txt dans ce texte, mais cette fois je le lirai ligne par ligne en considérant la charge sur la mémoire. En passant, sous Windows, si vous ne spécifiez pas l'encodage dans l'option open (), une erreur se produira, alors spécifiez encoding = "utf-8_sig".
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 = "" #Ajoutez les résultats ligne par ligne ici
#Lire et traiter
with open(file_path, "r") as f_in:
for line in f_in:
tokens = tokenizer.parse(line).split() #Partage
text = " ".join(tokens) #Séparez avec des blancs
output_text += text
#enregistrer
with open(output_path, "w") as f_out:
f_out.write(output_text)
En faisant cela, il est possible de traiter sans générer de MOO et sans charger toute la mémoire.
Si vous arrivez à ce point, vous obtiendrez beaucoup de phrases séparées par des blancs, vous pourrez donc l'utiliser pour apprendre des morceaux de phrases.