前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Excel表操作-通过gensim实现模糊匹配

关于Excel表操作-通过gensim实现模糊匹配

作者头像
python与大数据分析
发布2022-05-19 12:26:12
9670
发布2022-05-19 12:26:12
举报

gensim是一个Python的自然语言处理库,能够将文档根据TF-IDF,LDA,LSI等模型转换成向量模式,此外,gensim还实现了word2vec,能够将单词转换为词向量。

gensim的一些常见概念:

语料Corpus: 一组原始文本的集合,用于无监督地训练文本主题的隐层结构,语料中不需要人工标注的附加信息。在Gensim中,Corpus通常是一个可迭代的对象(比如列表)。每次迭代返回一个可用于表达文本对象的稀疏向量。

向量Vector: 由一组文本特征构成的列表,是一段文本在Gensim中的内容部表达。

稀疏向量SparseVector: 通常 我们可以略去向量中多余的0元素,此时向量中的每一个元素是一个(key,value)的tuple.

模型Model: 是一个抽象的术语,定义了两个向量空间的变换(即从文本的一种向量表达变换为另一种向量表达)

下面为相关代码,代码结构和前面的Fuzzywuzzy是类似的,不过执行起来,效率是前者的几十倍上百倍。

关于本文的步骤:

1、读取Excel表格

2、进行jieba分词

3、构建语料字典

4、通过doc2bow转换为稀疏向量

5、构建TfidfModel模型,进行训练

6、实现相似度查找

代码语言:javascript
复制
from gensim import corpora, similarities, models
import jieba
import pandas as pd
import datetime
filename=r'C:\Users\baoqi\Documents\比较清单.xlsx'
targetfilename=r'C:\Users\baoqi\Documents\目标文件.xlsx'
# A比B多   21409  CONT_NAME
# B比A多   3236   HTMC
# ---------------------------写入财务域比资产域多的非物资合同补充列-------------------
data = pd.read_excel(filename,sheet_name='B比A多',engine='openpyxl')
代码语言:javascript
复制
find= pd.read_excel(filename,sheet_name='B比A多',engine='openpyxl')

data_split_word = data.CONT_NAME.apply(jieba.lcut)
dictionary = corpora.Dictionary(data_split_word.values)
data_corpus = data_split_word.apply(dictionary.doc2bow)
find_corpus=find.HTMC.apply(lambda  x:dictionary.doc2bow(jieba.lcut(x)))
tfidf = models.TfidfModel(data_corpus.to_list())
index = similarities.SparseMatrixSimilarity(
    tfidf[data_corpus], num_features=len(dictionary))
result = []
for corpus in find_corpus.values:
    sim = pd.Series(index[corpus])
    result.append(['\t'.join([str(s) for s in data.CONT_NAME[sim.nlargest(2).index].values]), '',
                   '\t'.join([str(s) for s in sim.nlargest(2).values]), ''])
result = pd.DataFrame(result)
result.rename(columns={0:'匹配值1',1:'匹配值2',2:'阈值1',3:'阈值2'}, inplace=True)
result = pd.concat([find, result], axis=1)

writer = pd.ExcelWriter(targetfilename, mode="w", engine="openpyxl")
result.to_excel(writer,index=False,sheet_name='匹配值')
writer.save()
writer.close()

通过实际测试,阈值70%的结果可信度还是比较高的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档