2008-11-05 128 views
6

我认为这个问题比简单的拼写检查更容易,因为与所有已知的英语单词相比,美国城市列表很小。拼写检查城市名称?

总之,这里的问题: 我的文本文件全城的名字;其中有些拼写正确,有些拼写不正确。

我可以用什么样的算法来纠正城市名称的所有拼写错误?

+0

你能发表一个例子吗?可能是同一个城市的正确名称和不正确名称的样本? – shahkalpesh 2008-11-05 03:41:36

回答

7

你真的需要更正拼写错误,或只是它们标记为与正常拼写检查?如果是后者,您只需要获取正确拼写的列表,并确保每个名称与列表中的名称相同。

如果您想要实际更正它们,您可能希望使用edit distance的概念来比较拼写错误的字符串与参考列表中的字符串的相似性。然后,您可以用最接近的匹配替换拼写错误的单词。您也可能想要处理目标城市不在您的列表中的可能性。

Levenshtein distance维基百科的文章是另一个很好的资源。

+0

我需要纠正它们。 – 2008-11-05 03:42:15

+0

是的,我认为编辑距离的想法是正确的方法。无论如何,当我开始这件事时,这就是我所推崇的。 – 2008-11-05 04:47:39

-3

如果出现同样的城市名在文件中多次可以使用每个城市的名称和标志,只出现一次的一个的发生次数。

+0

城市可能只出现一次,并且拼写正确。 – 2008-11-05 03:43:02

3

首先将正确的城市名称加载到数组中,然后遍历文件中的城市名称。通过查看它是否在正确名称的数组中,检查当前城市名称是否拼写正确。如果它不在数组中,请尝试将拼写错误的单词的SoundexMetaphone值与正确名称数组中的单词进行比较,以查找拼写正确名称的正确方法。

-1

在网上有拼写错误的城市名称列表(如匹兹堡h)。除此之外,我和杰里米在一起。你只需要找到城市名称数据集,你可能想试试USGS。 Zillow有你可能能够使用的邻居数据。

2

诀窍是知道名称实际上指的是哪个城市以及城市名称是否拼写正确。这与检查英文单词不一样。

你试图解决什么真正的任务?你在处理地址列表吗?您不应该为此编写自己的工具:整个行业都致力于这个看似简单的任务。 :)

我必须这样做的订阅列表为The Perl Review。我已经非常熟悉世界各地邮局的网络服务。您经常可以去邮政服务网站获取地址的规范形式。有地理编码工具可以为您提供相同的数据。

0

我已经这样做了。编辑距离方法就是我所做的,它工作得很好,但实时执行速度太慢。你要面对

的一个挑战是,有许多有1个编辑距离其他城市名称的城市。你没有说出文本文件中的名字来自哪里,并且有很大的不同。在我的情况下,这是随机的人在输入城市名称进行搜索,他们偶尔会拼错他们想要的城市,但他们的拼写错误是一个真正的城市名称。在这种情况下,您必须对用户意图进行一些猜测,并且一个简单的方法是考虑提供的状态。