在几秒钟内将数千个类似的电子表格文本单元分组腾讯云开发者社区

这是一个常见的电子表格或数据库问题:

+-----+-------------------+|row|fullname|+-----+-------------------+|1|JohnF.Doe||2|Esquivel,Mara||3|Doe,JohnF||4|Whyte,Luke||5|Doe,JohnFrancis|+-----+-------------------+第1,3和5行可能指的是拼写和格式略有偏差的同一个人。在小型数据集中,可以手动清洁细胞。但是在庞大的数据集中呢?如何梳理成千上万的文本条目并将类似的实体分组?

理想情况下,有一种简单的方法来添加第三列,如下所示:

+-----+-------------------+---------------+|row|fullname|name_groups|+-----+-------------------+---------------+|1|JohnF.Doe|DoeJohnF||2|Esquivel,Mara|EsquivelMara||3|Doe,JohnF|DoeJohnF||4|Whyte,Luke|WhyteLuke||5|Doe,JohnFrancis|DoeJohnF|+-----+-------------------+---------------+好吧,那就是要做的事情。

TLDR:为此构建了一个工具。可以在此处安装Python模块。但是如果想了解这个工具背后的概念请继续阅读。

将讨论的主题:

在本教程中,将使用美国劳工部工资盗窃调查的这个数据集。它包含了从1984年到2018年由于最低工资或加班违规而对雇主进行的每次DOL调查。

数据包括一legal_name列,列出了被调查公司的名称。但是,输入格式变化很大:

+-----+----------------------+|row|legal_name|+-----+----------------------+|1|Wal-martInc||2|WalmartStoresInc.||3|Wal-martstoresInc||4|Wal-MartstoresInc.|+-----+----------------------+将对条目进行规范化和分组,legal_name然后使用组进行快速分析。

第一步:使用TF-IDF和N-Grams构建文档术语矩阵

在这里面临的最大挑战是,专栏中的每个条目都需要与其他条目进行比较。因此,一张400,000行的纸张需要400,0002的计算。

如果可以使用矩阵乘法进行同步计算会更快,可以使用文档术语矩阵,TF-IDF和N-Grams。

定义这些术语:

文件术语矩阵

文档术语矩阵本质上是BagofWords(BOW)概念的延伸,喜欢这个概念,因为它听起来就像是一个蒙面男子会在芝麻街偷窃的东西。

BOW涉及计算字符串中单词的频率。所以鉴于这句话:

“RhodeIslandisneitheraroadnorisitanisland.Discuss.”

可以生成这样的BOW表示:

+---------+-------+|term|count|+---------+-------+|rhode|1||island|2||is|2||neither|1||a|1||road|1||nor|1||it|1||an|1||discuss|1|+---------+-------+文档术语矩阵(DTM)将BOW扩展为多个字符串(或者在命名中,“多个文档”)。想象一下,有以下三个字符串:

DTM可能如下所示:

每个条目的值通过计算每个单词在每个字符串中出现的次数来确定。

上述方法的问题在于,诸如“the”,“is”和“if”之类的微不足道的词语往往比重要词语更频繁地出现,这可能会扭曲分析。

因此可以为它们分配TF-IDF分数,而不是计算单词,该分数评估每个单词对DTM的重要性。

TF-IDF

为了计算TF-IDF分数,将术语在单个文档中出现的次数(术语频率或TF)乘以术语对整个语料库的重要性(逆文档频率或IDF)-单词出现的文档越多在这个词中,人们认为这个词在区分文件方面的价值就越低。

重要的是,对于文档术语矩阵中的每个单词,如果用TF-IDF分数替换单词计数,可以在检查字符串相似性时更有效地权衡单词。

N元

最后将解决这个问题:

BurgerKing是两个字。BurgerKing应该是两个单词,但计算机会将其视为一个单词。因此,当计算文档术语矩阵时,这些术语将不匹配。

N-gram是一种将字符串分成较小块的方法,其中块N大小。所以如果设置N到3得到:

和:

它比原始字符串重叠得多。

因此当构建文档术语矩阵时,计算N-Grams的TF-IDF分数而不是单词。

最后一些代码:

以下是使用N-Grams构建文档术语矩阵作为列标题和值的TF-IDF分数的代码:

第10行从legal_name数据集的列中提取唯一值,并将它们放在一维NumPy数组中。

在第14行,编写了用于构建5个字符N-Grams的函数。使用正则表达式过滤掉一些字符。

第20行传递ngrams_analyzer给将用于构建矩阵的TF-IDF矢量化器。

最后在第23行,构建了文档术语矩阵。

稀疏与密集矩阵以及如何使计算机崩溃

上述代码的结果tfidf_matrix是压缩稀疏行(CSR)矩阵。

出于目的,要知道任何大多数零值的矩阵都是稀疏矩阵。这与大多数非零值的密集矩阵不同。

N-Grams矩阵有237,573行和389,905列。前10行和列如下所示:

这很稀疏。没有理由将所有这些零存储在内存中。如果这样做,就有可能耗尽RAM并触发一个MemoryError。

输入CSR矩阵,该矩阵仅存储矩阵的非零值和对其原始位置的引用。

重要的是CSR格式可以节省内存,同时仍允许快速行访问和矩阵乘法。

步骤二:使用余弦相似度计算字符串之间的接近度

余弦相似度是0和1之间的度量,用于确定类似字符串的长度,而不管它们的长度如何。

它测量多维空间中字符串之间角度的余弦。该值越接近1(余弦为0°),字符串相似度越高。

采取以下三个字符串:

并将它们放在文档术语矩阵中:

然后在多维空间上绘制此矩阵,其中每个维度对应于我们的四个术语之一。这可能看起来像这样:

如果看看点之间的距离,“Ilovedogs”和“Ihatecats”实际上比“Ilovedogs”和“Ilove…lovedogs”更接近彼此。

然而,如果看一下点线之间的角度-余弦距离-可以看到“Ilovedogs”和“Ilove…lovedogs”之间的角度远小于“Ilovedogs”之间的角度和“Ihatecats”。

因此字符串1和字符串2之间的余弦相似性将比字符串1和字符串3之间的余弦相似性更高(更接近1)。

这是一个更深入的解释。

在Python中计算余弦相似度

可以使用scikit-learn来计算余弦相似度。这将返回具有余弦相似度值的成对矩阵,如:

然后将通过相似性阈值(例如0.75或0.8)过滤此矩阵,以便对认为代表相同实体的字符串进行分组。

但是如果使用由INGBank的数据科学家构建的这个模块,可以在构建矩阵时按照相似性阈值进行过滤。该方法比scikit-learn更快,并返回内存密集度较低的CSR矩阵供使用。

所以在脚本中添加以下内容:

第三步:构建一个哈希表,将发现转换为电子表格中的“组”列

现在要构建一个Python字典,其中包含legal_name列中每个唯一字符串的键。

最快的方法是将CSR矩阵转换为坐标(COO)矩阵。COO矩阵是稀疏矩阵的另一种表示。

例如如果有这个稀疏矩阵:

+------------+|0,0,0,4||0,1,0,0||0,0,0,0||3,0,0,7|+------------+将其转换为COO矩阵,它会成为一个对象,具有三个属性-,,row-分别包含以下三个数组,:coldata

