実装編の第一弾で自分で一から単語分散表現を学習するモデルを作成し、第二弾では実装済みのgensimというモデルを使って単語分散表現の学習を行いました。しかし、たいていの場合、単語分散表現の学習には莫大な時間がかかるため学習済みのモデルを利用します。今回はすでに学習済みのモデルをどのように使うのか、勉強した内容をもとに書いていきます。
学習済み単語分散表現を読み込もう
Google Colabで学習済みの日本語の単語分散表現モデル使う方法をまとめました。
1. 必要なライブラリのインストール
次に、必要なライブラリをインストールします。例えば、gensim
やtransformers
などです。
# 必要なライブラリのインストール
!pip install gensim transformers
2. 学習済みモデルのダウンロード
学習済みの日本語単語分散表現モデルをダウンロードします。例えば、WikiEntVecのモデルを使用することができます。
# 学習済みモデルのダウンロード
!wget https://github.com/singletongue/WikiEntVec/releases/download/20190520/jawiki.word_vectors.200d.txt.bz2
!bzip2 -d jawiki.word_vectors.200d.txt.bz2
3. モデルの読み込み
ダウンロードしたモデルを読み込みます。
# モデルの読み込み
from gensim.models import KeyedVectors
model = KeyedVectors.load_word2vec_format('jawiki.word_vectors.200d.txt', binary=False)
4. モデルの使用
モデルを使って単語の類似度を計算したり、ベクトルを取得したりできます。
# 単語のベクトルを取得
vector = model['東京']
# 類似度の高い単語を取得
similar_words = model.most_similar('東京')
#結果を出力
print(vector)
print("================================================")
print(similar_words)
単語分散表現の評価
単語分散表現の評価には主に以下のような評価方法が用いられます。
- 内省的評価:
- 単語類似度タスク: 人間が判断した単語類似度と分散表現による単語類似度の相関を評価します。例えば、WordSim353やSimLex999といったデータセットがよく使われます⁴。
- アナロジータスク: 「king – man + woman = queen」のようなアナロジー問題を解く能力を評価します。
- 外部タスク評価:
- 分類タスク: 分散表現を使ってテキスト分類や感情分析などのタスクを行い、その性能を評価します。
- クラスタリングタスク: 単語分散表現を使って単語をクラスタリングし、その結果を評価します。
- 下流タスクでの性能評価:
- 機械翻訳や質問応答システムなど、実際のアプリケーションでの性能を評価します。
この中で実際の現場で役立つ評価方法は外部タスク評価になります。
なぜなら、内省的評価が高く人間に近しい表現ができていたとしても、下流タスクでの性能評価が良いとは限らないからです。
単語分散表現について学んだ感想
自然言語処理編 第8~10回の計4回に分けて単語分散表現について学びました。機械が人間と同じように単語の意味を把握することがいかに難しいことなのかを実感しました。また、今回の学習を通して自然言語処理をしてる感が学べたのはとても学んでいて楽しかった点です。
この記事は下記の書籍を参考にしています。
コメント