Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查字符串是否有拼写错误_C#_Wpf_String_Mapping_Match - Fatal编程技术网

C# 检查字符串是否有拼写错误

C# 检查字符串是否有拼写错误,c#,wpf,string,mapping,match,C#,Wpf,String,Mapping,Match,我有这样一种情况:我以字符串格式获取数据(地理区域名称)。(例如:-亚洲、澳大利亚)有时我也会获取具有多个区域的字符串(例如:-欧洲和非洲、北美和德国等)。这些区域的分隔符也不同,但区域保持不变(例如:亚洲和非洲、亚洲-非洲、亚洲/非洲等)。主要问题是这些数据可能不一致。它也有拼写错误。(例如:-太平洋/太平洋等) 现在,我需要将所有这些区域映射到一组桶中,但到目前为止,我必须手动完成这项工作。是否有一种方法可以至少在某种程度上自动映射这些字符串?我曾尝试使用soundex功能,但我决定不使用它

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

现在,我需要将所有这些区域映射到一组桶中,但到目前为止,我必须手动完成这项工作。是否有一种方法可以至少在某种程度上自动映射这些字符串?我曾尝试使用soundex功能,但我决定不使用它,因为美国或美国或美国显示不同,奥地利和澳大利亚显示相同


谢谢您的帮助

您想过使用(模糊)搜索引擎吗?(例如Lucene)

为此,我将做以下工作:

  • 每个区域创建一个文档,包含对所述区域有效的所有同义词。(确保每个同义词在整个索引中都是唯一的)
  • 根据多区域字符串的规则集对同义词进行标记(标点符号拆分应该是一个好的开始)
  • 使用相同的标记化规则在索引上搜索每个输入
  • 最后,你会得到一个顶级比赛的分数

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

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

    我会拼写检查

    从此处创建同义词
    数一数拼写错误的单词
    从最常见拼写错误的同义词开始

    您还可以使用levenshtein距离来查找类似的单词


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

    你怎么知道这些名字的?这是用户输入的问题,还是您从无法控制的源接收这些字符串?更正输入错误的数据不是开发人员的责任,而是开发人员的责任,在询问堆栈溢出问题之前,尝试自己的要求。请向我们展示您迄今为止的尝试。@Steve我们使用彭博数据。所以我们无法控制它。我们问过彭博社他们自己是否有办法,他们说他们提供数据的方式和提供给他们的方式一样。@Sheridan,就像我说的。我尝试过使用soundex方法和字符串差分方法。但是选择不使用它,因为它们不是傻瓜式的。那么,这是一个困难的场景。我现在唯一能想到的就是某种学习工具。假设两个表,一个带有规范化区域,另一个带有这些变量字符串,并用公共代码链接在一起。在变量表中搜索并查看是否有规范化版本,否则添加新字符串并要求手动协调。随着时间的推移,手动工作量应该会减少。(如果变化的数量不是无限的)谢谢你。。我来看看这个。此外,我知道100%映射是不可能的,但如果它能将我的手工工作减少50%,那就太好了。。干杯D您能否快速思考一下同义词的含义?您自己给出的同义词,例如“USA”、“美利坚合众国”可以被视为同义词,因此将被视为同一文档/物理区域。