Word2Vec实现
一、Word2Vec是什么
二、主流实现方式
1.gensim
????Gensim是在做自然语言处理时较为经常用到的一个工具库 它支持包括TF-IDF,LSA,LDA,和word2vec在内的多种主题模型算法。
????对于word2vec模型,模型的输入是分完词的语料库,形式类似于list:
[?[‘我’,‘喜欢’,‘踢’,‘足球’], ? [‘罗纳尔多’,‘也’,‘喜欢’,‘踢’,‘足球’], ? [‘罗纳尔多’,‘是’,‘世界足球’,‘先生’] ]
至于如何得到分词结果,除了手工分词外,主要使用jieba分词,详情见下一节
分词后得到的语料库sentences,即可送入word2vec
model = word2vec.Word2Vec(sentences, hs=1, min_count=1, window=3, vector_size=100)
2.jiaba
Word2Vec调参
| |
---|
sentences | 可以是list(list的每一成员对应每行分词后的结果),对于大语料集,建议使用BrownCorpus,Text8Corpus或·ineSentence构建 | sg | 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法 | size | 是指特征向量的维度,默认为100。大的size需要更多的训练数据,但是效果会更好. 推荐值为几十到几百 | window | 表示当前词与预测词在一个句子中的最大距离是多少 | alpha | 学习速率 | seed | 用于随机数发生器。与初始化词向量有关 | min_count | 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5 | hs | Word2vec 经常采用 2 种加速方式,如果为1则会采用hierarchica·softmax技巧。如果设置为0(default),则negative sampling会被使用。 | negative | 如果>0,则会采用negativesampling,用于设置多少个noise words | cbow_mean | 如果为0,则采用上下文词向量的和,如果为1(defau·t)则采用均值。只有使用CBOW的时候才起作用 | hashfxn | hash函数来初始化权重。默认使用python的hash函数 | | | | |
缺点:
- 由于词和向量是一对一的关系,所以多义词的问题无法解决。
- Word2vec 是一种静态的方式,虽然通用性强,但是无法针对特定任务做动态优化
总结
提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
|