作为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安装(仅限库组件):

^{pr2}$

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和{}包含复制上述论文中讨论的类比和命名实体识别(NER)实验的代码。在

为了运行这个类比实验,假设^{}或{a4}以及{a5}都在一个数据目录中。在

为了运行命名实体识别实验,假设相应的^{}位于data/conll2003目录中。在

如果你有任何问题,请不要犹豫给我一个email当然,如果你发现任何错误或想贡献其他改进,拉请求是非常欢迎的!在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像