赞
踩
通过阅读相关论文,总结实现的大致思路:(论文原文链接:https://www.docin.com/p-1845286785.html)
先设学生给出的答案和标准答案均为两段中文段落,我们的目的是计算出这两个中文段落的相似度,而中文文本一般由段落组成,段落根据标点符号可以划分成句子,句子根据分词可以划分成词汇,由此根据两个句子中词汇的相似度计算出句子的相似度,再根据句子的相似度计算出段落的相似度,然后根据段落的相似度计算出文本的相似度。
首先将句子通过分词划分成多个词语的集合,并通过停用词表去掉没有意义的词语,设两个句子S1和S2分词后的词语集合分别为S1:{W11,W12,.....W1m}和S2:{W21,W22,.....W2n},由此得出两个句子的相似度矩阵MS,其中W1iW2j是句子S1中的词语W1i和句子S2中的词语W2j的相似度。
在计算句子相似度时,首先取矩阵中的最大值MS1放入序列maxMS中,然后将此最大值所在的行和列删除,形成新的矩阵,重复此过程直到矩阵为空,得到最大值序列maxMS。则两个句子的相似度可以通过对maxMS求合并除以S1,S2词语长度的较大值得到。
而为了计算两个词语的相似度,可以通过python的gensim包实现,但实践的时候发现效果并不理想,它创建的模型可能是基于统计的方法而非语义理解,所以暂时先用序列对匹配算法直接进行文本的匹配,从而得到两个文本或词语的相似值,后面再用其他方法替换序列对匹配算法对词语进行相似度匹配,序列对匹配算法实现如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。