这个方法就是将短文本切分成与词库数据等长的词,判断是否包含。速率块,词与词包含关系判断也可用
代码复制直接用:
'''
判断一条语句是否包含词库中的词
'''
def word_parameter(word_list):
'''包含关系方法所需的词典'''
word_set = set(word_list)
num_list = [len(word) for word in word_set if len(word)>0]#词库字数
num_list = list(set(num_list))#词库字数去重[2,3,4]
return word_set,num_list
def slice_len(s,n):
'''截取字符串中固定长度的所有词'''
result_list = []
length = len(s)
for i in range(0,length):
if i < length-n+1:
result_list.append(s[i:i+n])
return result_list
def mycon(s,word_list):
'''词库可能字数的词全部切分且与词库比较'''
word_set,num_list = word_parameter(word_list)
temp_list = []#所有切分词
for num in num_list:
temp_list.extend(slice_len(s,num))
temp_list1 = list(set(temp_list) & word_set)#求交集
return sorted(temp_list1,key=len,reverse=True)
stand_list = ['你好','前面','文圣路']
s = '问:你好,请问前面的路是文圣路吗。答:是的,前面就是文圣路'
mycon(s,stand_list)