如何解决有没有办法在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 举报,一经查实,本站将立刻删除。