AI coordinator

人工知能 & ロボティクス

© AI coordinator All rights reserved.

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. この記事へのトラックバックはありません。

Watson NLCが使えるGUIをPythonで実装する方法

PythonでWatson NLCを使えるGUIを作ってみよう 質問を入力すれば、一番高い確信度を回答として返却してくれるGUIをPyth…

MNISTって何?数字を識別できる学習モデルの作成方法

MNISTとは MNISTとは手書き数字画像60000枚とテスト画像10000枚を集めた画像データセットになります。 ニューラルネッ…

20177/15

SlackからPepperを発話させる超簡単な方法

SlackからPepperを喋らせてみる 久しぶりのPepperネタです。 最近、Slackbotを学習したので、今度はPepper…

言葉を自動学習するSlackbotをマルコフ連鎖で実装

マルコフ連鎖とは 簡単に説明すると、マルコフ連鎖を使用すれば既存の文章を元にして自動で文章を生成することができるようになります。 ロ…

誰でもできるtensorflowを使ったサンプル画像認識

tensorflowなら簡単に画像認識ができる tensorflowの入門編として、簡単にサンプルソースを使った画像認識を試してみたので、…

20178/12

監視カメラで撮影した画像を自動でSlackにアップロードする方法

画像確認はSlackが便利 前回紹介した動体撮影に特化した監視カメラの作成方法で、保存した写真をどうやって簡単に確認できるか模索していたと…

リアルタイム映像からの美人女優検出

リアルタイム映像から特定の人物検出 以前からやってみたかった映像からの特定人物検出にチャレンジしてみたので、その内容の紹介です。 S…

20177/22

Pepperのカメラ映像からリアルタイムで物体検出する方法

Pepperのカメラからリアルタイムに物体検出してみる 以前からチャレンジしてみたかったPepperに搭載されているカメラ映像からの物体検…

20178/8

動体撮影に特化した監視カメラの作成方法

動く物体を検知して写真撮影をする監視カメラ OpenCVを使えば動体撮影に特化した監視カメラを作成することができるのではないかと考え、実装…

20178/15

DeepLearningのモデル可視化方法とmatplotlibで学習の様子を可視化する方法

学習モデルの可視化と学習の様子を可視化してみた 何を今更といった内容の記事です。 DeepLearningにチャレンジしてきた筆者で…

ページ上部へ戻る