✅
自然言語処理とword embedding
はじめに
概要
- シラバス:E資格2024#2
- 自然言語処理と古典的なword embeddingを勉強する
キーワード
形態素, one-hot表現, word embedding, 潜在的意味インデックスング
学習内容
形態素解析
- 形態素:意味を持つ最小の言語単位
- 単語よりも小さな単位になることもある
- 「食べました」→「食べ」「まし」「た」
- 目的:文章を意味単位に分割し、品詞などを判定する
解析を行う
- 単語に分割(分かち書き):「私は猫です」→「私」「は」「猫」「です」
- 品詞の判定(名詞・動詞・助詞など):「私(名詞)」「は(助詞)」「猫(名詞)」「です(助動詞)」
- 活用・語幹の抽出(動詞・形容詞など):「食べました」→「食べる(原形)」
one-hot表現
- ある要素を「0と1だけで構成されたベクトル」で表す方法で、カテゴリデータ(例:単語やラベル)を数値化する最も基本的な手法の一つである
- 文章の中から語彙リストを作成し、各単語を表現する次元を準備し、文に含まれている単語に対応する次元を1に、それ以外を0にして文章を数値化する
リスト:[apple, banana, orange, grape, melon]
単語 | One-hotベクトル |
---|---|
apple | [1, 0, 0, 0, 0] |
banana | [0, 1, 0, 0, 0] |
orange | [0, 0, 1, 0, 0] |
grape | [0, 0, 0, 1, 0] |
melon | [0, 0, 0, 0, 1] |
peach | [0, 0, 0, 0, 0] |
word embedding
- 単語を意味的な特徴を反映した「ベクトル(数値の集合)」で表現する技術
- 機械は「単語」そのものを理解できないため、計算可能な「数値」に変換する必要がある
one-hotの問題
- ただのID変換は意味を持たない
one-hot
apple → [1, 0, 0, 0]
banana → [0, 1, 0, 0]
grape → [0, 0, 1, 0]
→ 単語同士の類似性や関係性が全く表現できない
word embedding
apple → [0.52, 0.13, -0.88, ...]
banana → [0.48, 0.11, -0.80, ...]
→ 意味が似ている単語はベクトルも似る(距離が近い)
潜在的意味インデックスング(Latent Semantic Indexing, LSI)
- 大量の文書データの中から「隠れた意味的な構造(=潜在的なトピック)」を抽出する手法
- 意味が似ている” 文書や単語を見つけるための数学的な手法
- 手順
- 文書と単語の出現頻度を表す行列(例:BoW)を作る
- その行列に特異値分解(SVD)をかける
- 低次元の意味空間に文書と単語を写像する→上位k個の意味次元だけ残して、ノイズの除去+意味の抽出を実現
- これにより、類似した文書・単語が意味的に近い位置に配置される→「同義語」や「関連語」にも反応できるようになる
{'私': 0, 'は': 1, 'ラーメン': 2, 'が': 3, '好き': 4, 'です': 5, '。': 6, '餃子': 7, 'と': 8, 'で': 9, 'いう': 10, '、': 11, 'どちら': 12, 'か': 13, '嫌い': 14, 'の': 15, '友達': 16, '塩': 17, 'も': 18, '味噌': 19, '醤油': 20, 'すべて': 21}
「私と私の友達は、塩ラーメンも味噌ラーメンも醤油ラーメンもすべて好きです。」
→[2, 1, 3, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 3, 1, 1, 1]
Discussion