如果给出一个输入字,如何生成一个发音相似的单词列表?

时间:2012-02-01 21:04:06

标签: perl words auto-generate phonetics

当你拼错谷歌中的一个单词时(例如“appples”),它会为你提供现在熟悉的“你的意思是:苹果”的建议。

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

这些词语不一定是英语,也不一定存在。所以,例如,如果我给输入“漏洞”,我会找回一个列表,其中包括:“整体”,“hola”,“妓女”,“角色”,“磨牙”等...

我猜可能会有一些可以开发此列表的在线内容,但我找不到任何内容。如果没有站点,并且是否可以使用Perl完成,是否有CPAN模块可以帮助我这样做?

2 个答案:

答案 0 :(得分:5)

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

这些算法将单词缩减为指示其发音的“键”。如果您开始使用单词语料库并构建一个数据结构,将这些键映射到评估它们的单词 - 您可以使用任意字符串,将其评估为其“键”,然后查找评估为相同的其他单词键入您的数据结构(可能是列表或类似的哈希表)。

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

另一方面,如果您只是想要搜索建议/备用拼写,则可以更轻松地进行搜索。

希望这很有用。

答案 1 :(得分:2)

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