Word2Vecの学習済み日本語モデルは、いろいろと公開されています。
この記事では、その中からchiVeをおススメします。
おススメする理由を見れば、chiVeを利用したくなるはずです。
本記事の内容
- chiVeとは?
- chiVeデータ(モデル)のダウンロード・解凍
- GensimによるchiVeデータ(モデル)の利用
それでは、上記に沿って解説していきます。
chiVeとは?
chiVeのGitHubページ
https://github.com/WorksApplications/chiVe
chiVeとは、大規模コーパスと複数粒度分割に基づく日本語単語ベクトルです。
Word2Vec(Gensim)を使用して、単語分散表現を実現しています。
つまり、chiVeはWord2Vecの学習済み日本語モデルになります。
また、他にもWord2Vecの学習済み日本語モデルは存在します。
しかし、chiVeが以下の点でおススメです。
- メンテナンスされている(死にプロジェクトではない)
- 汎用的な日本語である(分野が偏っていない)
- 国立国語研究所の日本語ウェブコーパス(NWJC)が採用されている
最も重要視するのは、メンテナンスされていることですね。
他のモノは、メンテナンスされず放置されています。
もしくは、更新が長い間ストップしています。
chiVeに文句を付けるなら、形態素解析器にSudachiを利用していることです。
他のモデルは、ほぼMecabを形態素解析器に利用しています。
でも、これは仕方がないでしょうね。
chiVe自体が、株式会社ワークスアプリケーションズによって運営されています。
Sudachiは、株式会社ワークスアプリケーションズが開発したモノになります。
そりゃ、ライバルのMecabよりも自社のSudachiを使いますよね。
それにSudachiを使っていても、モデルを使う側にはそれほど影響はないと思います。
あくまでメインは、Word2Vecですから。
以上、chiVeについての説明でした。
次は、chiVeのデータをダウンロードしていきます。
chiVeデータ(モデル)のダウンロード・解凍
現時点(2021年7月)でのchiVeデータの最新バージョンは、1.2となります。
この最新バージョンは、2020年10月9日にリリースされています。
そして、バージョン1.2には以下の4つのデータが存在しています。
版0 | 正規化 | 最低頻度 | 語彙数 | gensim |
v1.2 mc5 | o | 5 | 3,197,456 | 3.8GB |
v1.2 mc15 | o | 15 | 1,454,280 | 1.7GB |
v1.2 mc30 | o | 30 | 912,550 | 1.1GB |
v1.2 mc90 | o | 90 | 482,223 | 0.6GB |
精度を求めるなら、語彙数の多いものを選ぶべきでしょう。
ただし、最も語彙数の多いモデルのファイル容量は約4GBです。
注意しないといけないのは、メモリもそこそこ必要になるということです。
モデルを読み込んで処理をするわけですから、モデル以上のサイズが必要になります。
それらを考慮して、利用するモデルを選択します。
私は、「v1.2 mc5」を選択しました。
以前なら、3.8GBと聞くとビビッてました。
でも、機械学習をやっていくとそれほどビビることはなくなっていきます。
さらには、PCゲームだと100GB以上のデータダウンロードもあります。
その意味では、GBのデータに対して感覚が麻痺してきたのかもしれません。
では、対象のファイルをダウンロードします。
手動でダウンロードしてもいいですし、wgetでも何でもOKです。
「chive-1.2-mc5_gensim.tar.gz」
ダウンロードが完了すると、tar.gz形式のデータが保存されます。
そして、そのtar.gzを解凍します。
そうすると、以下のファイルがchive-1.2-mc5_gensim以下に作成されます。
これらを利用して、Word2Vecによる分析が可能になります。
以上、chiVeデータ(モデル)のダウンロード・解凍についての説明でした。
最後に、GensimによるchiVeデータ(モデル)の利用を行います。
GensimによるchiVeデータ(モデル)の利用
Gensimを使えば、簡単にWord2Vecによる処理が可能です。
「SEO」の類似度上位10件を取得する処理を行います。
そのコードは、以下。
import gensim from pprint import pprint # chiVeデータのPATH(kv:KeyedVectors) model_path = "chive-1.2-mc5.kvのパス" # モデルの読み込み wv = gensim.models.KeyedVectors.load(model_path) # 類似度上位10件を取得 match = wv.most_similar("SEO", topn=10) # 見やすい形式で表示 pprint(match)
上記を実行すると、以下の表示となります。
[('検索エンジン', 0.7794439792633057), ('リスティング', 0.6897401809692383), ('セスアップ', 0.6769434809684753), ('サーチエンジン', 0.6657354831695557), ('アドワーズ', 0.6523354649543762), ('アフィリエイト', 0.6507781744003296), ('アドセンス', 0.6437841057777405), ('集客', 0.6231449246406555), ('yst', 0.6230387687683105), ('サーチエンジンオプティマイゼーション', 0.620593249797821)]
確かに、類似のモノが表示されています。
ただ、「セスアップ」の意味が不明です。
おそらく、「アクセスアップ」が次のように分かち書き処理されたのだと推測されます。
「アク」+「セスアップ」
そう考えると、Sudachiが形態素解析器としてどうなのか・・・
「モデルを使う側にはそれほど影響はない」と上記で書きました。
でも、影響は出ていますね。
まあ、100%は無理なので、妥協も必要ということでしょうか。
次は、「大学」にキーワードを変更します。
その実行結果は、以下。
[('大学院', 0.8059681057929993), ('学部', 0.7958552837371826), ('私立大学', 0.7504209280014038), ('経済学部', 0.731123149394989), ('教育学部', 0.7257012128829956), ('他大学', 0.7244741320610046), ('国立大学', 0.723685622215271), ('博士課程', 0.715852677822113), ('文学部', 0.7128002643585205), ('法学部', 0.7107599377632141)]
今度は、完璧ですね。
「大学」を想起させるワードが表示されています。
以上、GensimによるchiVeデータ(モデル)の利用を説明しました。