本文主要是介绍【python 走进NLP】两两求相似度,得到一条文本和其他文本最大的相似度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
应用场景:
一个数据框里面文本,两两求相似度,得到一条文本和其他文本最大的相似度。
content source_id
0 丰华股份军阀割据发生的故事大概多少w 1
1 丰华股份军阀割据发生的故事大概多少 2
2 丰华股份军阀割据发生的故事大概多少 3
3 丰华股份军阀割据发生的故事大概多少 4
4 丰华股份军阀割据发生的故事大概多少 5
一开始数据框是这样子,要计算 第一行文本和第二行文本,第三行文本,第四行文本,第五行文本的相似度,并求最大,以此类推。
这其实是个排列问题,先要数据排列,再处理数据。
希望得到如下结果:
content source_id max_similar
0 丰华股份军阀割据发生的故事大概多少w 1 0.9444
1 丰华股份军阀割据发生的故事大概多少 2 1.0000
2 丰华股份军阀割据发生的故事大概多少 3 1.0000
3 丰华股份军阀割据发生的故事大概多少 4 1.0000
4 丰华股份军阀割据发生的故事大概多少 5 1.0000
# -*- encoding=utf-8 -*-
import pandas as pd
from itertools import permutationsfrom 文本防刷系统.text_anti_brush_function import *
content_list=['丰华股份军阀割据发生的故事大概多少w','丰华股份军阀割据发生的故事大概多少','丰华股份军阀割据发生的故事大概多少','丰华股份军阀割据发生的故事大概多少','丰华股份军阀割据发生的故事大概多少']source_id_list=['1','2','3','4','5']
data1=pd.DataFrame({'content':content_list,'source_id':source_id_list})print(data1)
test_data=dict(data1['content'])
print('排列有:')
max_similar_list = []
k1=[]
k2=[]
for i,j in permutations(test_data, 2):similar=lcs_similarity(str(data1.iloc[i,0]),str(data1.iloc[j,0]))print(i,j,data1.iloc[i,0],data1.iloc[j,0],similar)k1.append(i)k2.append(similar)data3=pd.DataFrame({'k1':k1,'k2':k2})
print(data3)# 分组取最大相似度
data3 = data3.groupby(['k1'], as_index=False)['k2'].max()print(data3)
# 新增一列相似度
data1['max_similar']=data3['k2']print(data1)
E:\laidefa\python.exe F:/文本标签/文本防刷系统/相似度.pycontent source_id
0 丰华股份军阀割据发生的故事大概多少w 1
1 丰华股份军阀割据发生的故事大概多少 2
2 丰华股份军阀割据发生的故事大概多少 3
3 丰华股份军阀割据发生的故事大概多少 4
4 丰华股份军阀割据发生的故事大概多少 5
排列有:
0 1 丰华股份军阀割据发生的故事大概多少w 丰华股份军阀割据发生的故事大概多少 0.9444
0 2 丰华股份军阀割据发生的故事大概多少w 丰华股份军阀割据发生的故事大概多少 0.9444
0 3 丰华股份军阀割据发生的故事大概多少w 丰华股份军阀割据发生的故事大概多少 0.9444
0 4 丰华股份军阀割据发生的故事大概多少w 丰华股份军阀割据发生的故事大概多少 0.9444
1 0 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少w 0.9444
1 2 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
1 3 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
1 4 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
2 0 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少w 0.9444
2 1 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
2 3 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
2 4 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
3 0 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少w 0.9444
3 1 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
3 2 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
3 4 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
4 0 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少w 0.9444
4 1 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
4 2 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0
4 3 丰华股份军阀割据发生的故事大概多少 丰华股份军阀割据发生的故事大概多少 1.0k1 k2
0 0 0.9444
1 0 0.9444
2 0 0.9444
3 0 0.9444
4 1 0.9444
5 1 1.0000
6 1 1.0000
7 1 1.0000
8 2 0.9444
9 2 1.0000
10 2 1.0000
11 2 1.0000
12 3 0.9444
13 3 1.0000
14 3 1.0000
15 3 1.0000
16 4 0.9444
17 4 1.0000
18 4 1.0000
19 4 1.0000k1 k2
0 0 0.9444
1 1 1.0000
2 2 1.0000
3 3 1.0000
4 4 1.0000content source_id max_similar
0 丰华股份军阀割据发生的故事大概多少w 1 0.9444
1 丰华股份军阀割据发生的故事大概多少 2 1.0000
2 丰华股份军阀割据发生的故事大概多少 3 1.0000
3 丰华股份军阀割据发生的故事大概多少 4 1.0000
4 丰华股份军阀割据发生的故事大概多少 5 1.0000Process finished with exit code 0
这篇关于【python 走进NLP】两两求相似度,得到一条文本和其他文本最大的相似度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!