【问题标题】:Check strings for any spell mistakes检查字符串是否有任何拼写错误
【发布时间】:2015-04-02 18:11:03
【问题描述】:

我遇到的情况是,我以字符串格式获取数据(地理区域的名称)。(例如:- 亚洲、澳大利亚)有时我还会获得包含 1 个以上区域的字符串(例如:- 欧洲和非洲、北部美国和德国等)。这些地区的分隔符也不同,但地区保持不变(例如:- 亚洲和非洲、亚洲-非洲、亚洲/非洲等)。主要问题是这些数据可能不一致。它也有拼写错误。(例如:- Pacific/Pasific 等)

现在我需要将所有这些区域映射到一组存储桶中,但到目前为止我必须手动执行此操作。有没有一种方法可以至少在某种程度上自动化这些字符串的映射?我曾尝试使用 soundex 功能,但我决定不使用它,因为 USA 或 U.S.A 或 United States 的显示方式不同,Austria 和 Australia 的显示方式相同。

感谢您的帮助

【问题讨论】:

  • 你是怎么得到这些名字的?这是用户输入的问题,还是您从某个您无法控制的来源接收这些字符串?
  • 开发人员有责任纠正错误输入的数据,但开发人员有责任尝试他们的在 Stack Overflow 上提出问题之前提出自己的要求。请向我们展示您到目前为止所做的尝试。
  • @Steve 我们使用彭博数据。所以我们无法控制它。我们询问了彭博社,他们自己是否有一种方式,他们说他们提供数据的方式与提供给他们的方式相同。
  • @Sheridan 就像我说的。我尝试过使用 soundex 方法以及字符串差异方法。但选择不使用它,因为它们不是万无一失的..
  • 嗯,这是一个困难的场景。我现在唯一能想到的就是某种学习工具。假设有两个表,一个具有规范化区域,另一个具有这些变量字符串,它们通过公共代码链接在一起。在变量表中搜索并查看是否有标准化版本,否则添加新字符串并要求手动协调它。随着时间的推移,手动工作量应该会减少。 (如果变化的数量不是无限的)

标签: c# wpf string mapping match


【解决方案1】:

我会拼写检查
spell check in code behind
从那里创建同义词
计算拼写错误的单词
从最常见的拼写错误的同义词开始

您也可以使用 levenshtein distance 来查找相似的单词

即使是英语,我也不推荐 soundex。

【讨论】:

    【解决方案2】:

    您是否考虑过使用(模糊)搜索引擎? (例如 Lucene)。

    为此,我将执行以下操作:

    1. 为每个区域创建 1 个文档,其中包含对该区域有效的所有同义词。 (确保每个同义词在整个索引中都是唯一的)
    2. 根据您对多区域字符串的规则集对同义词进行标记(在标点符号上拆分应该是一个好的开始)
    3. 使用相同的标记化规则搜索索引中的每个输入。

    最后,您将获得最高匹配分数。

    您可以使用 FuzzyQuery 处理拼写错误(例如,如果输入中允许错误),将编辑距离作为参数。

    请记住,无论您做什么,如果您无法控制输入的质量,您都会得到一些(阅读:可能很多)误报。

    【讨论】:

    • 非常感谢。我会检查一下。我也知道 100% 映射是不可能的,但如果它可以将我的手工工作减少 50%,那就太好了……干杯。 :D
    • 你能快速思考一下你所说的同义词是什么意思吗?
    • 你自己给的,例如“USA”、“United States of America”可以被视为同义词,因此将被视为同一个文档/物理区域。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    相关资源
    最近更新 更多