def prefix_process(curr_index, sentence, score):
"""
?????????????
:param curr_index: w ? sentence ??????
:param score: ??????
:param sentence: ??
:return:
"""
num_cnt = 5
if curr_index - num_cnt > 0:
seg = sentence[curr_index - num_cnt:curr_index]
else:
seg = sentence[0:curr_index]
# ????????
for curr_neg_prefix in double_none_prefix:
if seg.endswith(curr_neg_prefix):
return 0.8 * score
# ????????
for curr_neg_prefix in set_neg_prefix:
if seg.endswith(curr_neg_prefix):
temp_pair = pseg.lcut(sentence[0:curr_index])
for i, (w, f) in enumerate(reversed(temp_pair)):
if f.startswith(u"x"):
break
elif f.startswith(u"r") or f.startswith(u"n") or f.startswith(u"m"):
if (len(temp_pair)-i-2) > 0 and temp_pair[len(temp_pair)-i-2].word in set_neg_prefix:
return 1.3 * score
return -1.3 * score
temp_pair = pseg.lcut(seg)
for i, (w, f) in enumerate(reversed(temp_pair)):
if f.startswith(u"x"):
break
elif f.startswith(u"r") or f.startswith(u"n") or f.startswith(u"m"):
if temp_pair[len(temp_pair)-i-2].word in set_neg_prefix:
return -0.6 * score
# ?????????????
for curr_very_prefix in set_very_prefix:
if seg.endswith(curr_very_prefix):
return 1.3 * score
return score
评论列表
文章目录