当你拼错谷歌中的一个单词时(例如“appples”),它会为你提供现在熟悉的“你的意思是:苹果”的建议。
根据搜索结果的相关性排除Google猜测您的意图的能力,我如何开发一个听起来相同的单词列表?
这些词语不一定是英语,也不一定存在。所以,例如,如果我给输入“漏洞”,我会找回一个列表,其中包括:“整体”,“hola”,“妓女”,“角色”,“磨牙”等...
我猜可能会有一些可以开发此列表的在线内容,但我找不到任何内容。如果没有站点,并且是否可以使用Perl完成,是否有CPAN模块可以帮助我这样做?
答案 0 :(得分:5)
如果您真的在寻找听起来相同的单词,而不仅仅是搜索建议 - 那么您可以查看语音算法。 Soundex和Metaphone / Double Metaphone是两个非常常见的,并且每个都有任何流行语言的实现。
这些算法将单词缩减为指示其发音的“键”。如果您开始使用单词语料库并构建一个数据结构,将这些键映射到评估它们的单词 - 您可以使用任意字符串,将其评估为其“键”,然后查找评估为相同的其他单词键入您的数据结构(可能是列表或类似的哈希表)。
这并不完美,因为您需要找到一个大词汇集来为您的数据集播种,但它会起作用。
另一方面,如果您只是想要搜索建议/备用拼写,则可以更轻松地进行搜索。
希望这很有用。
答案 1 :(得分:2)
您可以从了解Text :: Soundex模块开始。这是一种将字映射到4字节代码的简单算法。我很久以前就把Soundex从Sedgewick(前Knuth)拿出来,用它来生成更长的键(没有被截断),并建议修正0和1个字母的替换列表。我将其应用于人口普查和邮政数据的大型数据库。