词向量

R 自然语言处理入门

Kasey Jones

Research Data Scientist

词频的缺陷

两句话:

  • Bob 是我认识的最聪明的人。
  • Bob 是我认识的最杰出的人。

去停用词:

  • Bob 最聪明 人
  • Bob 杰出 人
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...