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

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

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

こんにちは。

AI coordinatorの清水秀樹です。

自然言語処理について何から勉強を始めようかと色々模索していたところ、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″です。

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

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

ダウンロード時点では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追記—–

筆者用のメモ

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

 

それではまた。

この記事の内容について、相談したい方へ

技術選定・実装の進め方・組織での導入など、AI/IoT全般のご相談を受け付けています。

無料相談会(30分・オンライン)

About The Author

Hideki
東京大学発AIスタートアップでロボット開発室室長・画像解析室室長・動画解析室室長を務め、画像認識関連のAI特許を在籍中に3件取得。その後、KDDIグループでプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRIST株式会社の執行役員CTO 兼 VPoEとして、農業の人手不足解決に向けた収穫ロボットの開発組織を統括しています。AI・ハード・エレキ・通信・クラウド・IoTまでを一気通貫で設計できる視点を強みに、性能だけでなく「感動やワクワク体験」までデザインできるロボットの研究を進めています。並行して、AI coordinatorとして企業のAI導入・教育機関のAI授業・地域の技術相談を月額契約で継続伴走しています。

COMMENTS & TRACKBACKS

  • Comments ( 0 )
  • Trackbacks ( 1 )

コメントはまだありません。

  1. […] こちらも以前紹介した「wikipedia全文データからWord2Vecで類義語を抽出してみる」を参考に学習モデルを作成してください。 […]

LEAVE A REPLY

*
*
* (公開されません)