用一个词计算音节

时间:2012-02-01 12:59:06

标签: string algorithm

我正在寻找一个完全准确的算法陈述来计算单词中的音节。我研究时发现的不一致或我所知道的结果不正确。有没有人有任何建议如何实现这一目标?感谢。

我现在使用的算法:

  1. 计算单词中的元音数量。
  2. 不要算双元音(“雨”有2个元音,但只有1个音节)
  3. 如果单词中的最后一个字母是元音,则不计算(“side”是1个音节)
  4. 我还缺少更多规则吗?如果我使用的算法错误或我的实现错误,我试图在测试中确定我的错误结果。

3 个答案:

答案 0 :(得分:22)

Ambiguity在自然语言处理中是一个很大的问题,但有些任务实际上可以很好地处理模糊性。事实证明,音节化就是其中之一,所以不要听其他答案。 :)

音节划分

基于启发式

您可以提出算法achieving correct syllabification virtually throughout the English vocabulary,但正确编程似乎很复杂。

基于语料库

与往常一样,当手工制作的算法没有太多帮助时,自然语言处理研究人员使用手工标记的语料库,其中包含给定单词的正确答案。然后使用学习算法并且通常提供高精度。您可以使用遵循此方法的LingPipe's syllabification (see "English syllabification")

详尽清单

英语只有很多单词,这就是我们提出词典的方式。这些词典通常包含正确的音节。你可以刮一下reference.com。例如,undulate entry包含«un·du·late»,这足以知道有三个音节。

其他此类词典包括Answers.comThe Free DictionaryMerriam-Webster等。请阅读条款和条件,可能不允许自动检索。不同的词典彼此不always agree

对新单词或专有名词没有帮助,但我会说这将是最准确的方法。

关于连字符

另一个相关问题涉及更多曝光:连字符。但是不要使用它!它用于排版程序such as LaTeX,但仅用于提供一些正确的连字符,而不提供错误的连字符(高精度,低召回)。值得注意的是,只有14个例外,例如。根据词性(动词或名词)而具有不同连字符的项目。

连字程序

如果您认为它足以满足您的需求,请注意few implementations of the TeX hyphenation algorithm exist in other languages, such as Python, Perl or Ruby

答案 1 :(得分:13)

  

我正在寻找一个完全准确的算法陈述来计算   单词中的音节

没有。期。无论你发明什么算法,我都希望找到一个反例。在某些语言中(亚美尼亚语和俄语会浮现在脑海中),算法非常简单 - 计算元音的数量。在其他语言中,例如德语,它不是那么简单但仍然可行。在英语中,我担心,字母和声音之间的转换是绝对不规则的。

例如,

巧合 的。 oi 将被视为两个音节。但在 boil 中,它只有一个音节。 另外,不计算最终元音并不总是准确的。考虑名称 Penelope Hermione 。或 香蕉

另一个奇怪的情况是音节存在时没有打印的元音。例如, table 是双音节词,但第二个音节是由 b 和<之间的不可见声音生成的强> 即可。另外,不要忘记源自拉丁语的单词,拉丁语可能有很多连续的元音。例如。的 拟声 即可。

所以,没有准确的算法。你可以去的唯一方法是尝试找到一个在很多(我避免使用最多的词)案例中有效的算法。但在这种情况下,您应该重新定义您的要求。

答案 2 :(得分:-1)

您需要的是一个词典,用于将英语单词的常规拼写映射到其International Phonetic Alphabet等效词。这样就可以更准确地表达音节中的音节。从那以后,您可以制作更准确的音节数,但这并不能解释发音的变化。