Word2Vec

╰+哭是因爲堅強的太久メ 2022-08-09 06:29 344阅读 0赞

Word2Vec

Word2Vec是将词表示为实数值向量的工具,并将对文本内容的处理转换为K维向量空间的向量运算。Word2Vec输出的词向量可以用来做NLP相关的工作,比如聚类、同义词、词性分析等。

1.向量空间上的相似度可以用来表示文本语义上的相似度。

2.词之间的关系可以直接从词向量之差中体现出来。

  1. C(king)−C(queen)≈C(man)−C(woman),如已知 a 之于 b 犹如 c 之于 d。现在给出 abc,看 C(a)−C(b)+C(c) 最接近的词是 d

使用

生成词向量,输入的文件为分词后的数据文件。

./word2vec -train data.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1

-cbow 0 不使用cbow模型,默认为Skip-Gram模型。

-size 200 词向量维度

-window 5 训练的窗口大小为5,考虑一个词前五个和后五个词语

-hs 1 不使用NEG方法,使用HS方法。

-sample 1e-3 采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。

-binary 1 结果二进制存储,为0是普通存储(普通存储的时候是可以打开看到词语和对应的向量的)

-alpha 设置学习速率,默认的为0.025

–min-count 设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃。

-classes 设置聚类个数。模型用得是k-means聚类算法。

计算词距离,word2vec计算的是余弦值,距离范围为0-1之间,值越大代表这两个词关联度越高,所以越排在上面的词与输入的词越紧密。

./distance vectors.bin

聚类,按类别排序

./word2vec -train data.txt -output classes.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes 500

sort classes.txt -k 2 -n > classes.sorted.txt

Word2VECJAVA使用

项目地址:https://github.com/NLPchina/Word2VEC\_java

训练模型

Learn lean = new Learn() ;

lean.learnFile(new File(“words.txt”)) ;

lean.saveModel(new File(“vector.mod”)) ;

使用模型

Word2VEC w2v = new Word2VEC() ;

w2v.loadJavaModel(“vector.mod”) ;

//近义词

w2v.distance(“xxx”);

//推测A-B+C

TreeSet result=w2v.analogy(A, B, C);

Word2Vec模型

word2vec使用的是Distributed representation 的词向量表示方式,这种向量的表示不是唯一的。

word2vec中包含了对两种模型的训练,CBOW词袋模型和Skip-Gram,在训练每种模型的时候又分为HS和NEG两种方法。

词向量的训练

基本上所有的训练方法都是在训练语言模型的同时,顺便得到词向量的。

发表评论

表情:
评论列表 (有 0 条评论,344人围观)

还没有评论,来说两句吧...

相关阅读

    相关 word2vec

    Word2Vec 是一种词嵌入模型,用于将文本中的单词映射到一个固定大小的向量空间中。它的主要目的是通过计算单词之间的相似度来增强自然语言处理的性能。Word2Vec 通常用于

    相关 word2vec介绍

    word2vec是一种将word转为向量的方法,其包含两种算法,分别是skip-gram和CBOW,它们的最大区别是skip-gram是通过中心词去预测中心词周围的词,而CBO

    相关 word2vec总结

    前几天实验室师姐问我之前有没有看过word2vec,这才想到去年暑假看过的word2vec,进来学习努力程度不是很够,虽然戒了游戏,但是显然有一个不愿学习的舍友对没有自控力的自