第二节 获取词向量的工具——Word2Vec

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二节 获取词向量的工具——Word2Vec相关的知识,希望对你有一定的参考价值。

参考技术A word2vec是google在2013年开源的一个获取词向量的工具包,word2vec中用到的两个重要模型为CBOW模型(Continuous Bag-of-Words Moedl)和Skip-gram模型(Continuous Skip-gram Model)。他还包含两个提速手段:分层softmax和负采样

网络结构

cbow的图

网络结构包括三层:输入层、投影层和输出层

中心词 的前后共 个词的词向量 ,

是词向量的长度【这里就是词的个数,即词的one-hot向量】

将每个输入的词向量全连接为长度 的向量

然后将 个向量做求和累加,即

将 全连接为长度 的向量,最后用softmax作为激活函数,计算交叉熵损失

缺点:求softmax的时候需要对每个词、字向量都计算一遍输出概率并进行归一化,在几十万词汇量的语料上是令人头疼的

用哈夫曼树【一种带权路径长度最短的二叉树,也称为最优二叉树】按照词频组织词库中的所有词汇,每个词在都在树的叶子节点上,他们的权重由词频得来

word2vec(cbow+skip-gram+hierarchical softmax+Negative sampling)模型深度解析

word2vec中的数学

第二篇: 词向量之Spark word2vector实战

参考技术A word2vector 是google开源的一个生成词向量的工具,以语言模型为优化目标,迭代更新训练文本中的词向量,最终收敛获得词向量。词向量可以作为文本分析中重要的特征,在分类问题、标注问题等场景都有着重要的应用价值。本文总结下了spark word2vector使用过程中遇到的问题,以及给出word2vector使用所需的参数配置,希望能够减少新手在使用过程中遇到的坑,希望有所帮助。

from pyspark.ml.feature import Word2Vec
from pyspark.sql import SQLContext
from pyspark import SparkConf, SparkContext
from pyspark.sql import Row
conf = (SparkConf().set("spark.driver.maxResultSize","2g"))
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
text = sc.textFile("yourfilepath")
documentDF = text.map(lambda x : Row(text=x.split(" "))).toDF()
word2Vec = Word2Vec(vectorSize=200, minCount=5, numPartitions=100,inputCol="text", outputCol="result")
model = word2Vec.fit(documentDF)
vector_model = model.getVectors()
vector_model.saveAsParquetFile("modelpath")

spark-submit
--master yarn-client
--executor-cores 2
--executor-memory 14g
--queue your-queue
--num-executors 100
--driver-memory 10g
--conf spark.ui.port=$RANDOM
--conf spark.shuffle.manager=SORT
--conf spark.shuffle.memoryFraction=0.2
--conf spark.yarn.executor.memoryOverhead=2048
--conf spark.core.connection.ack.wait.timeout=300
--conf spark.akka.frameSize=600 ./word2vector_training.py

以上是关于第二节 获取词向量的工具——Word2Vec的主要内容,如果未能解决你的问题,请参考以下文章

Glove词向量

怎样用word2vec来得到某几个词的向量表示

word2vec词向量处理英文语料

基于pytorch实现word2vec

word2vec中一个词的向量代表啥?

词向量:GloVe