我正在寻找一个完全准确的算法陈述来计算单词中的音节。我研究时发现的不一致或我所知道的结果不正确。有没有人有任何建议如何实现这一目标?感谢。
我现在使用的算法:
我还缺少更多规则吗?如果我使用的算法错误或我的实现错误,我试图在测试中确定我的错误结果。
答案 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.com,The Free Dictionary,Merriam-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等效词。这样就可以更准确地表达音节中的音节。从那以后,您可以制作更准确的音节数,但这并不能解释发音的变化。