Word2Vec - 向向量表示添加约束

5
我正在尝试将预训练的Google News word2vec模型适应到我的特定领域。对于我所研究的领域,某些单词已知相似,因此在理想情况下,这些单词的Word2Vec表示应该反映出这种相似性。我了解到可以通过对特定领域数据的语料库进行训练来更新向量。
然而,如果我确定某些单词高度相似且应该放在一起,那么我是否可以将这个约束纳入word2vec模型中?从数学上讲,我想在word2vec的损失函数中添加一个项,如果我知道的两个单词在向量空间中没有靠近位置,则会提供一个惩罚。有人能给我实现这个方法的建议吗?这需要我打开word2vec模型吗,还是有办法将这个额外的项潜在地添加到损失函数中呢?
1个回答

3

一种方法是使用预先训练的Google News word2vec并使用这个“retrofitting”工具:

Faruqui, Manaal,Jesse Dodge,Sujay K. Jauhar,Chris Dyer,Eduard Hovy和Noah A. Smith。"Retrofitting word vectors to semantic lexicons." arXiv预印本arXiv:1411.4166(2014年)。https://arxiv.org/abs/1411.4166

本文提出了一种方法,通过鼓励相关单词具有相似的向量表示来使用语义词典中的关系信息来改进向量空间表示,并且不对输入向量的构造方式做任何假设。

代码可在https://github.com/mfaruqui/retrofitting上获得,并且易于使用(我个人已将其用于https://arxiv.org/abs/1607.02802)。


谢谢Franck。这非常有帮助。快速跟进:我尝试使用您分享的github链接上的代码,但似乎遇到了属性错误。您最近使用过它吗?能否分享如何解决此问题的指导?“AttributeError:'NoneType'对象没有'endswith'属性” - Ali
@Ali,您是否尝试运行 https://github.com/mfaruqui/retrofitting#running-the-program 中提供的示例?如果是,请尝试使用 Python 2.7,也许它不支持 Python 3。 - Franck Dernoncourt
我尝试在Python 3上运行这些示例,但无法使它们正常工作(遇到了我之前提到的错误)。我将尝试使用Python 2.7。谢谢! - Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接