Gensim

gensim官网 | sklearn官网 | spaCy官网 | keras官网 | keras - github | 百度ERNIE

nltk_data - github | gensim - github | spaCy - github | spaCy models | keras中文网


gensim快速指南

gensim教程

Topic Modeling with Gensim

主题模型(topic model)到底还有没有用

Topic Model(主题模型)实战

LDA TopicModel的评估

Python+gensim-文本相似度分析

spacy

cython编写的NLP库
pip install spacy
python -m spacy download en_core_web_sm

从github spacy model下载,并安装
pip install en_core_web_sm_3.00.tar.gz

word2vec在捕捉词汇之间的词法关系方面能力很强,但是生成的向量在很大程度上无法解释,并且很难表征文档。 
而另一方面,LDA可以被很好地被理解,但是不能像word2vec这样对本局部词汇关系进行建模。 
此时LDA2VEC应运而生,该模型可以构建词汇和文档主题,使其可解释。

在Gensim的算法,比如Word2Vec,Doc2Vec,FastText,TF-IDF,
潜在语义分析(LSI,LSA,see LsiModel),
隐含狄利克雷分布(LDA,见LdaModel), 随机投影(RpModel)等,
自动训练文档的躯体内检查统计共生模式发现的文件的语义结构。
这些算法是无监督的,这意味着不需要人工输入 - 您只需要一个纯文本文档。

word2vec

from gensim.models import word2vec

sentences = word2vec.LineSentence()
model = word2vec.Word2Vec('model.dat')
model.save()
model = word2vec.Word2Vec.load('model.dat')

wv.most_similar()
wv.similar_by_word()
wv.similarity()
wv.doesnt_match()
wv.predict_output_word()


word2vec.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, 
                  max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001,
                  sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=, iter=5, null_word=0,
                  trim_rule=None, sorted_vocab=1, batch_words=10000)

参数:
sentences:可以是一个list,对于大语料集,建议使用BrownCorpus,Text8Corpus或LineSentence构建。

sg: 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。

size:是指特征向量的维度,默认为100。大的size需要更多的训练数据,但是效果会更好. 推荐值为几十到几百。

window:表示当前词与预测词在一个句子中的最大距离是多少

alpha: 是学习速率

seed:用于随机数发生器。与初始化词向量有关。

min_count: 可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5

max_vocab_size: 设置词向量构建期间的RAM限制。如果所有独立单词个数超过这个,则就消除掉其中最不频繁的一个。每一千万个单词需要大约1GB的RAM。设置成None则没有限制。

sample: 高频词汇的随机降采样的配置阈值,默认为1e-3,范围是(0,1e-5)

workers参数控制训练的并行数。

hs: 如果为1则会采用hierarchical softmax技巧。如果设置为0(defaut),则negative sampling会被使用。

negative: 如果>0,则会采用negativesamping,用于设置多少个noise words

cbow_mean: 如果为0,则采用上下文词向量的和,如果为1(defaut)则采用均值。只有使用CBOW的时候才起作用。

hashfxn: hash函数来初始化权重。默认使用python的hash函数

iter: 迭代次数,默认为5

trim_rule: 用于设置词汇表的整理规则,指定那些单词要留下,哪些要被删除。可以设置为None(min_count会被使用)或者一个接受()并返回RU·E_DISCARD,uti·s.RU·E_KEEP或者uti·s.RU·E_DEFAU·T的函数。

sorted_vocab: 如果为1(defaut),则在分配word index 的时候会先对单词基于频率降序排序。

batch_words:每一批的传递给线程的单词的数量,默认为10000