chatopera / Synonyms

:herb: 中文近义词:聊天机器人,智能问答工具包
https://bot.chatopera.com/
Other
5.02k stars 904 forks source link

两个意思相近的句子文本相似度计算没有gensim tfidf-model高 #35

Closed baishizhouwuyanzu closed 6 years ago

baishizhouwuyanzu commented 6 years ago

description

current

import synonyms sen1 = "控制人涉诉和被司法采取强制措施而长期滞留香港,该事件对公司经营影响难以确认" sen2 = "企业控制人因被指控和被司法采取强制措施而长期滞留香港,该事件对公司经营影响难以确认" r = synonyms.compare(sen1, sen2, seg=True)

print (r)

not exist in w2v model: 控制人 not exist in w2v model: 涉诉 not exist in w2v model: , not exist in w2v model: 控制人 not exist in w2v model: , 0.197

expected

sen1 = "控制人涉诉和被司法采取强制措施而长期滞留香港,该事件对公司经营影响难以确认" sen2 = "企业控制人因被指控和被司法采取强制措施而长期滞留香港,该事件对公司经营影响难以确认" gensim 句子相似度 0.92684400081634521

solution

environment

Windows

baishizhouwuyanzu commented 6 years ago

能否增加填加集外词的接口,比如控制人和涉诉这两个词

hailiang-wang commented 6 years ago

现在还不行,需要对增加语料,让语料有这两个词。另外,当前版本也是卡了词频,只保留了词频很高的词汇。 gensim 计算相似度,应该是对语料做了doc2vec,然后计算距离。我们还没有做doc2vec。

baishizhouwuyanzu commented 6 years ago

gensim是做了doc2vec,基于TF-IDF的model主要是根据词频计算相似度,但是这个不能识别同义词;基于LSI model的主题模型又容易把不相干的两个句子按主题给一个较高的相似度。 目前想尝试一下把您这个同义词词典加到gensim TFIDF包中,还未找到合适的方法。 初步尝试的是自己手工构建python dict类型的词典,若此词在词典的key中,则替换为同义词value的词。