python - 如何用 Python 处理类似的符号?
问题描述
我有关键字列表及其相应的搜索量作为 CSV 文件。关键字是德语。一些关键字是唯一的,其他关键字的符号略有不同,如本例所示:
+--------------------------------------+-----+
| verkehrsrechtsschutz rückwirkend | 50 |
+--------------------------------------+-----+
| verkehrs-rechtsschutz rückwirkend | 50 |
+--------------------------------------+-----+
| familien rechtsschutzversicherung | 100 |
+--------------------------------------+-----+
| familienrechtsschutzversicherung | 100 |
+--------------------------------------+-----+
| privat rechtsschutz ohne wartezeit | 20 |
+--------------------------------------+-----+
| privater rechtsschutz ohne wartezeit | 20 |
+--------------------------------------+-----+
| rechtsschutzversicherung strafrecht | 80 |
+--------------------------------------+-----+
| strafrechtsschutz | 80 |
+--------------------------------------+-----+
| rechtsschutzversicherung gewerbe | 200 |
+--------------------------------------+-----+
| rechtsschutzversicherung gewerblich | 200 |
+--------------------------------------+-----+
| fahrer rechtsschutz | 160 |
+--------------------------------------+-----+
| fahrerrechtsschutz | 160 |
+--------------------------------------+-----+
| fahrer-rechtsschutz | 160 |
+--------------------------------------+-----+
类似的关键字通常具有相同的数量 - 但并非总是如此。
我正在寻找一种将所有具有相似符号的关键字移动到另一个文件中的方法。
我想,它可以用 Python 完成,但不知道,什么模块、包或库具有这种特殊的语言处理能力来识别相似的符号并决定彼此之间的关键字关系。
请指出我正确的方向。
更新:由于德语结构的原因,计算相似率的解决方案将产生大量的误报和误报。我想的是一种工具,它“了解”德语语言学并使用一种语言而不是字符串差异。也许像https://pypi.org/project/textblob-de/,https://spacy.io/models/de或来自https://github.com/adbar/German-NLP的东西
我已经在尝试一些计算字符串差异的工具——一些 VBA 和 Google App 脚本,它们都失败了。
解决方案
使用difflib 模块的 SequenceMatcher 类,您可以得到两个字符串的相似程度:
from difflib import SequenceMatcher
s1 = 'rechtsschutzversicherung gewerbe'
s2 = 'rechtsschutzversicherung gewerblich'
print( SequenceMatcher(a=s1, b=s2).ratio() ) # Prints 0.9253731343283582
s3 = 'fahrer rechtsschutz'
print( SequenceMatcher(a=s1, b=s3).ratio() ) # Prints 0.47058823529411764
推荐阅读
- javascript - 为什么 Ajax 代码不会在单击或加载时触发
- react-bootstrap - 为什么 Bootstrap 手风琴在 React 中不起作用?
- python - 无法排序条形图
- r - 在 RMarkdown for PDF 中使用 huxtable 标签
- php - php 中出现意外的回显错误。我不知道我的代码有什么问题,它说我的代码在第 20 行出现了意外的回显错误
- c# - Opera 驱动程序不支持使用 Selenium 的命令行标志
- google-sheets - 如何返回图像作为 google sheet 自定义函数的输出?
- javascript - 如何将相互依赖字段的 json 模式验证发送到 ajv npm 模块?
- versioning - 重新发布工件时,de 版本应该如何看待
- bash - 查询在 bash 中为 psql 返回 null