今天在测试相似度算法的过程中,出现了一些问题,比如
('预付卡怎么设置
', '预付卡 设置', '预付卡怎么设置
', '预付卡 设置', 1.029370301661967)
('预付卡怎么设置
', '预付卡 设置', '怎么使用购物卡
', '使用 购物卡', 0.59755888783038)
('预付卡怎么设置
', '预付卡 设置', '购物卡怎么办理
', '购物卡 办理', 0.59755888783038)
('预付卡怎么设置
', '预付卡 设置', '不知道怎么激活预付卡
', '激活 预付卡', 0.5972514130863055)
明明 【激活 预付卡】跟【预付卡 设置】的相似度,要比【使用 购物卡】高,可是为什么反而低?
根本原因是因为 预付卡与购物卡过于相似,而设置与激活又有一定的相似词,所以出现这种情况
目前来说,需要调的参数
top n,既要分开相似词与相同词(topn尽可能高),又要让相似词尽量相似,又要尽可能的区分不相似词的不相似度
激活 预付卡
(array([ 71, 135, 235, 314, 326, 484, 579, 583, 693, 892, 923,
1120, 1132, 1138, 1184, 1370, 1440, 1513, 1867, 2196, 2417, 4352],
dtype=int64),)
购物卡 办理
(array([ 235, 314, 326, 579, 693, 892, 970, 1138, 1184,
1247, 1370, 1394, 1452, 1513, 2139, 2147, 2196, 2282,
2417, 2872, 3410, 13887], dtype=int64),)
使用 预付卡
(array([ 41, 58, 235, 257, 314, 326, 579, 596, 693, 747, 755,
906, 1138, 1184, 1370, 1551, 1867, 2055, 2196, 2368, 2920, 4352],
dtype=int64),)
我已经测试过词向量映射到句子向量了,是正确的