微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从熊猫数据框中的名称列表中查找相似的子字符串

如何解决从熊猫数据框中的名称列表中查找相似的子字符串

我正在处理数据分类问题。总而言之,我有一个 Pandas 系列字符串,我需要找到包含在另一个更长字符串系列中的相似子字符串。

更长的版本:这个问题的一半非常典型,我已经解决了。我在 Pandas 中有几个数据框(在 100 到 2000 行之间),带有文档文件名,文档文本(见下文)作为给定的列。我必须弄清楚(从 2 个预设列表中),文档类别是什么,文档属于什么产品。文档类别在数据帧中保持不变,但每个新数据帧都有一个新的产品列表。我已经使用我构建的一些正则表达式字典或多或少地使文档类别工作正常,但我不知道如何使产品名称匹配。

只有大约 30% 的文档文本具有与产品列表完全匹配的子字符串,其余的文档中的名称与列表中的名称之间至少有一些细微的差异(例如列表中的名称)可能是 Syntave,在文档中可能是 Sin Tave、Sintave 或 Syn Tave)。存在拼写错误、OCR 错误和命名条件差异,这并不奇怪。

以下是一些示例产品名称

产品名称
CompA5s
Comp A6s

以及典型数据框中的几行:

文档名称 文档文本 文档类别 产品
prodInfocomp.pdf 这是 compA 5 系列产品的产品信息表,创建于 2012 年 5 月 3 日 产​​品信息
glutenCompA5.pdf CompA 5s 是在不含麸质或麸质产品的设施中生产的。没有小麦、黑麦或谷物与本产品接触 麸质
glutenCompA6.pdf Comp A 6s 是在不含麸质或麸质产品的设施中生产的。没有小麦、黑麦或谷物与本产品接触 麸质
WaterOrigin.pdf 我们位于纽约布鲁克林绿点的工厂生产水。美国制造 起源
水杂质.pdf Wter 不含任何重金属或纳米颗粒,它是在干净的设施中生产的。 杂质

这些文本片段应按顺序匹配:CompA5s、CompA5s、Comp A6s、Comp A6s 和 Water。

我尝试将文本分解为 ngrams/较小的子字符串,遍历这些子字符串并使用模糊模糊或 tf-idf 与产品名称列表进行匹配,并保持任何匹配的置信度超过 70%。但是,对于 100-200 个产品名称和 100-2000 行的数据框,该方法通常运行非常缓慢,并且在完成时不会获得很好的结果。有没有人可以为这个应用程序推荐任何库或方法?这不需要是完美的,即使是 60-70% 的准确度也是一个很大的进步。谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。