如何在CBOW模式下运行MLlib的word2vec?

时间:2017-09-26 15:56:23

标签: scala apache-spark apache-spark-mllib word2vec

我的理解是word2vec可以以两种模式运行:

  • 连续词袋(CBOW)(单词顺序无关紧要)
  • 连续skip-gram(单词顺序很重要)

我想从Spark的MLlib运行 CBOW 实现,但我不清楚文档及其示例如何做到这一点。这是他们页面上列出的示例。

来自:https://spark.apache.org/docs/2.1.0/mllib-feature-extraction.html#example

import org.apache.spark.mllib.feature.{Word2Vec, Word2VecModel}

val input = sc.textFile("data/mllib/sample_lda_data.txt").map(line => line.split(" ").toSeq)

val word2vec = new Word2Vec()

val model = word2vec.fit(input)

val synonyms = model.findSynonyms("1", 5)

for((synonym, cosineSimilarity) <- synonyms) {
  println(s"$synonym $cosineSimilarity")
}

我的问题:

  • 此示例使用哪两种模式?
  • 您知道如何在 CBOW 模式下运行模型吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

似乎MLlib目前只实现了skip-gram。

以下是skip-gram模型的打开票证/拉取请求:https://issues.apache.org/jira/browse/SPARK-20372