【G検定まとめ】要点整理&当日用カンペの項目別詳解ページです。

詳細な知識や実装は試験には必ずしも必須ではありませんが、試験対策として理解を深めたい方はぜひ最後までご覧ください。

G検定まとめはこちら

分散表現とは

局所表現を連続的で情報が密であり、次元数の低いベクトルに変換する単語の表現を分散表現または単語埋め込みと呼ぶ。単語を分散表現で表すことで、ベクトル間の距離や位置関係から単語の意味を表現することができる。この分散表現学習は自然言語処理の分野における成功の1つで、これはある種の意味的な演算が行えることを示した。

単語を固定長のベクトルで表現することを「単語の分散表現」と言います。

自然言語処理において機械学習を活用するためには、単語の持つ性質や意味を反映したベクトル表現を獲得することが重要となります。

単語をベクトルで表現することができれば、単語の意味を定量的に把握することができるため、様々な処理に応用することができます。

単語をベクトルで表現する方法として、one-hotベクトル、Word2Vec、fastTextといった手法が提案されてきました。

One-hotベクトル表現

文字や単語をベクトル化する手法として、「One-hotベクトル」が提案されました。

これは、ベクトルのすべての要素のうちひとつだけが1であり、残りはすべて0であるベクトルを意味します。

例えば、以下のように単語ごとにベクトルを割り当てます。

私(1,0,0,0,0)
は(0,1,0,0,0)
今日(0,0,1,0,0)
勉強(0,0,0,1,0)
する(0,0,0,0,1)

この手法では、機械的にベクトルを割り当てることができます。

しかし、同一単語であるかどうかの判定はできますが、これでは単語の意味を含んだベクトルにはなっていません。

また、文章中の全ての単語を対象とすると、ベクトル数が膨大になるため計算時間が大幅に増加する課題がありました。

分散表現の登場

ベクトル数が膨大になるという課題を解決するため、提案された手法が「分散表現」です。

単語分散表現とは、「文字・単語をベクトル空間に埋め込み、その空間上のひとつの点として捉える」ことを指します。

単語分散表現は、単語埋め込み(Word Embedding)とも呼ばれます。

単語の意味を含めたベクトルとして表現できるようになったことで、意味の異なる単語同士でのベクトルの計算が可能となりました。

分布仮説

自然言語処理の世界では様々なベクトル化手法が研究されています。

人が経験的に把握している特徴を単語ベクトルに落とし込む手法に対して、これを機械的に行うアプローチを分布仮説に基づいて単語ベクトルを求める手法があります。

この手法は「単語の意味は周囲の単語によって形成される」というアイデアに基づいています。

分散表現の実装例

分散表現

ここからはWord2Vecによる実装を紹介します。

まずは単語ベクトルを表示しています。

「男」という単語を例にします。

from gensim import models
w2v_model =  models.KeyedVectors.load_word2vec_format('jawiki.word_vectors.200d.txt', binary=False) 

word = "男"

# Word2Vecで作成した単語ベクトルのshape
word_vec = w2v_model.wv.__getitem__(word)
print(word_vec.shape)

# Word2Vecで作成した単語ベクトル
print(word_vec)

実行すると、以下の通り出力されます。

(200,)
[ 0.015809   -0.3251379   0.05244135  0.06446267  0.05560444 -0.10130245
 -0.10580788 -0.14394113 -0.34319535 -0.10822236 -0.19849339 -0.26917374
  0.22541721 -0.07668435  0.48141098 -0.147957    0.43515927 -0.03782997
  0.2389156   0.01180182  0.1836466   0.16968328 -0.3920643   0.12813346
 -0.20881392  0.19826704  0.03449377 -0.04753834  0.2486179  -0.14926115
 -0.02117037 -0.3065304   0.3936741  -0.10212087 -0.04573085 -0.1337663
 -0.22365484  0.16874568  0.07610422  0.09013756 -0.29010847  0.18294546
 -0.5175267   0.07319862 -0.18262151 -0.05056991  0.1262936  -0.02267754
 -0.06510926 -0.01428416 -0.09494394  0.08261232  0.12032219 -0.01902988
  0.04504069 -0.13478482 -0.17759144 -0.14752197 -0.02539819  0.10928936
 -0.09864278  0.08571469  0.13544586  0.10696616 -0.03865746 -0.1618845
  0.04960717 -0.15753698  0.3267987   0.08656162 -0.01817252  0.13675034
 -0.3327987   0.2530842   0.12734842  0.06555606  0.160463    0.06241005
  0.23274134 -0.11655759  0.16264422  0.53337     0.15273613  0.36126742
  0.12710397 -0.0883073   0.16111715 -0.07801783 -0.05251171 -0.03803135
  0.36643884 -0.05368368 -0.08609699 -0.19484329  0.12814972  0.00330684
  0.07512157  0.15090348 -0.10693323  0.01813235 -0.2135235  -0.00780941
  0.05442232  0.24011889 -0.51129556 -0.638149    0.02244863 -0.22941312
 -0.23984718 -0.02993166 -0.05658468 -0.01124568  0.2406439   0.45328262
  0.19353937  0.30052927 -0.11227108 -0.0850492  -0.16737182 -0.33904943
  0.10570832 -0.09934106  0.03946824 -0.2834313  -0.04729119  0.2697491
  0.12789859 -0.17199114  0.41526002 -0.23899308 -0.45907646 -0.12020862
 -0.14896242 -0.04573169 -0.09786802 -0.1763842   0.12901594  0.02436519
  0.00428179 -0.36937413 -0.4695615  -0.22230782  0.2830068   0.2566159
  0.04325378  0.05985418  0.3014291   0.09938446  0.05811239  0.39835015
  0.164487   -0.14685854 -0.17889863 -0.02350353 -0.1620599  -0.3441901
  0.26197276 -0.294521   -0.05924391 -0.23041128  0.5574968   0.21000126
  0.10179501  0.01910508  0.3779993   0.01058383 -0.28017193  0.15513653
 -0.2171893  -0.27293232  0.1677527  -0.14999865  0.26054642  0.21831411
 -0.07688119  0.25424448  0.08557764 -0.08890117 -0.0325109  -0.18752629
  0.13194856  0.0568304   0.11748125  0.40530595 -0.3771344  -0.35576954
 -0.22595452 -0.15970773 -0.22661117  0.03037297  0.09092331 -0.01097557
  0.40739244 -0.01088747  0.28517485  0.10055861 -0.29882434  0.04821419
  0.15081635 -0.32244784]

