应用场景:
①信息检索,通过相似度识别相似的词语,找出与检索词语相似的结果。
②自动问答,通过关键词进行搜索问题,相似程度最高的问题对应的答案即被响应。
处理对象:
已经做好分词准备的List,做对比的关键词keyword
【例如】list为歌名-歌词,keyword为海、鱼
List = ["《美人鱼》-我也可以为你潜入海里面",
"《秋刀鱼》-秋刀鱼的滋味",
"《飞鱼》-这海我都聆听过",
"《可不可以》-我可以带你去吃很多,很多好东西",
"《珊瑚海》-不是浪而是泪海,海鸟跟鱼相爱",
"《仰泳的鱼》-我就如仰泳的鱼,在大海中"]
keyword =["海","鱼"]
"""分词后如下"""
[['美人','鱼', '潜入', '海'],
['鱼', '鱼', '滋味'],
['鱼', '海', '聆听'],
['可不可以', '带你去', '吃', '好东西'],
['珊瑚', '海', '浪', '泪海', '海鸟', '鱼', '相爱'],
['仰泳', '鱼', '仰泳', '鱼', '海']]
1、 需要的包
from gensim.similarities import SparseMatrixSimilarity
from gensim.corpora import Dictionary
from gensim.models import TfidfModel
2、流程
3、代码
def similar_result(sentence,key):
# 1、基于文本集建立词典,并获得词典特征数
all_dict = sentence
content_dict = Dictionary(all_dict)
# 2、基于文本集建立词典,并获得词典特征数
num_features = len(content_dict.token2id)
# 3.1、基于词典,将分词列表集转换成稀疏向量集,称作语料库
corpus = [content_dict.doc2bow(sen) for sen in sentence]
# 3.2、同理,用词典把搜索词也转换为稀疏向量
kw_vector = content_dict.doc2bow(key)
# 4、创建TF-IDF模型,传入语料库来 训练
tfidf = TfidfModel(corpus)
# 5、用训练好的TF-IDF模型处理被检索文本和搜索词
tf_texts = tfidf[corpus]
# 此处将语料库用作被检索文本
tf_kw = tfidf[kw_vector]
sparse_matrix = SparseMatrixSimilarity(tf_texts, num_features)
similaritie = sparse_matrix.get_similarities(tf_kw)
result = []
for e, s in enumerate(similaritie, 1):
result.append(s)
return result
输出:[0.24081758, 0.08178492, 0.24081758, 0.0, 0.1102856, 0.14327577]