2017-11-17 294 views
1

我想生成编程的单词同音字。意思是听起来类似于原始单词的单词。如何在子字符串级别生成同音字符?

我碰到过Soundex算法,但它只是用其他字符替换某些字符(如t而不是d)。是否有任何列表或算法有点复杂,至少意味着同音字子串?

重要的是,我想将它应用于不在字典中的单词,意味着它不能依赖整个真实的单词。

编辑:

输入是一个字符串,他们往往是命名实体,因此在没有真正的(同音字)词典。一个例子可能是谷歌麦当劳(仅举两个流行的命名实体,但许多更不受欢迎)。

然后输出是该字符串的(随机)同音字。由于单词经常有多个同音字,所以单个(随机)单是我的目标。在谷歌的情况下,同音字可分别古格尔麦当劳麦当劳

+0

分享你的代码,输入和期望的输出 – skrubber

回答

0

如何做到这一点是一个研究课题。例如参见http://www.inf.ufpr.br/didonet/articles/2014_FPSS.pdf

但是,假设你想推出自己的。

第一步是弄清楚如何将给出的字母转换成它听起来像的表示。这是一个非常困难的问题,需要猜测。 (例如,什么声音“读取”了?取决于你是否要阅读,或者你已经阅读!)但是text to phonemes converter表明阿拉伯已经解决了这个英语。

接下来,您会希望对词典中的每个词都进行此操作。假设你可以用一个字来做,那只是一个脚本。

然后,你会希望它存储在一个数据结构中,你可以很容易地找到类似的声音。原则上与用于拼写自动更正的算法类型没有区别。只能用音素而不是字母。您可以通过http://norvig.com/spell-correct.html了解如何做到这一点。或尝试实施类似http://fastss.csg.uzh.ch/ifi-2007.02.pdf中所述的内容。

就是这样。

+0

我在哪里看到的问题是,我的字典不会包含像麦克唐纳或格格尔这样的词 - 因此不会被认为是同音词,对吗?为了建立字典,我需要事先知道可能的同音词。这与自动更正有所不同,因为我想从Google转到Gugel而不是Gugel到Google。 – ScientiaEtVeritas

+0

对。您需要提供所有可能的答案才能使用此方法。 – btilly