作为word2vec扩展的上下文编码器(ConEc)
conec的Python项目详细描述
上下文编码器(ConEc)
使用此代码,您可以训练和评估上下文编码器(ConEc),这是word2vec的扩展,它可以从大型语料库学习单词嵌入,当场创建词汇外嵌入,并根据单词的本地上下文区分单词的多个含义。 关于模型和实验的更多细节,请参考paper-当然,如果这些代码对您的研究有帮助,请考虑引用它:
@inproceedings{horn2017conecRepL4NLP,
author = {Horn, Franziska},
title = {Context encoders as a simple but powerful extension of word2vec},
booktitle = {Proceedings of the 2nd Workshop on Representation Learning for NLP},
year = {2017},
organization = {Association for Computational Linguistics},
pages = {10--14}
}
本守则旨在研究目的。它应该与Python2.7和3版本一起运行——尽管没有任何保证(如果发现bug,请打开问题)!在
安装
您可以从这里下载代码并在您的$PYTHONPATH
中包含conec文件夹,或者通过pip安装(仅限库组件):
conec库组件
依赖项:numpy, scipy
word2vec.py
:训练标准word2vec模型的代码,改编自相应的gensim实现。在context2vec.py
:从大量文本集合中构建稀疏上下文矩阵的代码;然后可以将该上下文矩阵与相应的word2vec嵌入相乘,得到上下文编码器嵌入:
# get the text for trainingsentences=Text8Corpus('data/text8')# train the word2vec modelw2v_model=word2vec.Word2Vec(sentences,mtype='cbow',hs=0,neg=13,vector_size=200,seed=3)# get the global context matrix for the textcontext_model=context2vec.ContextModel(sentences,min_count=w2v_model.min_count,window=w2v_model.window,wordlist=w2v_model.wv.index2word)context_mat=context_model.get_context_matrix(fill_diag=False,norm='max')# multiply the context matrix with the (length normalized) word2vec embeddings# to get the context encoder (ConEc) embeddingsconec_emb=context_mat.dot(w2v_model.wv.vectors_norm)# renormalize so the word embeddings have unit length againconec_emb=conec_emb/np.array([np.linalg.norm(conec_emb,axis=1)]).T
示例
其他依赖项:sklearn
test_analogy.py
和{
为了运行这个类比实验,假设^{
为了运行命名实体识别实验,假设相应的^{
如果你有任何问题,请不要犹豫给我一个email当然,如果你发现任何错误或想贡献其他改进,拉请求是非常欢迎的!在
- 项目
标签: