目标定位
目标在于评分而非语义相似度的计算,考虑政治新闻和史料题对命名实体要求严格,而且主观题评分的给分点也分布在这些实体上,如时间、任务、地点…… 但是要实现更广泛的任务,如地理、生物学科,它们对命名实体()的要求没有那么严格,此时就应该考虑文本的语义。总之,该问题还是归结为普通的主观题打分问题。
具体下一文补充
严格匹配
# -*- coding: utf-8 -*-
"""
Created on Fri Oct 29 21:27:06 2021
@author: DELL
"""
import textdistance
def SentencesSimilar(s1,s2):
#函数实现包含严格要求实体名称正确的情况,返回的值为连续值;
#解决了一个句子之间次序的问题 不能理解语义信息
# s1是学生答案;如果两个文本段长度相差太大应该转为局部匹配
mmax=-1;
len1=len(s1);
len2=len(s2);
if len1>2*len2:
i=0;
while i+len2<=len1:
mmax=max(textdistance.cosine(s1[i:i+len2],s2),mmax)
i=i+1
else:
mmax=textdistance.cosine(s1,s2)
return mmax
if __name__ == '__main__':
#MainFunc()
print(SentencesSimilar("物流系统是由物流作业系统和支持物流信息流动的物流信息系统两部分组成","物流信息系统"))
print(SentencesSimilar("物流系统是由物流作业系统和支持物流信息流动的物流信息系统两部分组成","快递信息系统"))
runfile(‘D:/大四下/cosine.py’, wdir=‘D:/大四下’)
1
runfile(‘D:/大四下/cosine.py’, wdir=‘D:/大四下’)
0.6666666666666666
引文:
http://theautomatic.net/2019/11/13/guide-to-fuzzy-matching-with-python/
基于语义相似度及命名实体识别的主观题自动评分方法