wikipediaからサッカーに関する日本語コーパスを作成する

はじめに

個人ワークととしてWord2vecでいろいろ試してみたくて、
wikipediaからサッカーに関する記事を取得しコーパスを作成してみた。

今回のゴールとしては、レアルにとってメッシ(バルサ)は誰?をやってみたい。
もちろんあの方を期待している。

大まかな流れは、hironsanの記事を参考にさせていただきました。

コードは以下に格納した(かなり汚いが。。) 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.LineSentenceword2vec.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

こちらのエントリだと、名詞のみ抜き出しているようだ。
コーパス作成の基本?を知りたいな。

最後に

参考にさせて頂きましたエントリ記載の方、ありがとうございました。 以上です。