PR

Word Embedding: 自然言語処理における単語の数値表現

AI/MachineLearning
スポンサーリンク

はじめに

自然言語処理(NLP)の分野では、単語をコンピュータで扱いやすい形式で表現することが重要です。それを実現するのがWord Embeddingです。Word Embeddingは、単語の意味や文脈を捉えた低次元のベクトル表現であり、近年のNLPにおける大きなブレイクスルーとなっています。本記事では、Word Embeddingの概要、数式での表現、Pythonでの実装例を交えて解説します。

スポンサーリンク

Word Embeddingとは

Word Embeddingは、単語を密なベクトル空間上の点として表現する手法です。この空間上では、意味的に関連性の高い単語同士が近くに配置され、類推関係を捉えることができます。例えば、「王様 – 男性 + 女性 = 女王」のような関係性を表現できます。これにより、単語の意味や文脈を考慮した自然言語処理が可能になります。

スポンサーリンク

Word Embeddingの数式表現

Word Embeddingは、単語をベクトルで表現します。単語 \(w\) のベクトル表現を \(v_w \in \mathbb{R}^d\) とすると、\(d\) はベクトルの次元数を表します。単語のベクトル表現は、単語の出現頻度や共起関係から学習されます。

よく知られているWord Embeddingの手法の一つに、Skip-gramモデルがあります。Skip-gramモデルでは、中心単語 \(w_c\) から周辺単語 \(w_o\) を予測するように学習します。この時、目的関数は以下のように表されます。

$$J(\theta) = \frac{1}{T} \sum_{t=1}^{T} \sum_{-m \leq j \leq m, j \neq 0} \log p(w_{t+j} | w_t)$$

ここで、\(T\) はコーパス内の単語数、\(m\) はウィンドウサイズ、\(p(w_{t+j} | w_t)\) は中心単語 \(w_t\) が与えられた時の周辺単語 \(w_{t+j}\) の条件付き確率を表します。

スポンサーリンク

Pythonでの実装例

PythonでWord Embeddingを実装する際には、gensimライブラリを使用するのが一般的です。以下は、gensimを用いてWord2Vecモデルを学習する例です。

from gensim.models import Word2Vec

# 学習用のテキストデータ
sentences = [
    ["猫", "が", "鼠", "を", "追いかける"],
    ["犬", "が", "骨", "を", "噛む"],
    ["猫", "が", "ソファ", "で", "寝る"],
    ["犬", "が", "公園", "で", "走る"]
]

# Word2Vecモデルの学習
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)

# 単語のベクトル表現を取得
vec_cat = model.wv["猫"]
vec_dog = model.wv["犬"]

# 単語間の類似度を計算
similarity = model.wv.similarity("猫", "犬")
print(f"猫と犬の類似度: {similarity}")

上記のコードでは、まず学習用のテキストデータを準備します。次に、Word2Vecクラスを使ってモデルを学習します。vector_sizeはベクトルの次元数、windowはウィンドウサイズ、min_countは最小出現回数、workersは並列処理のワーカー数を表します。

学習後のモデルから、単語のベクトル表現を取得することができます。また、similarityメソッドを使って単語間の類似度を計算できます。

スポンサーリンク

Word Embeddingの応用例

Word Embeddingは、様々なNLPタスクで活用されています。以下に代表的な応用例を紹介します。

  1. 文書分類: 文書内の単語のベクトル表現を集約することで、文書全体のベクトル表現を得ることができます。これを機械学習モデルに入力することで、文書分類を行うことができます。
  2. 感情分析: 単語のベクトル表現から感情極性を捉えることができます。これを利用して、文章やレビューの感情分析を行うことができます。
  3. 機械翻訳: 単語のベクトル表現を利用して、言語間の単語のマッピングを学習することができます。これにより、高品質な機械翻訳システムを構築できます。
  4. 質問応答システム: 質問と回答のペアから、単語のベクトル表現を学習することができます。これを利用して、新しい質問に対する回答を生成するシステムを構築できます。
スポンサーリンク

まとめ

Word Embeddingは、自然言語処理における重要な技術の一つです。単語を低次元のベクトル空間上の点として表現することで、単語の意味や文脈を捉えることができます。本記事では、Word Embeddingの概要、数式表現、Pythonでの実装例、応用例について解説しました。Word Embeddingを理解することで、より高度な自然言語処理システムの構築が可能になります。

コメント

タイトルとURLをコピーしました