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

20178/15

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

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

R-CNNを「Tensorflow x Pepper」で実装する方法

アトリエ秋葉原で勉強会を開催 アトリエ秋葉原で勉強会の講師を努めさせて頂きました。 独学でDeepLearningを学んで「Tens…

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

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

20173/3

Pepper用Python 2.7 SDK(MAC)セットアップ方法

コレグラフを使用しなくてもPepperを動かせるPython 2.7 SDKセットアップ方法 MAC編 プログラムソースをバリバリ記述しな…

wikipediaを学習した類義語を話すSlackbotの作成方法

wikipedia日本語全文データから類義語を話すSlackbotを作った話 前回の記事で日本語を学習するマルコフ連鎖を使ったSlackb…

Watson NLCに学習データを投入できるGUIの開発方法

Watson NLCに学習データを投入できる画面をPythonで実装する方法 Watson NLCに学習データを投入できる簡単な画面を開発…

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

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

YOLO v2の物体検出とVGG16の画像認識との組み合わせが凄すぎた!

YOLO v2にVGG16を組み合わせて使用してみよう ある日、閃きました。 YOLO v2の物体検出の精度に、VGG16の画像認識…

自然言語解析の形態素解析 janome を使ってみよう

形態素解析 janome とは 簡単に説明しますと、自然言語の文章を意味を持つ最長単位に分割し、品詞を判別することができるライブラリです。…

Tensorflowで映像からの美人女優顔検出学習モデルの見直し

以前の記事で紹介したモデルが使い物にならなかった 以前紹介したリアルタイム映像からの美人女優検出で作成した学習モデルは、とりあえず学習モデ…

ページ上部へ戻る