Help us understand the problem. What is going on with this article?

【まとめ】自然言語処理における単語分散表現(単語ベクトル)と文書分散表現(文書ベクトル)

自分のメモ代わりに作ったので間違いがあるかもしれません。また、説明が雑な部分もあります。
歴史が分かるように各手法が提案、公開された年も記載しています(※CNN、RNNは理論が発表された年にしています)。

単語分散表現(単語ベクトル)

2013年にGoogleのMikolovさん達がWord2Vecを提案して一躍有名に。

  • 「王様」ー「男性」+「女性」=「お姫様」

のように単語の足し算、引き算ができるという画期的な成果を残した。

最初(2013〜2017年頃)は文脈依存なしの分散表現しかなかった。
文脈依存なしの欠点(※後述)を克服するという観点で、2017年以降文脈依存ありの手法が提案され始めた。

文脈依存なし

文脈依存あり

Word2Vec、FastText、GloVeなどの文脈依存なしの手法では、多義語の場合に問題が生じる。具体的には、「ソフトバンク」はスポーツの「ソフトバンク」とIT企業の「ソフトバンク」、「香川」は地名の「香川」とサッカー選手の「香川」という複数の意味を持つが、単語分散表現としては同じになるという問題。
そこで、登場したのがELMoやBERTのように文脈を考慮した単語分散表現。前後の単語によって、同じ単語でも分散表現が変わる。但し、都度計算が必要になるため、文脈依存なしの手法と比較して計算時間が掛かるという欠点がある。

  • ELMo(2018年)
    • Allen AI1とWashington大学が開発。
    • 日本語モデルは東北大学が公開済み。
    • アイデア自体は画期的だが、半年後にBERTが公開されたこともあり、そこまでは話題になっていない印象。
      • 英語と比較して日本語は多義語や語義の曖昧性が少ないというのも影響しているかも。
  • BERT(2018年)

文書分散表現(文書ベクトル)

単語を分散表現で表すことができれば、次は文書を分散表現で表したくなる。ここで、文書というのは複数の単語からなるテキストと定義し、文節、文、文章は文書に含まれるものとする。
文書毎のラベルデータが不要な場合と必要な場合に分かれる。ここでいう文書毎のラベルデータは、単語の分散表現を学習するためのコーパスとは別の話し。

文書毎のラベルデータ不要

  • 単語分散表現の平均(2013年?)

    • 一番シンプルな手法。文書を構成する単語の単語分散表現の平均を取るだけ。
      • 例えば、「カレーを食べる。」という文書をあった場合、「カレー」「を」「食べる」「。」の4つの単語の単語分散表現の平均を取る。
    • 単純に平均を取るだけでは全ての単語を同じ重みとして扱うが、単語毎に重みを付けた方が良い。前記の例では「を」「。」はなくても意味はほぼ通じるので、これらの単語の重みは小さくしたい。重み付けの方法は色々と提案されている。
    • シンプルな手法にも関わらず、そこそこの精度が出る。特に、SIFは後述するSkip-Thought、RNNなどの手法よりも精度が高い2
    • 手法がシンプルで実装しやすくそこそこの精度が出るので、ビジネスでの応用事例も多い。
  • Doc2Vec(2014年)

    • Word2Vecとほぼ同じ時期に提案された手法だが、精度がいまいち。
      • エムスリーの人も精度に課題ありとMeetupで言及。
  • Skip-Thought(2015年)

    • ブレインパッドの人が書いた記事があるが、それ以外ではSkip-Thoughtをほとんど聞いたことがない。
    • SIFの論文で比較対象になっているが、精度は高くない。むしろ、単語分散表現の平均の方が高い。
  • CNN(1980年)

    • 画像の畳み込みを自然言語処理に応用。
    • 文書に含まれる単語の数が80個、単語分散表現の次元数が200の場合、80*200の行列に対して畳み込みを行うイメージ。
  • Universal Sentence Encoder(2018年)

    • Googleが提案&開発。
    • 異なる言語をまたいで同じベクトル空間モデルが共有される。例えば、日本語と英語の文書の類似度をダイレクトに計算できる。
    • Googleが開発したのでTensorFlow版しかない。PyTorch版はまだない。

文書毎のラベルデータ必要

  • SCDV (Sparse Composite Document Vectors)(2017年)

    • マイクロソフトとインド工科大学が提案。
    • 基本的には単語分散表現の平均と同じだが、単語分散表現を文書毎のラベル(トピック)に基づいて調整するのがポイント。
  • RNN(1986年)

    • RNNで分類問題を解く。その上で、Encoderの隠れ層を文書分散表現とする。最後の単語の隠れ層だけを使っても良いし、それぞれの単語の隠れ層の平均を使っても良い。方法は幾つも考えられる。

参考文献

https://github.com/Separius/awesome-sentence-embedding


  1. Microsoftの共同創業者であるPaul Allenが立ち上げた研究機関 

  2. SIFの論文では著者達はそう主張しているが、ドメインやデータが違うと結果は異なる可能性はある。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした