关于Excel表操作-通过gensim实现模糊匹配
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、实现相似度查找
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')
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%的结果可信度还是比较高的
最后,谢谢关注,谢谢支持!
关于Excel表操作-通过gensim实现模糊匹配相关推荐
- 关于Excel表操作-通过Fuzzywuzzy实现模糊匹配
Fuzzywuzzy 是一款可以对字符串模糊匹配的工具, 它使用 Levenshtein Distance 来计算出那些易用包中序列之间的差异. Levenshtein Distance算法,又叫 E ...
- SilkTest 对 Excel 表操作的两种方式
SilkTest 对 Excel 表操作的两种方式 这两种方式都是对 SilkTest 运用的最基础的东西,我写得也比较简单.国内这方面的资料实在太少,对初学者可能有帮助. 方式一 : Data D ...
- robot framework循环读取excel表操作
robot framework循环读取excel表操作 1.安装excellibrary,注意python3.7版本,需安装:robotframework-excel,robotframework-e ...
- Excel表操作 将一列数据设为文本(单元格左上角标有绿色三角)
当Excel表导入的SQL数据库时,Excel表中的一列数据若不一致,如,那么在导入到数据库时,有部分数据会为NULL,(不报错,只是数据为NULL). 这时我们就需要把这一列数据都设为文本,但是只是 ...
- python读写excel表操作
安装xlrd模块 pip install xlrd或者去官网下载 使用 读取文件 file = xlrd.open_workbook("./sample.xlsx") 此时file ...
- 【操作篇】Excel中如何自定义搜索(模糊匹配)不再需要一个个勾选l啦!
在Excel筛选下,可以在每个项目前勾选选择项,如果勾选项有上万上千个,难道要从万千个选项种一个个挑出来筛选吗? 当然不必,学会通配符,按照自己想要的方式进行查找. 通配符 用法(表示) " ...
- xlwt对excel表的写入操作
xlwt对excel表的写入操作 一.本教程适用范围 二.对excel表的操作顺序图 三.对excel表操作 四.总结 一.本教程适用范围 操作系统:能安python所有操作系统 软件:python. ...
- Excel表的相关操作(笔记)
0.序言 关于LOOKUP,FIND,OFFSET等excel表操作的笔记. 1.excel往下拉复制横向数据 例子: 公式:OFFSET($S$26,1,V27,1,1) 用与数据++ R2 ...
- 【MySQL数据库系列】一、认识数据库、建库建表操作
文章目录 一.初识数据库 二.MySQL基本数据类型 三.MySQL基本逻辑运算符 四."数据库"的基本操作 五."表"的基本操作 一.初识数据库 数据库:能更 ...
最新文章
- python语言表白源码-python七夕浪漫表白源码
- Solaris 11的ip地址配置
- python求两个列表的并集.交集.差集方法
- tensor转list_tensorflow中ckpt转pb
- SSO [ OAuth2.0 ]
- C++的4种类型转换关键字及其特点
- fastapi 模式的额外信息,示例 / Cookie参数 / Header参数
- Linux Socket函数手册(二)
- python 根据开头时间戳 合并两个文件
- Android studio中常用快捷键
- mysql server 6.0_MySQL Server 6.0完全卸载以及卸载中遇到的问题
- 大数据:对大数据的理解
- 计算机利用if函数总评,Excel中IF函数的嵌套用法_
- 基于学术研究下载NOAA气象雷达资料的详细步骤
- 美食杰(个人主页编辑资料)
- ips细胞技术治疗尿毒症最新进展
- python用于财务数据分析_财务数据分析进阶之路
- 使用MfgTool工具进行系统烧写
- 高中计算机高效课堂和有效教学模式论文,高中班主任高效课堂教学模式的探究...
- thinkphp6实现微信V3服务商支付接口
热门文章
- 永磁同步电机转子磁链_混合式永磁同步电机转子磁路结构研究
- 微信逆向 hook 2.8.0.121 源码分享
- 通辽有计算机二级考点吗,2018通辽高考考点考场安排及设置
- 眉骨高者为大贵之相_面相:额头天庭骨起,大贵之相
- 中小学图书馆阅览室建设方案
- flask、element、vue项目实战:搭建一个加密excel数据的网站
- 如何使用python和opencv4实现照片长曝光效果呢?
- python中np.randon.rand()随机种子
- 国科大人工智能技术学院揭牌,第一批研究生正式入学
- android六边形imageview