初めて自然言語処理をword2vecでしてみました
今回は、word2vecを使用して自然言語処理を行います。
自然言語や形態素解析やword2vecなどについては、詳しく説明してくださっている方がいらっしゃったのでそちらを参考にしてください。
自然言語処理(NLP)ってなんだろう?
形態素解析は、前処理の一部みたいです。本によるとなんらかの処理をする前に、プログラムが処理しやすいように処理対象のデータを整えることを前処理というみたいで、ほかにもタグや記号を除去する(クリーニング)、半角と全角を揃える(正規化)などがあるようです。
こちらの書籍を見ながら今回は、実行しています。
参考にした本
パソコンで楽しむ自分で動かす人工知能
中島能和 (著)
実際にword2vecを使って自然言語処理を行った手順
①word2vecをインストール
②word2vecをコンパイル
③データをダウンロードし学習する
④学習データをのぞいてみる
⑤関連語を表示させる
⑥単語の関係性を演算してみる
①word2vecをインストール
$ git clone https:github.com/svn2github/svn2github/word2vec.git
②word2vecをコンパイル
$ cd word2vec
$ ls
# .cとあるファイルはC言語のソースファイルなのでコンパイルして実行ファイルにする
$ make
※ファイル一覧に「makefile」というファイルがあり、このファイルにコンパイル(ビルド)の手順が書かれている。makeコマンドを実行すると、makefile(Makefile)ファイルに従ってコンパイルが行われる
③データをダウンロードし学習する
# データをダウンロードして学習する
$ ./demo-word.sh
④学習データをのぞいてみる
# データの中身を見る
$ less text8
※text8(単語同士の関係性を学習するためのものなので、文章ごとに区切らず、「.」も「,」も改行も取り除かれた、約1700万語からなる超長文の英文
⑤関連語を表示させる
# word2vecに戻る(関連語の検索を再開する)
$ ./distance vectors.bin
# 関連語を表示する
$ Enter word or sentence (EXIT to break):
# word2vecに戻る(関連語の検索を再開する)
$ ./distance vectors.bin
# 関連語を表示する
$ Enter word or sentence (EXIT to break):
franceと入力
※右側のdistanceは単語の距離を表し、数値が大きいほど関連が近い
soccerと入力
# 関連語の検索を終了するには
$ Enter word or sentence (EXIT to break):EXIT
⑥単語の関係性を演算してみる
3つの単語A,B,Cを入力すると、「AとBの関係はCに対して何であるか」を回答として出力している
パリとフランスの関係は、ベルリンに対して何になるでしょうか。
※結果、ドイツ(germany)となりました。
パリがフランスの首都なので、ベルリンに対してドイツという回答は期待通りになりました。
ただ、いくつか試してみましたが、あまりポピュラーでない単語の場合は精度が低くなるようです。
関連情報
word2vec :単語をベクトルにするアルゴリズム。実用面では、word2vecで生成したデータを使って、
・文章中の単語の使われ方や特徴を解析したり可視化したりする
・検索語に指定した単語の関連語検索結果もあわせて表示する書籍情報
パソコンで楽しむ自分で動かす人工知能
中島能和 (著)
Author And Source
この問題について(初めて自然言語処理をword2vecでしてみました), 我々は、より多くの情報をここで見つけました https://qiita.com/ushinokomoriuta/items/f1154f410e1e6d1c10e1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .