FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

「ゼロから作るディープラーニング②」を読む (2. 自然言語と単語の分散表現)

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

「ゼロから作るディープラーニング②」を購入した。

あまり内容を詳細に記録するつもりはないので、読んで纏めていったものをGistに張り付けていく。

  • Jupyter Notebook Viewer: 2章 自然言語と単語の分散表現

Jupyter Notebook Viewer

第2章は、機械学習を使わない単語の分類を行う。文章を入力して、単語の隣接関係を見ながら単語の類似度を調査していく。

今回試行した手法はカウントベースと呼ばれる手法。コーパス(単語をベクトル化したテーブル)を用意し、その単語の周囲の単語の頻度をカウントする。

こうして作成した共起行列をPPMI行列に変換する。PPMI行列は、単語間の相互確率を使用した行列。

さらに、次元を削減するためにSVD(特異値分解)を用いて次元の圧縮を行う。

最後に、PTBデータセットを使って、より実践的なデータでPPMI行列と単語間の相関関係を算出することに挑戦した。

f:id:msyksphinz:20180731003151p:plain
図. "You say goodbye and I say hello."に対して、単語の分散表現を行い、類似度をグラフ化したもの。"goodbye", "hello"が近く、"i"と"you"が近いことが分かる。