wikipediaからサッカーに関する日本語コーパスを作成する
はじめに
個人ワークととしてWord2vecでいろいろ試してみたくて、
wikipediaからサッカーに関する記事を取得しコーパスを作成してみた。
今回のゴールとしては、レアルにとってメッシ(バルサ)は誰?
をやってみたい。
もちろんあの方を期待している。
大まかな流れは、hironsanの記事を参考にさせていただきました。
- 日本語版text8コーパスを作って分散表現を学習する - Ahogrammer
- Hironsan/ja.text8: Japanese text8 corpus for word embedding.
コードは以下に格納した(かなり汚いが。。) GitHub - mickey390/blazing-text-sample
データの用意
Wikipedia CirrusSearchでwikipediaのデータに対して
事前に前処理を行ってくれているようなので、
今回はこちらのデータ(jawiki-20181022)を使わせて頂いた。
こちらはカテゴリのメタデータなども構造化してあり、使いやすかった◎
7GBほどあるのでDLして、少々待ちましょう。
記事の選択
全記事を対象に
カテゴリーにサッカー
が含まれるものをコーパスの対象にした。
サッカー選手、チーム、国、スタジアムなど内容は多岐に渡っています。
https://ja.wikipedia.org/wiki/Category:サッカー
>>> f = open("jawiki-20181022.soccer.courpus") >>> words = f.read().split() >>> len(words) 17250756 # 総単語数 >>> len(set(words)) 398679 # 異なり語数
word2vecの学習
作成したコーパスをもちいて、学習をします。
早速、レアルにとってメッシ(バルサ)は誰?
をやってみます!
pprint.pprint(model.most_similar(positive=["メッシ","レアル"], negative=["バルサ"])) [('C・ロナウド', 0.7244856357574463), ('ビジャ', 0.6840651631355286), ('ベンゼマ', 0.6831930875778198), ('ネイマール', 0.6441307067871094), ('イニエスタ', 0.6409704685211182), ('ロナウド', 0.6387686729431152), ('ラウル', 0.6265791654586792), ('ノイアー', 0.6176037788391113), ('イグアイン', 0.6164777874946594), ('ジダン', 0.6040314435958862)]
おお、あの方(C・ロナウド)が1番でした。
その他、ベンゼマ・ラウル・ジダンも正解に入るかな。
ビジャ・ネイマール・イニエスタはバルサでしょ。
ロナウドは、レアルのほうが長かったからしょうがないのか・・・
ノイアー??
疑問?
◯word2vec.LineSentence
とword2vec.Text8Corpus
の使い分け
https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.LineSentence
(翻訳) 文を含むファイルを繰り返します.1行= 1文です。単語はすでに前処理され、空白で区切られていなければなりません。
https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Text8Corpus
(翻訳) "text8"コーパスの文章を繰り返します。
→ 何を繰り返すのかイマイチわからない。。
今後は、前者の方使ってみるか・・。
◯コーパス作成の際に品詞をでフィルタかけるべき?
gensimでWikipedia日本語版からコーパスを作ってトピックモデリング | takuti.me
こちらのエントリだと、名詞のみ抜き出しているようだ。
コーパス作成の基本?を知りたいな。
最後に
参考にさせて頂きましたエントリ記載の方、ありがとうございました。 以上です。