wikipedia全文データからWord2Vecで類義語を抽出してみる

自然言語処理の入門、wikipedia全文データを使ってみる

自然言語処理について何から勉強を始めようかと色々模索していたところ、wikipediaの日本語全文データをダウンロードできることを知り、早速それが使えそうなところから初めてみることにしました。

なんでもWord2Vecとかいうライブラリーを使用すると、単語の意味をベクトルで表現できるらしく、関連する単語や類似度を調べることができるようになるとのこと。

ちょうどデータ量として申し分ないwikipedia日本語全文データも使えることも分かったので、早速それらを組み合わせて勉強してみることにしました。

当記事はその内容の紹介になります。

 

純粋 – 正義 + 悪 = 邪悪

 

みたいなことができるようになります。

興味がある方は参考にしてみてください。

 

開発環境

macOS Sierra

Anaconda3-4.2.0-MacOSX-x86_64

python 3.5.2

 

参考にさせて頂いた書籍の紹介

書籍名:Pythonによるスクレイピング&機械学習

書籍の詳細についてはこちら

 

wikipedia日本語全文データモデルの作成方法

以下の手順通りでモデル作成ができます。

wikipedia日本語全文データのダウンロード

以下のサイトからwikipedia日本語全文データをダウンロードできます。

Index of /jawiki/latest/

 

大量にダウンロードリンクがありますが、対象となるダウンロードファイルは”jawiki-latest-pages-articles.xml.bz2″です。

検索で探した方が手っ取り早いと思います。

ダウンロード時点では2.3Gバイトもありました。

 

ダウンロードが完了したら、解凍してWord2Vecに使える形に変更していきます。

 

xmlからテキスト形式への変換

解凍したらxml形式のファイルになっていますので、これをテキスト形式に変換する必要があります。

変換には”wp2txt”を使用します。

macなら簡単に以下のコマンドでインストールできます。

 

インストールが完了したら、以下のコマンドでテキストに変換しましょう。

これには結構な時間(筆者の端末で数時間)がかかりますし、大量のファイルに分割されて保存されます。

筆者が作成した時点では全部で560ファイルできました。

気長に待ちましょう。

 

ちなみにそれぞれのファイルの中身はこんな感じです。

 

テキスト形式に変換し終わったら1つのファイルにまとめましょう。

以下のコマンドを入力すると、強大なテキストファイル1つになります。

 

形態素解析で分かち書きの作成

巨大なテキストファイルが出来上がったら形態素解析により、テキストを分かち書きにします。

word2vecで学習モデルを作成するためには、テキストを分かち書きにする必要があります。

 

形態素解析にはmecabを使用します。

mac環境でのmecabのインストールは、以下のサイトが参考になります。

形態素解析エンジンMeCabをPython3でも使えるようにする(Macの場合)

 

ubuntuでのmecabのインストールは以下のコマンドでインストールできます。

mecabのインストールが完了したら、分かち書きファイルを作成しましょう。

 

以下のコマンドを打ち込めば、数十分で分かち書きファイルが作成できます。

 

wikipedia日本語全文データモデルファイルの作成

gensimをインストールしましょう。

gensimは自然言語処理のためのライブラリです。

word2vecの機能もあります。

 

インストールは以下のコマンドで簡単にできます。

インストールが完了したら以下のソースコードでモデルを作成しましょう。

 

しばらく時間がかかります。

筆者のimacで1時間ぐらいかかりました。

モデルの作成が完了するとファイルが3種類出来上がります。

  • wiki.model
  • wiki.model.syn1neg.npy
  • wiki.model.wv.syn0.npy

 

wikipediaの日本語全文データモデルで類義語を抽出してみよう

モデルが出来上がったら、類義語抽出を試してましょう。

犬の類義語を試してみます。

なかなか良い結果が出力されています。

 

続いて、「純粋 – 正義 + 悪」を試してみます。

なるほどなるほど。

 

wikipediaを使った日本語全文データ類義語抽出でした。

 

—2017/08/20追記—–

筆者用のメモ

必要な情報だけを取り出す方法

 


その他の自然言語処理記事はこちらから

 

それではまた。

あなたにオススメの記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP