微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法在python中的两个词之间强制相似性?

如何解决有没有办法在python中的两个词之间强制相似性?

我尝试使用word2vec,但是我想更改两个单词之间的相似性。优选地,不是一个一个地手动。我正在考虑的另一种选择是创建一个语料库,以强制正确的相似性,但是我不知道该怎么做。谢谢您的任何建议。

解决方法

为什么? Word2Vec使用大量的实际使用情况数据来创建单词向量,这些单词向量对于某些事情很有用,因为,它们可以准确地反映训练文本中的关系。

从某种意义上说,更改任何向量的位置都是微不足道的:只需将数组修改为所需的任何值,将其所有维数设为零即可!全部100.0!随便!

例如,如果您希望单词'apple''orange'具有相同的向量,并因此具有〜1.0相似性,则很容易将它们彼此更改。假设您已使用流行的Python Gensim库将Word2Vec模型训练到my_w2v_model中:

my_wv = my_w2v_model.wv
print(my_wv.similarity('apple','orange'))
my_wv['apple'] = my_wv['orange']
print(my_wv.similarity('apple','orange'))

但是,现在该模型对苹果/橙色的区别一无所知,'apple'向量现在将不再具有任何邻居或值,而不再是'orange'的确切同义词。

因此,由于这样的更改可能会破坏使用词向量的原因,因此,重要的是要知道您正在寻求什么样的更改以及希望获得的好处。

也许您想直接破坏最终价值,或者微调单词,或者其他。尤其是,如果您最想让单词保留与其他单词的关系,则需要进行更细微的更改。

在某些情况下,更改或扩展训练数据可能最有意义,以将模型训练移向您想要的相似之处。作为一个简单的示例,您可以考虑对数据进行预处理,以处理'apple'出现的每个文本,并以50%的概率用'apple'替换'orange'(对于{{反之亦然) 1}})。这往往会使训练文本中的两者混淆,从而导致高度相似的最终向量,每个最终向量仍然(受 unchanged 文本的影响)与原始单词非常相似/ word-neighbors。

(有了您的目标的更多详细信息,可能会有更具体的建议。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。