今回はGensimで言語の分析をしてみたい.

これは言語データをembeddingして分析する際に非常に便利なライブラリである.例えば,コーパスから学習を回して単語の分散表現を下記のように学習できる.

import gensim.downloader as api
from gensim.models import Word2Vec

# "text8" コーパスのロード
# dataset は各文がトークン化されたリストとして順次返すジェネレーターです
dataset = api.load("text8")

# 必要に応じて全体をリスト化(大規模なコーパスの場合はジェネレーターのまま学習させるのが望ましい)
sentences = list(dataset)

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

# モデルの語彙数を確認
print("Vocabulary size:", len(model.wv.index_to_key))

# 例: 単語 "king" のベクトルを表示
print("Vector for 'king':", model.wv['king'])

# 'king' に類似した単語を探索
similar_words = model.wv.most_similar('king')
print(similar_words)

Vocabulary size: 71290

Vector for ‘king’: -1.40022373e+00 3.87524843e-01 2.77636194e+00 1.32735562e+00

-9.24052000e-01 2.66494155e-01 1.56175697e+00 1.01277709e+00

6.91688061e-01 2.61563897e+00 -1.35741532e+00 -2.46408916e+00

1.54095292e-01 3.77410746e+00 -1.13374650e+00 -1.83525944e+00

-1.10971332e+00 1.75624862e-02 3.64231133e+00 1.13254994e-01

-1.95500445e+00 1.33008587e+00 -2.52539802e+00 -8.90057862e-01

1.59635782e+00 -2.57542551e-01 -3.78294706e-01 -1.50552583e+00

9.04640853e-01 4.26173359e-01 -1.87384582e+00 1.35238218e+00

1.02551711e+00 4.05671090e-01 3.15576744e+00 -3.72577161e-01

-2.00494468e-01 -5.16166687e-01 -3.18955064e-01 -2.40782118e+00

3.65876585e-01 1.11689639e+00 1.09998083e+00 1.18768319e-01

-1.34638250e+00 -1.95833755e+00 -1.78710806e+00 1.50652990e-01

1.99266195e+00 -2.04074264e+00 3.12442803e+00 3.94430310e-01

-1.09330833e+00 2.18462372e+00 9.89748657e-01 -1.54847479e+00

-8.72489452e-01 -3.34259272e-02 -1.18532026e+00 -1.02175486e+00

6.91572130e-01 -1.06667161e+00 2.03506780e+00 -1.90401065e+00

-1.93672693e+00 -8.10822129e-01 -2.50981212e+00 1.11374438e+00

2.50099444e+00 -1.05433846e+00 4.04345915e-02 8.54350448e-01

-4.76705027e+00 -1.61131990e+00 -1.09484804e+00 -2.30183554e+00

6.08713627e-01 -1.29240143e+00 -9.71304893e-01 2.35009527e+00

-3.78833461e+00 -1.65722263e+00 -1.12937665e+00 1.06876105e-01

-1.43580592e+00 2.80714321e+00 1.15638387e+00 -1.11737990e+00

-4.65689510e-01 -3.33689991e-03 -5.88901460e-01 -1.01883423e+00

-3.54521811e-01 -1.28444755e+00 3.42088604e+00 2.02888918e+00

1.90022147e+00 4.11276197e+00 1.02729666e+00 4.28371370e-01

(‘prince’, 0.7476948499679565), (‘queen’, 0.7082424759864807), (‘throne’, 0.7015913128852844), (‘kings’, 0.691387951374054), (‘emperor’, 0.6734219193458557), (‘vii’, 0.6674924492835999), (‘viii’, 0.6668296456336975), (‘pope’, 0.6624415516853333), (‘sultan’, 0.6610220074653625), (‘aragon’, 0.6604430675506592)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です