類似度の高い単語を表示

復習単語の類似度が高い単語を表示する例を紹介します。

「勉強」という単語に対して、類似度の高い単語を表示してみます。

results = w2v_model.most_similar(positive=['勉強'])
for result in results:
    print(result)

実行すると、以下の通り出力されます。

('勉学', 0.8039138913154602)
('受験勉強', 0.7886025905609131)
('通い', 0.7718825340270996)
('学業', 0.7624354362487793)
('猛勉強', 0.7539629936218262)
('独学', 0.744247317314148)
('励ん', 0.7085117697715759)
('仕事', 0.7079863548278809)
('学び', 0.7079614400863647)
('教える', 0.7043171525001526)

「勉強」という単語に対して、類似度の高い単語を表示することができました。

関連リンク

【🔰自然言語処理】単語の分散表現とWord2Vec

このシリーズでは、自然言語処理において主流であるTransformerを中心に、環境構築から学習の方法までまとめます。 今回の記事では、単語の分散表現の概要と、Word2Vecの…

【🔰自然言語処理】単語の分散表現② Word2VecとBERT

このシリーズでは、自然言語処理において主流であるTransformerを中心に、環境構築から学習の方法までまとめます。 この記事では単語の分散表現の理解のため、前回紹介し…

G検定学習法

最後までご覧いただきありがとうございました。

当サイトではG検定に役立つ情報をまとめています。

ぜひご覧ください。

本サイトの活用方法

【G検定まとめ2024】試験当日も使える! 要点整理&試験対策カンペ【動画】

1. 人工知能とは 第1回:人工知能の定義、人工知能研究の歴史 2. 人工知能をめぐる動向 第2回:探索・推論 第3回:知識表現、機械学習・深層学習 3. 人工知能分野の問題 第4回:人工知能分野の問題 4. 機械学習の […]

【G検定まとめ2024】試験当日も使える! 要点整理&試験対策カンペ

G検定の要点をシラバスから抜粋してまとめました。これから学習する方も、復習したい方にもお使いいただけます。試験当日用のG検定のカンニングペーパー参考としてもお役立てください。試験結果を保証するものではありませんので、試験 […]

【G検定2023まとめ】理解度確認&問題集まとめ【直前対策】

G検定の要点を問題形式にまとめました。試験前の理解度確認、直前対策にお役立てください。 (最終更新日:2023年3月1日) 1. 人工知能とは 問題を解く 2. 人工知能をめぐる動向 問題を解く 3. 人工知能分野の問題 […]

【G検定2023】G検定の概要と試験のポイント

このシリーズではG検定の要点を項目ごとにまとめています。 今回の記事では「G検定の概要と試験のポイント」について紹介します。 試験の概要  G検定(公式名:ジェネラリスト検定)は、JDLA:Japan Deep Lear […]

【G検定】G検定合格体験記 〜学習方法と受験体験〜

このシリーズではG検定の要点を項目ごとにまとめています。 今回の記事では、2022年7月2日(土)開催のG検定(2022#2 )に合格した学習方法と受験体験について紹介します。 これから受験される方へ参考になれば幸いです […]

【G検定2022】シラバスでみるG検定の試験内容

このシリーズではG検定の要点を項目ごとにまとめています。 今回の記事ではシラバスをもとに「G検定の試験内容」について紹介します。 試験の概要  G検定(公式名:ジェネラリスト検定)は、JDLA:Japan Deep Le […]

参考書籍

教科書として使用する書籍

体系的に知識を整理することができます。

まずは、この1冊を読んでG検定の学習を進めましょう。

検索機能が使用できるので、Kindle版が特におすすめです。

②問題集として使用する書籍

ある程度学習が進んだら、本番を意識して問題集に取り組みましょう。

本番の試験環境を意識して、このページ「要点整理&当日用カンペ」を使用しながら解答してみましょう。