我正在使用Gensim训练Word2Vec。我知道词的相似性是由词是否可以在句子中互换并且仍然有意义来决定的。但是,词的相似性可以用来提取实体之间的关系吗?
例如:我有一堆访谈文档,每次访谈中被访者总是会提到他们经理的名字。如果我想从这些访谈记录中提取经理的名字,我可以先获取文档中所有人名的列表(使用自然语言处理技术),然后使用Word2Vec找到与“经理”这个词最相似的名字,这个名字最有可能是经理。
这种思路在使用Word2Vec时是否合理?如果不合理,那么解决这个问题的机器学习方案是否应该将我的词嵌入输入到序列到序列模型中?
回答:
是的,词向量的相似性和相对排列可以指示关系。
在最初的Word2Vec论文中,通过使用词向量来解决词类比问题展示了这一点。最著名的例子涉及到类比“‘男人’之于‘国王’如同‘女人’之于?”。
通过从‘国王’的词向量开始,然后减去‘男人’的向量,再加上‘女人’的向量,你会到达坐标系统中的一个新点。然后,如果你寻找接近那个新点的其他词,通常最接近的词会是queen
。本质上,方向和距离帮助找到了一个以特定方式相关联的词——一个性别反转的等价词。
而且,在大型新闻语料库中,像‘Obama’或‘Bush’这样的著名名字确实会与他们众所周知的职位标题如‘president’的向量更接近。(在这样的语料库中,这些词会有很多出现在一起的上下文——“President Obama today signed…”——或者仅仅是在相似的角色中——“The President appointed…”或“Obama appointed…”,等等。)
然而,我怀疑这种方法在你的‘经理’访谈记录示例中不太可能奏效。实现有意义的词到词的排列取决于大量在共享使用上下文中的多样化示例。强大的向量需要数百万到数十亿词的大型语料库。因此,仅有一个经理的访谈记录不太可能足以获得一个好的模型——你需要跨多个经理的访谈记录。
而且,在这样的语料库中,每个经理的名字可能不会与仅manager
类似的上下文强烈关联。相同的名字会在提到其他角色时重复出现,并且访谈记录可能不会特别以有助于第三人称的方式提及管理行为,使得特定名字的向量定位良好。(也就是说,不会有像“John_Smith called a staff meeting”,或“John_Smith cancelled the project,与其他如“…manager John_Smith…”或“The manager cancelled the project”这样的清晰说明性语句。)