【问题标题】:How to generate homophones on substring level?如何在子串级别生成同音字?
【发布时间】:2019-07-29 12:13:09
【问题描述】:

我想以编程方式生成单词的同音字。含义,听起来与原始单词相似的单词。

我遇到过 Soundex 算法,但它只是将某些字符替换为其他字符(例如 t 而不是 d)。有没有更复杂一点的列表或算法,至少提供同音字子串?

重要提示:我想将此应用于字典中没有的单词,这意味着我不能依赖整个真实的单词。

编辑:

输入是一个字符串,通常是一个专有名称,因此没有标准(同音字)字典。 GoogleMcDonald's 就是一个例子(仅举出两个流行的命名实体,但很多都不受欢迎)。

然后输出是该字符串的(随机)同音字。由于单词通常有多个同音字,因此我的目标是单个(随机)一个。对于 Google,同音字可能是 gugel,或 MacDonald's 代表 McDonald's

【问题讨论】:

  • 分享您的代码、输入和所需的输出
  • Pedantry:从技术上讲,MacDonald's 也是一个合适的名称,但我怀疑 Hardee's(另一家快餐连锁店)的“hardies”或 Harold's(Chicken Shack)的“heralds”与你的想要。
  • 那么你最后做了什么?

标签: python algorithm phonetics


【解决方案1】:

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

但假设你想自己动手。

第一步是弄清楚如何将给你的字母转换成它听起来的样子。这是一个非常困难的问题,需要猜测。 (例如“阅读”发出什么声音?取决于您是要阅读,还是已经阅读!)但是text to phonemes converter 建议Arabet 已经为英语解决了这个问题。

接下来,您会希望对字典中的每个单词都执行此操作。假设你一个字就能做到,那只是一个脚本。

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

就是这样。

【讨论】:

  • 我看到的问题是我的字典不会包含像 macdonald's 或 gugel 这样的词——因此不会被认为是同音字,对吗?要构建字典,我需要事先知道可能的同音词。这与自动更正不同,因为我想从 Google 转到 Gugel,而不是从 Gugel 转到 Google。
  • 对。对于这种方法,您需要提前准备好所有可能的答案。
猜你喜欢
  • 2015-07-28
  • 2012-01-04
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
相关资源
最近更新 更多