【发布时间】:2021-07-30 12:49:56
【问题描述】:
给定两个文本,例如:“可口可乐”和“可口可乐”,是否有一种方法可以推广到其他品牌和其他文本来检测这两个文本是否与同一品牌相关?
现在我有这个简单的代码:
def matches_company_name(name1: str, name2: str):
name1_lower_case = name1.lower()
name2_lower_case = name2.lower()
return (
name1_lower_case in name2_lower_case
or name2_lower_case in name1_lower_case
)
我有几个想法要添加到可能的测试中:
- 进行 POS 标记并比较 ORG
- 用空格或破折号分隔,并检查是否是共同的部分。 (可能对一般人来说)
- 设置某种编辑距离阈值(对于长度差异很大的字符串可能会失败)
是否已经有办法实现这一目标?您有什么好的想法(启发式方法)可以添加到测试中吗?
【问题讨论】:
-
Stack Overflow 不太适合开放式问题(“哪种算法最能实现目标 X?”)——我们的格式最适用于狭窄且符合规范正确答案的问题。
-
@CharlesDuffy 应该在哪里发布此类问题的最佳论坛?让我重新表述这个问题,我只想要一个可以完成这项工作的算法。我不在乎它是否是最好的
-
您可以查看Levenshtein 距离,在此module 中实现。这是字符串之间相似性的度量。维基百科还提到了其他方法。
-
如果将它们放在同一个大小写中并删除所有标点符号,这样就够了吗? (如果不知道就可能无法检测出可口可乐和可口可乐是相同的。)
-
您可以按声音而不是文本进行索引:en.wikipedia.org/wiki/Soundex