単語埋め込み

Rで学ぶ自然言語処理入門

Kasey Jones

Research Data Scientist

単語数の欠点

2つの文:

  • Bob is the smartest person I know.
  • Bob is the most brilliant person I know.

ストップワード除去後:

  • Bob smartest person
  • Bob brilliant person
Rで学ぶ自然言語処理入門

語の意味

追加データ:

  • The smartest people ...
  • He was the smartest ...
  • Brilliant people ...
  • His was so brilliant ...
Rで学ぶ自然言語処理入門

word2vec

  • 単語を高次元ベクトル空間で表現
  • 複数の語の類似性を捉える
  • 意味が近い単語ほど空間内で近い

word2vec 表現では、類似する単語が多次元ベクトル空間で近くに集まる。

1 https://www.adityathakker.com/introduction-to-word2vec-how-it-works/
Rで学ぶ自然言語処理入門

データの準備

library(h2o)
h2o.init()
h2o_object = as.h2o(animal_farm)

h2oでトークン化:

words <- h2o.tokenize(h2o_object$text_column, "\\\\W+")
words <- h2o.tolower(words)
words = words[is.na(words) || (!words %in% stop_words$word),]
Rで学ぶ自然言語処理入門

word2vec のモデリング

word2vec_model <-
    h2o.word2vec(words, min_word_freq = 5, epochs = 5)
  • min_word_freq: 5回未満の単語を除外
  • epochs: 学習反復回数
Rで学ぶ自然言語処理入門

単語の類義語

h2o.findSynonyms(w2v.model, "animal")
    synonym     score
1     drink 0.8209088
2       age 0.7952490
3   alcohol 0.7867004
4       act 0.7710537
5      hero 0.7658424
h2o.findSynonyms(w2v.model, "jones")
      synonym     score
1      battle 0.7996588
2  discovered 0.7944554
3     cowshed 0.7823287
4     enemies 0.7766532
5       yards 0.7679787
Rで学ぶ自然言語処理入門

その他の用途

  • 分類モデル
  • センチメント分析
  • トピックモデル
Rで学ぶ自然言語処理入門

word2vec を適用する

Rで学ぶ自然言語処理入門

Preparing Video For Download...