首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较字符串以匹配品牌名称并删除拼写错误

比较字符串以匹配品牌名称并删除拼写错误
EN

Stack Overflow用户
提问于 2016-11-20 11:00:48
回答 1查看 1.6K关注 0票数 1

我有一个包含品牌名称的文本列表(可口可乐、百事可乐、7Up等)。我编写了一个python脚本,它对所有具有相同内容的单元格进行排序和计数(在小写的所有文本之后,完全相同的文本),并根据每个文本的计数对列表进行重新排序,这样出现最多的文本将是第一位的,因为我假设大多数人都会正确地写出品牌名称。例如,如果我有以下列表:

代码语言:javascript
复制
texts = ['Coca-Cola', 'Pepsi', 'Coca-Cola', 'Coca-Cola', 'Pepsi', 'Pespi', 'Pepsi', '7Up', '7up', 'Cola', 'Pepsi']

在第一步之后,清单将是:

代码语言:javascript
复制
ordered_text = [
   {'text': 'Pepsi', count: 4},
   {'text': 'Coca-Cola', count: 3},
   {'text': '7Up', count: 2},
   {'text': 'Cola', count: 1},
   {'text': 'Pespi', count: 1},
]  

在第二步中,我使用恩格拉姆包尝试匹配更接近的文本,以纠正拼写错误。重要的注意事项:我的主要要求之一是有一个与语言无关的解决方案。

我的问题是,NGRAM在长文本上工作得很好,但是在短文本上表现很差。例如,在运行时:

代码语言:javascript
复制
ngram.NGram.compare('Pepsi', 'Pespi')

其结果将是:

代码语言:javascript
复制
0.2727272727272727

这是一个非常低的‘分数’,但你可以看到,字符串是真的很接近,只有一个字母是错误的。

我能做些什么来提高我的欲望呢?我需要使用不同的算法吗?或者为这个测试指定不同的参数?我想添加一本字典,其中包含我找到的所有“新”单词,然后添加它们,然后我可以比较每个单词与它,但然后我失去了脚本的粒度。

EN

Stack Overflow用户

发布于 2016-11-20 11:27:59

从你的问题中可以看出,如果你想拼写-检查输入的正确性,或者你只想把它们分组。例如,如果您的输入看起来像['coka-cola', 'coak-cola', 'coca-coca'],那么您的算法应该做什么?

  • 它是否应该将它们都分组为{'coka-cola': 3}?意思是总是比较输入和第一次出现的情况?在这种情况下,编辑距离是有意义的,您可以很容易地找到许多python实现。
  • 它应该按照正确的拼写对它们进行分组,所以{'coka-cola': 3}?在这种情况下,你需要一个好的拼写校正器。这里有几个选项,您可以查看自动校正包,或者更复杂的解决方案,即NLTK包。另一个选择是使用谷歌。我不认为Google支持的API拼写正确,所以在向Google发出请求时,您必须进行一些刮取才能得到建议的结果。
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40703243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档