本帖最后由 Sen 于 2022-10-26 10:41 编辑
工作中需要统计很多项目之间的关联关系
目前想先通过项目名称匹配一下名字相似的项目
[Python] 纯文本查看 复制代码
import jieba
from gensim import corpora,models,similarities
doc0 = "2022年跨区购售合同与输电合同"
doc1 = "科研成果年报汇编相关工作"
doc2 = "北京是一个好地方"
doc3 = "上海好吃的在哪里"
doc4 = "第三季度经济运行分析工作"
doc5 = "上海是好地方"
doc6 = "上海路和上海人"
doc7 = "喜欢小吃"
doc8 = "2021年跨区购售合同与输电合同"
all_doc = []
all_doc.append(doc0)
all_doc.append(doc1)
all_doc.append(doc2)
all_doc.append(doc3)
all_doc.append(doc4)
all_doc.append(doc5)
all_doc.append(doc6)
all_doc.append(doc7)
all_doc.append(doc8)
result = []
for doc in all_doc:
count_dist = {}
for word in jieba.cut(doc):
# 循环所有项目
for tmp_doc in all_doc:
count_dist[tmp_doc] = 0;
for tmp_word in jieba.cut(tmp_doc):
# 如果这个词存在当前项目, 标记+1
if word == tmp_word:
print(doc, tmp_doc, word, tmp_word)
count_dist[tmp_doc] = count_dist[tmp_doc] + 1;
if count_dist[tmp_doc] < 2 :
del count_dist[tmp_doc]
#print(tmp_data)
print(count_dist)
print(count_dist)
接下来看网上的案例是要计算模型库, 我想跳过这一步
直接去匹配每个项目之间的词语重复次数, 然后输出出来
大佬们有没有简单点的方法
方案:
[Python] 纯文本查看 复制代码
from fuzzywuzzy import process
def pipeiMH(datas, testTxt):
dataList = datas.splitlines()
print(testTxt, process.extract(testTxt, dataList))
#return process.extractOne(testTxt, dataList)
datas = '''
2022年跨区购售合同与输电合同
2024年不跨区购买合同与输电合同
科研成果年报汇编相关工作
北京是一个好地方
上海好吃的在哪里
第三季度经济运行分析工作
上海是好地方
上海路和上海人
喜欢小吃'''
testList = ['我喜欢上海的小吃', '购售合同', '科研年报', '第三经济分析', '2021年跨区购售合同与输电合同']
for testTxt in testList:
pipeiMH(datas, testTxt)
# res, n = pipeiMH(datas, testTxt)
#print(f'{testTxt}\t匹配结果:{res}\t相似度:{n}') |