我正在使用Word2Vec模型从我的数据中创建一个向量化器。我的数据包含自定义/业务定义的同义词列表,我希望我的NLP模型能够考虑这些同义词。例如,如果”A”是”B”的同义词,那么当我使用Word2Vec查找”A”的同义词时,它应该以100%的匹配度返回”B”。
只要能满足上述要求,我也可以尝试使用其他NLP模型。
回答:
由于你的同义词列表非常小,我建议你先训练你的模型,然后遍历你的同义词列表,在模型中重新分配每个同义词的词向量(并添加训练数据中不存在的任何词)。当然,这会破坏关于学习到的词向量的任何信息,这取决于你的使用场景,可能会成为一个问题。
一些替代方法:
- 将词向量重新分配为其组成同义词的复合体(例如,平均值)。不幸的是,这在你的同义词已经具有相似向量的情况下效果最好,我假设这不是你的情况。一般来说,这可能会丢失更多的语义信息而不是保留的多。
- 将同义词作为重复词添加(即,一个给定的词将有两个向量,一个是从训练数据中推断出来的,另一个等于它的同义词)。这保留了语义关系,但在需要使用可能有同义词的向量进行计算时会产生歧义。这有多大问题取决于你的使用场景。
- 对你的词嵌入应用投影,受某些约束(同义词等同性)。我从未尝试过这种方法,所以我不确定它对你的模型有什么影响,计算难度如何,或者你需要优化什么目标函数。
- 预处理你的文本。是的,这需要一些时间,但如今计算成本低廉。