count = count1+count2-count_unimportant_union*10
这个10需要调参。因为我们TOPN取的是10,所以如果两个词完全相同,正常情况下会有22个非0值。
(
计算基础相似度,用来平衡长句子与短句子之间匹配的时候,短句子本身占有巨大的优势。
基础相似度代表了:如果两个句子,他们进行ONE-HOT映射之后,非零元素都不一样,且都为1,他们依然会有一个基本的相似度。这时的欧氏距离就是
(count1+count2)开根号,再进行相似度计算。对于一些不重要的词,再用基础相似度进行调整。
)
我们为了消除这两个词的相同时,他们在计算basesimilarity的时候会很有优势。
所以我们进行惩罚。如果取22,就相当于把这个词作为停用词去掉,我们也不希望这么极端,所以目前先取中间值10。后续看需求再调整。
k_weight = 0.6 # 可以修改,也可以再字典里添加权值
u_weight = 0.13 #本来是设为负数,发现如果这样的话,那不重要的词贡献的欧式距离就很少,会出现一个问题是如果一个问题只有不重要词,就很容易匹配到,所以调整为0.13(但是依然小于1)
如果加起来大于1,就是增加重要性,如果相加依然小于1,就是减小重要性。
并且,我们如果做两个句子的交集,这个交集跟非重要词再相交,发现有这个词,我们在计算基础相似度的时候,就进行一定的惩罚。
同理,我们也可以对重要词这么做,如果两个句子相交,再跟重要词相交,发现有这个词,我们就进行一定的鼓励。但是这个还不尝试,可能有未知的风险。因为不重要的词很少,风险可控,可是重要的词却很多。