3

当您在 Google 中拼错一个单词时(例如“apples”),它会为您提供现在熟悉的“Did you mean: apples ”建议。

排除 Google 根据搜索结果的相关性猜测您的意图的能力,我如何开发一个听起来相同的单词列表?

这些词不必是英语,也不必存在。因此,例如,如果我输入“hole”,我会得到一个列表,其中包括:“whole”“hola”“whore”“role”“molar”等......

我猜网上可能有一些东西可以开发这个列表,但我找不到任何东西。如果没有站点并且可以使用 Perl 完成,是否有 CPAN 模块可以帮助我做到这一点?

4

2 回答 2

5

如果您真的在寻找发音相同的单词,而不仅仅是搜索建议 - 您可以查看语音算法。Soundex 和 Metaphone/Double Metaphone 是两个非常常见的,并且每个都有任何流行语言的实现。

这些算法将单词简化为指示其发音的“键”。如果你从一个词库开始并构建一个数据结构,将这些键映射到对它们求值的词——你可以取一个任意字符串,将其求值到它的“键”,然后查找其他求值相同的词键入您的数据结构(可能是列表或类似的哈希表)。

这并不完美,因为您需要找到大量的词库来为您的数据集播种,但它会起作用。

另一方面,如果您只是想要搜索建议/替代拼写,则可以使用更简单的方法。

希望这会有所帮助。

于 2012-02-01T21:11:08.543 回答
2

您可以从了解模块 Text::Soundex 开始。这是一个简单的算法,将单词映射到 4 字节代码。我很久以前从 Sedgewick(前 Knuth)获得了 Soundex,用它来生成更长的密钥(未截断)并建议了 0 和 1 字母替换的更正列表。我将此应用于人口普查和邮政数据的大型数据库。

于 2012-02-01T21:14:14.233 回答