在Python中是否有一种方法可以不使用字典来计算音节?

3

CMUdict适用于英语,但如果我想要计算其他语言中内容的音节数呢?

3个回答

4
这取决于语言。这可能听起来是一个显而易见的答案,但它最终取决于拼写方式的设计。在英语中,音节与单词的书写方式基本独立,因此需要使用字典。许多其他语言也是如此。
然而,某些其他语言(例如(南)韩语,日语平假名和片假名(但不包括汉字))的书写方式使字符本身明显与一个音节或特定数量的音节匹配。在这种情况下,如果您知道这些语言的工作原理,您理论上可以使用Python将书写分解为音节。
否则,您需要使用字典或其他处理此项工作的编译平台。请在nltk周围搜索并查找您能找到的内容。

@StevenBurnap 您是正确的,这就是为什么我在我的回答中特别排除了汉字,并且只提到片假名和平假名。更新了答案以使其更加明显。 - jdotjdot
2
@jwpat7 做了很多计算语言学的工作后,我不同意那种说法。这要复杂得多,因为还涉及到什么构成元音、区分元音双字母和真正分开的元音以及考虑发音差异等问题。不仅如此,而且远非清楚在哪里分音节:是 eq-ual 还是 e-qual?这似乎很明显,但实际上并不是。当然,这还没有触及英语正字法的问题,比如单词 huge——2个“元音”字母,但只有1个音节。 - jdotjdot
@jdotjdot 很不幸,几乎所有的日文书写都广泛使用汉字,所以除非你有一些预处理器可以转换(需要一个字典),否则你在现实世界的文本中就会遇到麻烦。 - Gort the Robot
@StevenBurnap 这只是一个例子,说明在没有字典的情况下可能会这样做,与 OP 的问题并不相关。我们就说你赢了吧。 - jdotjdot
抱歉,我并不是要争辩,只是要说这对于日本并不是一个可行的实际解决方案。 - Gort the Robot
显示剩余5条评论

2
通常来说,不行。对于某些语言,可能会有词典,但如果您没有词典,就需要了解这些语言的语言结构。单词如何分成音节因语言而异。

0

你肯定不能以一般的方式处理所有语言,因为不同的语言将声音呈现为文本的方式是不同的。

例如,匈牙利语单词“vagy”对于英语说话者来说看起来像两个音节,但实际上只有一个音节。而英语单词“bike”在许多其他语言的说话者看来自然会被读作两个音节。

此外,对于英语,即使有字典,你也很难做到非常准确,因为英语的拼写变化非常奇怪。例如,我们发音“poet”中的“oe”为两个不同的音节,但在“does”中只有一个音节。这在其他一些语言中也可能是正确的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接