因此可以说值4(存储在matrix.data[0])的坐标是(0,3)(存储在(matrix.row[0],matrix.col[0])中。

构建COO矩阵并使用它来填充字典:

在第39-43行,遍历坐标矩阵,为非零值拉出行和列索引-记住它们都具有超过0.8的余弦相似性-然后将它们转换为它们的字符串值。

为了澄清,通过一个简单的示例进一步解开第39-43行。再次,取这个余弦矩阵:

如果使用awesome_cossim_topn阈值设置为0.8构建它,然后将其转换为COO矩阵,可以像这样表示:

继续这个例子,在所有的字符串通过之后add_pair_to_lookup,最终得到:

矢量化Panda

最后,可以在Pandas中使用矢量化功能,将每个legal_name值映射到GroupDataFrame中的新列并导出新的CSV。

由于Pandas函数可以同时对整个数组进行操作-而不是依次对各个值进行操作-因此这个过程非常快:

把它们放在一起:

剧透警报:这是沃尔玛。183项调查导致他们同意支付近4100万美元的拖欠工资。

最后一点

如果希望按两列或更多列而不是一列进行分组,则可以创建一个临时列,以便在DataFrame中对每个列连接成单个字符串的条目进行分组:

THE END
1.学生宿舍Excel表格模板下载熊猫办公网站共为您提供65个学生宿舍设计素材以及精品学生宿舍Excel表格模板下载,汇集全球精品流行的学生宿舍Excel表格完整版模板,下载后直接替换文字图片即可使用,方便快捷的不二选择。https://m.tukuppt.com/excelmuban/xueshengsushe.html
2.单位食谱安排表在现代生活中,随着人们对健康生活方式的追求,一份均衡的饮食变得尤为重要。然而,由于时间紧张和忙碌的工作生活,我们往往难以保证每天都能吃到既美味又营养丰富的饭菜。单位食谱安排表就像一位贴心的小厨师,它帮助我们规划好每天的餐点,让我们的饮食更有计划性,更容易实现营养平衡。 https://www.hgddesks.cn/mei-shi-gong-lve/554635.html
3.PHPExcel设置页边距格式颜色大小等phpexcel设置缩放比例4.6。 PHPExcel 17食谱 4.6.1。设置电子表格的元数据17 4.6.2。设置电子表格的活动板17 4.6.3。写日期或时间到单元格17 4.6.4。写了公式的单元格18 4.6.5。对式19区域设置 4.6.6。写在单元格中换行字符“\ n”(ALT +“回车”)20 4.6.7。明确设置单元格的数据类型20 https://blog.csdn.net/qq_39131177/article/details/83986932
4.表格制作教程forexcel轻松学电子表格轻松学Excel表格教程涵盖了excel2013,excel2010,excel2007工作学习中所有技巧和知识点,内容权威、图文并茂展示每步操作,一键收藏,完全免费,欢迎使用! Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和App…https://apps.apple.com/ca/app/%E8%A1%A8%E6%A0%BC%E5%88%B6%E4%BD%9C%E6%95%99%E7%A8%8B-for-excel-%E8%BD%BB%E6%9D%BE%E5%AD%A6%E7%94%B5%E5%AD%90%E8%A1%A8%E6%A0%BC/id1147959658?l=fr&see-all=developer-other-apps
5.数字怎么又跑掉了?Excel/Google电子表格三大常见“格式”问题要了解“数字乱掉”问题,首先我们要知道,在使用 Excel 和 Google 电子表格时,每一格数据,都会有一个对应的“单元格格式”,这些格式会影响系统怎么识别输入的数据,以及要以什么样的方式呈现。 以上面这张图来说,虽然两者纪录的值都是 1,但左方 Excel 单元格 A1 显示的 “1.00” 就是指定为“数值”格式;右方https://www.ragic.com.cn/intl/zh-CN/blog/431/common-issues-of-formatting-excel
6.巧用excel在word电子表格中插入数字序号许多朋友在用Word时可能会用到表格来阐述某个问题,而在编辑excel表的时候可能会在表格中插入序号,然而当你们在用键盘一个一个敲打数字时有没有觉得费时费力还麻烦?因此接下来就说一个用Excel在Word表格中插入数字序号的办法,希望对于有需求的朋友起到一些帮助以下内容是由微蓝经验网用户发布巧用excel在word电子表格中https://m.vlpos.com/a/0M/K8MC3G0M.html
7.www.ptzfcg.gov.cn/upload/document/20210630/3b2069a78aa74e4399.2投标人应在投标截止时间前按照福建省政府采购网上公开信息系统设定的操作流程将电子投标文件上传至福建省政府采购网上公开信息系统,同时将投标人的CA证书连同密封的纸质投标文件送达招标文件第一章第10条载明的地点,否则投标将被拒绝。 10、开标时间及地点:详见招标公告或更正公告(若有),若不一致,以更正公告(若有)http://www.ptzfcg.gov.cn/upload/document/20210630/3b2069a78aa74e4392197b2ef1c6b788.html
8.在电子表格MicrosoftExcel中,求数据的平均值可以用“常用函数刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供在电子表格Microsoft Excel中,求数据的平均值可以用“常用函数”的“Average”函数。A.正确B.错误的答案解析,刷刷题为用户提供专业的考试题库练习。一分钟将考试题Word文档/Excel文档/PDF文档转https://www.shuashuati.com/ti/6a01a5136d3d4fe388da83871b8a2d64.html?fm=bd4c56cff9799467149e98816759346711
9.营养师食谱表格.pdf文档介绍:该【营养师食谱表格 】是由【青山代下】上传分享,文档一共【7】页,该文档可以免费在线阅读,需要了解更多关于【营养师食谱表格 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..营养师https://m.taodocs.com/p-1071538832.html
10.伙食给养管理系统(物资出入库库存财务报表管理智能电子秤一体物资仓库仓储管理,原材料管理系统,物资原料出入库智能电子秤,超市物品管理、水果蔬菜称重销售智能电子秤一体机http://www.bjvvv.com/P0001/product.asp
11.72小时!2000+GPT分身上线,洗衣修车算命…引爆全民创作狂欢社交平台X(原推特)博主Nick Dobos自制了一个生GIF动图的助手,他先发送了一条“A cute kitty”的提示,Gif-PT会先创建几张图片,然后Nick点击分析,助手就会写代码分割电子表格,几秒钟之后就会显示已完成提示用户下载。如果用户对动图不满意,也可以发送“Debug”进行调试大小等。 https://zhidx.com/p/402622.html
12.[菜单表格]图片免费下载菜单表格素材菜单表格模板千图网为您找到8507张菜单表格相关素材,千图网还提供菜单表格图片,菜单表格素材, 菜单表格模板等免费下载服务,千图网是国内专业创意营销服务交易平台,一站式解决企业营销数字化、协同化,实现营销转化效果增长!https://m.58pic.com/tupian/caidanbiaoge.html
13.卷王都在用!100款宝藏级AIGC工具分享,强烈建议收藏!!Dover Autopilot是一款自动化招聘工具,招聘者只需输入简单的工作描述链接,它就能通过LinkedIn等求职网站的数据源在几分钟之内找到与岗位需求相匹配的求职者,还能自动生成针对候选人的个性化电子邮件。网页链接:dover.com/start3、ChefGPT:美食小白的食谱百科书这是一款AI食谱推荐工具,当用户输入手上现有的食材和工具,以及https://www.changbiyuan.cn/news/2023/news_0711/69335.html
14.一周食谱(表格版)(共2页)一周食谱(表格版)(共2页)2页 卖家[上传人]:des***85 文档编号:215912734 上传时间:2021-11-27 文档格式:DOC 文档大小:46KB最后一页预览完了!喜欢就下载吧,查找使用更方便 20 金贝 下载/ 2 举报 版权申诉 马上下载 下载提示 常见问题 1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,https://www.jinchutou.com/shtml/view-215912734.html