概述
Word2vec是一款由谷歌发布开源的自然语言处理算法,其目的是把words转换成vectors,从而可以用数学的方法来分析words之间的关系。Spark其该算法进行了封装,并在mllib中实现。
整体流程是spark离线训练模型,可以是1小时1训练也可以1天1训练,根据具体业务来判断,sparkstreaming在线分析。
由于历史问题,spark还在用1.5.0,接口上和2.1还是有点区别,大概看了下文档,流程上差不多
spark离线训练
如下代码,通过word2vec训练出一个模型,并且找出“导弹”的10个近义词
val input = sc.textFile("word2vec.txt").map(line => line.split(" ").toSeq)
val word2vec= newWord2Vec()
word2vec.setMinCount(1)
word2vec.setNumPartitions(1)
word2vec.setNumIterations(1)
val model=word2vec.fit(input)
val synonyms= model.findSynonyms("导弹", 10)for((synonym, cosineSimilarity)
println(s"$synonym $cosineSimilarity")
}
model.save(sc,"myModelPath")
参数解释
参数
默认
解释