1词袋模型
from gensim import corpora
from gensim import models
from gensim import similarities
#from corpora.corpus import Corpus
# 1 分词
# 1.1 历史比较文档的分词
all_location_list = []
for doc in location_list:
doc_list = [word for word in jieba.cut_for_search(doc)]
# doc_list = [word for word in jieba.cut(doc)]
all_location_list.append(doc_list)
# 1.2 测试文档的分词
doc_test="A市A市经济学院体育学院"
doc_test_list = [word for word in jieba.cut_for_search(doc_test)]
# doc_test_list = [word for word in jieba.cut(doc_test)]
# 2 制作语料库
# 2.1 获取词袋
dictionary = corpora.Dictionary(all_location_list)
# 2.2 制作语料库
# 历史文档的二元组向量转换
corpus = [dictionary.doc2bow(doc) for doc in all_location_list]
# 测试文档的二元组向量转换
doc_test_vec = dictionary.doc2bow(doc_test_list)
# 3 相似度分析
# 3.1 使用TF-IDF模型对语料库建模
tfidf = models.TfidfModel(corpus)
# 获取测试文档中,每个词的TF-IDF值
tfidf[doc_test_vec]
# 3.2 对每个目标文档,分析测试文档的相似度
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))
sim = index[tfidf[doc_test_vec]]
# 根3.3 据相似度排序
sorted(enumerate(sim), key=lambda item: -item[1])
2TF-IDF
import jieba
from gensim import corpora,models,similarities
all_location_list = []
for doc in location_list:
doc_list = [word for word in jieba.cut_for_search(doc)]
all_location_list.append(doc_list)
# 制作语料库,获取词袋
dictionary = corpora.Dictionary(all_location_list)
corpus = [dictionary.doc2bow(doc) for doc in all_location_list]
# 使用TF-IDF模型对语料库建模
tfidf = models.TfidfModel(corpus)
#特征数
featureNUM = len(dictionary.token2id.keys())
#通过TfIdf对整个语料库进行转换并将其编入索引,以准备相似性查询
index = similarities.SparseMatrixSimilarity(tfidf[corpus],num_features=featureNUM)
#稀疏向量.dictionary.doc2bow(doc)是把文档doc变成一个稀疏向量,[(0, 1), (1, 1)],表明id为0,1的词汇出现了1次,至于其他词汇,没有出现。
doc_test= 'A市A市魅力之城商铺无排烟管道,小区'
doc_test_list = [word for word in jieba.cut_for_search(doc_test)]
# 测试文档的二元组向量转换
new_vec = dictionary.doc2bow(doc_test_list)
# 获取测试文档中,每个词的TF-IDF值
tfidf[new_vec]
#计算向量相似度
sim = index[tfidf[new_vec]]
print(sim)
for i in range(len(location_list)):
doc_test= location_list[i]
# w_ID = biaoge2_paqu.loc[i,'问题ID']
w_ID = biaoge2.loc[i,'问题ID']
if w_ID:
pass
else:
# p = biaoge2_paqu['问题ID'].max() + 1
# biaoge2_paqu.loc[i,'问题ID'] = p
# w1_ID = biaoge2_paqu.loc[i,'问题ID']
p = biaoge2['问题ID'].max() + 1
biaoge2.loc[i,'问题ID'] = p
w1_ID = biaoge2.loc[i,'问题ID']
doc_test_list = [word for word in jieba.cut_for_search(doc_test)]
# 测试文档的二元组向量转换
new_vec = dictionary.doc2bow(doc_test_list)
# 获取测试文档中,每个词的TF-IDF值
tfidf[new_vec]
#计算向量相似度
sim = index[tfidf[new_vec]]
for j in range

本文介绍了多种文本相似度计算方法,包括词袋模型、TF-IDF、余弦相似度、Python自带比较相似度函数、Word2Vec、JS距离及simtext库的使用,详细解析了每种方法的实现步骤与应用场景。
最低0.47元/天 解锁文章
1万+





