Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

fasttextとword2vecの比較と、実行スクリプト、学習スクリプトです

NotificationsYou must be signed in to change notification settings

GINK03/fasttext-vs-word2vec-on-twitter-data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

word2vec, fastTextの差と実践的な使い方

目次

  • Fasttextとword2vecの差を調査する
  • 実際にあそんでみよう
  • Fasttext, word2vecで行っているディープラーニングでの応用例
  • 具体的な応用例として、単語のバズ検知を設計して、正しく動くことを確認したので、紹介する
  • Appendix

Embeddingの原理

  • Skip gramではある特定の単語の前後の単語の出現確率を測定することでベクトル化する

図1. ある目的の単語から、周辺の単語の確率を計算してベクトル化する
  • Word2vecとfasttextではこれを実装したもの
  • ただし、fasttextにはsubwordという仕組みが入っている

図2. softmaxで共起確率を計算する

あそんでみよう

2017年2~3月のTwitterのデータ3GByteを学習させたデータがあるので、遊んでみよう
学習、予想用のプログラムをgithubに、学習済みのmodelをpython3のpickle形式でdropboxにおいてある

ファイルが置いてあるDropboxのリンク

Word2vecで遊ぶ方法

ただの言葉の相関の他、言語の足し算引き算した結果、何の単語に近くなるか計算できます。

図3. word2vecの単語ベクトルの足し算引き算の例

fasttextで遊ぶ方法

ただの言葉の相関の他、言語の足し算引き算した結果、何の単語に近くなるか計算できます。

fasttextとword2vecとの違い

  • fasttextはsubword分割という単語の中の一部が近いと近くなる特性がある
図4. 文脈(skip gram)に依存せず近くなるので、好ましく働くことも、好ましくなく働くこともある

  • Word2Vecで“艦これ”の関連度を計算すると、同じような文脈で用いられる、他のゲームタイトルが多く混じってしまう
  • これはメリットなのか、デメリットなのか、使用用途でわかれそう

単語の演算の違い

  • Word2Vecの特徴として、単語の演算が謎理論(理論的な裏付けが無いように見える)で演算できる
  • fasttextもベクトル表現なので、足し算・引き算が可能なので比較する
  • fasttextとw2vで結果が異なる

fasttext, word2vecの実践的な使い方

  • CNN, RNNなどのディープラーニングの素性とする
  • 例えば、100万語で、10単語の文章の判別問題の際、one-hotを利用すると、壊滅的なテンソルサイズになりGPUに乗らない
  • そこで意味関係を内包しているという仮説がある、fasttext, w2vを使うことで、256次元程度にシュリンクできる

RNN(or CNN)の出力をfasttext, word2vecの出力に近似して使う場合

  • Deep Learningの出力、特にRNNのテキスト生成系のモデルにおいて、出力次元が爆発してしまう問題に対応するため、出力
  • 出力をLinear + mean square errorとすることで、直接ベクトルを当てに行くことができる(復元するにはconsine類似度などで逆引きする必要がある)

応用例:言葉の進化(バズ)を観測する

  • 言葉はバズると使用法が変化する
  • 今までの主流は単語の出現頻度の変化の観測
  • 単語の使われ方の変化を観測する

  • 2次元にエンベットされていると仮定すると、図のようになる

- さらに時間系列でベクトルを表現すると下図のようになる

  • 技術的な課題点の解決
    -- 問題点:エンベッティングの際、初期値依存性があり、ベクトルが回転したり、端によったりすると歪んだりする。
    -- 解決策:絶対座標に変換するため、基準となる単語を選択(16000単語前後)
    -- 解決策:基準となる単語郡からのコサイン類似度の変化量を各観測したい単語ごとに作成
    -- 解決策:このベクトルをZとする

  • Z(プ)ベクトル(長いので略す)をデイリーで作成していき、n日のZ(プ)ベクトルをZ(プ,n)ベクトルとする
  • Z(プ,n)ベクトルとZ(プ,n-1)ベクトルとのユークリッド距離を計算する

Dの大きさが大きいほど、使用法が変化したと考えることができ、バズや言葉の進化を定量的に観測することができる。
  • これを日にちのタイムシリーズでグラフを描画すると下図のようになる

例えば、意味の変化量が少ない「ソシャゲ」という単語と、激しく文脈が変化した「プレミアムフライデー」という単語の変化量Dは大きく違う

Tweet取得・分析のシステム構成

Appendix.1. 対応関係を学ぶ

  • 図を見ると企業と企業の代表者の関係をみると、一定の法則があることがわかる

- この性質(Distributional inclusion hypothesis)を利用して、logistic-regressionなどで、関係を学習することが可能である

Appedix.2. 未知の言語を翻訳する

  • 出現する単語の並びの関連に相関があるので、言語が異なっても似たような分布になる

文字の文化が共通していれば、翻訳可能?

About

fasttextとword2vecの比較と、実行スクリプト、学習スクリプトです

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp