简单介绍一下基于TF-IDF计算句子相似度,并得到问题对应的答案过程:
- 准备好问题文件,答案文件,问题与答案一一对应,例如:
- 对问题文件进行分词、去停用词预处理操作
- 建立TF-IDF模型,计算所提问题与模板问题中相似度,将满足相似度问题对应的答案返回。关键代码如下:
from gensim import corpora, models, similarities
from preprocess_data import cut_stop_words
import numpy as np
import linecache
def similarity(query_path, query):
"""
:func: 计算问题与知识库中问题的相似度
:param query_path: 问题文件所在路径
:param query: 所提问题
:return: 返回满足阈值要求的问题所在行索引——对应答案所在的行索引
"""
class MyCorpus():
def __iter__(self):
for line in open(query_path, 'r', encoding='utf-8'):
yield line.split