我正在实现可读性测试并实现了检测音节的简单算法。
检测元音序列我用单词来计算它们,例如单词“shoud”包含一个元音序列,即“ou”。在计算它们之前,我要删除 -les、-e、-ed 之类的后缀(例如,单词“like”包含一个音节,但包含两个元音序列,所以这种方法有效)。
但...
考虑这些单词/序列:
特殊字符怎么办?全部删除?大多数单词都可以,但不能使用“n'”和“x-ray”。以及如何对待密码。
这些是单词的特殊情况,但我很高兴看到这个主题的一些经验或想法。
最佳答案
我建议您首先确定您的数据中有多少由这些类型的单词组成,以及它对您的程序的整体性能有多大影响。还编译一些统计数据,其中最常见的类型。
这个问题没有简单的正确解决方案,但我可以建议一些启发式方法:
'
在两个辅音之间( shouldn't
)似乎标志着一个音节的省略 '
一侧有元音或单词边界( I'd
, goin'
)似乎没有这样做(但请注意 goin'
仍然是两个音节)n'
至少有一个音节长-
) 可以通过将两边的文本视为单独的单词 3rd
可以通过将序数写成单词的代码或更简单的启发式方法来处理。
关于nlp - 检测包含非字母字符的单词中的音节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3949962/