【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)
「勉強」という単語に対して、類似度の高い単語を表示することができました。
関連リンク
G検定学習法
最後までご覧いただきありがとうございました。
当サイトではG検定に役立つ情報をまとめています。
ぜひご覧ください。
本サイトの活用方法
G検定シラバス改訂の概要と変更のポイント
シラバス改訂の概要 一般社団法人日本ディープラーニング協会(JDLA)は、2024年11月実施の「G検定2024 #6」よりG検定(ジェネラリスト検定)のシラバスを改訂すると発表しました。 JDLAによると、今回の改訂で […]
【G検定2024まとめ】理解度確認問題集【直前対策】
問題 すべての問題の解答が終わると答えを見ることができます。 解説動画 関連記事G検定シラバス改訂の概要と変更のポイント 2024年6月23日 【G検定まとめ2024】YouTube動画リスト(問題編)&nbs […]
【G検定まとめ2024】YouTube動画リスト(問題編)
講義編はこちら 関連記事G検定シラバス改訂の概要と変更のポイント 2024年6月23日 【G検定2024まとめ】理解度確認問題集【直前対策】 2024年5月28日 【G検定まとめ2024】YouTub […]
【G検定まとめ2024】YouTube動画リスト(講義編)
問題編はこちら 関連記事G検定シラバス改訂の概要と変更のポイント 2024年6月23日 【G検定2024まとめ】理解度確認問題集【直前対策】 2024年5月28日 【G検定まとめ2024】YouTub […]
【G検定まとめ2024】試験当日も使える! 要点整理&試験対策カンペ
G検定の要点をシラバスから抜粋してまとめました。これから学習する方も、復習したい方にもお使いいただけます。試験当日用のG検定のカンニングペーパー参考としてもお役立てください。試験結果を保証するものではありませんので、試験 […]
【G検定2023まとめ】理解度確認&問題集まとめ【直前対策】
下記ページに移動しました。 【G検定2024まとめ】理解度確認問題集【直前対策】 関連記事G検定シラバス改訂の概要と変更のポイント 2024年6月23日 【G検定2024まとめ】理解度確認問題集【直前対策】&n […]
参考書籍
①教科書として使用する書籍
体系的に知識を整理することができます。
まずは、この1冊を読んでG検定の学習を進めましょう。
検索機能が使用できるので、Kindle版が特におすすめです。
②問題集として使用する書籍
ある程度学習が進んだら、本番を意識して問題集に取り組みましょう。
本番の試験環境を意識して、このページ「要点整理&当日用カンペ」を使用しながら解答してみましょう。