mysql 短文本相似度_短文本相似度比较

本文介绍了在小学数学试题场景下,如何利用相似度算法进行试题匹配。通过对OCR识别的试题进行正则过滤,使用余弦相似度、Jaccard相似指数和Jaro-Winkler距离计算相似度,结合算法平均值得出最终结果。
摘要由CSDN通过智能技术生成

Background:由于针对的场景是小学数学,学生做完试题,拍照,上传,OCR做试题的图片识别,再传到NLP这块做快速题目切分。小学数学题内容相对简单,基本都是加减乘除的计算,内容长度相对较短,所以属于短文本相似度比较。

相似度比对流程对输入OCR试题列表,进行正则过滤,去掉哪些明显不是文章题目,例如题目内容或者是试卷头部和尾部的内容;

与原题进行比对,这里涉及相似度比较

筛选可确定的题目

这里主要做的是同试卷的比较,所以文本信息比较短。

最好的办法其实还是做语义分析,通过理解语义做相似度计算;由于我们的OCR识别结果一般,对试题做分词的时候有许多问题,所以没有选择分词的算法。

选取的相似度比对算法

def cosine_similarity(s1='', s2=''):

return float(np.dot(s1, s2) / (np.linalg.norm(s1) * np.linalg.norm(s2)))

def convert_to_vector(self, s1, s2):

l = len(s1)

s2 = s2[: l + 2] if l < 10 else s2[: l + 4]

word = list(set([o for o in s1] + [o for o in s2]))

total = len(word)

word_vector1 = np.zeros(total)

word_vector2 = np.zeros(t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值