我想找到一种方法,可以用PHP将单词拆分成音节。例如,单词“nevermore”通过detect_syllables()运行,将返回“nev-er-more”。是否有任何好的API或其他东西?
答案 0 :(得分:13)
有一个有用的PHd thesis paper by Frank Liang描述了一个非常准确的算法:25年前编写,它仍然有效。但我不知道PHP中的任何实现
修改强>
快速谷歌已经确定了PHP中Text Statistics library的链接,其中包括单词内音节计数的算法(以及其他可读性测量算法)。你应该能够在这里找到音节分割的代码。
答案 1 :(得分:5)
我实际上正处于基于Frank Liang的算法和TeX词典制作PHP Hyphenator类的最后阶段,这几乎似乎是所有办公套件所采用的。 (实际上我在寻找一个尚未采用的好名字时找到了这个主题)。随着浏览器对该实体的支持逐渐得到改善,在网站中连接内容成为一种现实的选择。
核心功能正在发挥作用;拆分(并因此计数)和/或连字符文本和/或HTML,解析TeX连字符词典,缓存那些已解析的词典。一些计划的功能仍然缺失,但没有任何阻止您使用它。此外,还没有好的文档,样本,正式的单位测试或虚荣网站。
我为它here创建了一个github网站,并会尽快发布当前版本,所以请在几天后再回来查看。
我只用荷兰语(我的母语)和美国英语进行了测试,因此使用不同字符集的语言可能仍存在一些问题。
答案 2 :(得分:2)
请注意,Frank Liang的论文是关于连字符的,而不是关于音节检测。此外,他的论文本身表明,他所使用的词典的成功率约为89%,这对每个人来说都不够好。对于每个单词来说,手动执行它实际上是无可替代的。为了做到这一点,必须要求一个完整的一对一查找表词汇表并不是那么有效,但是现在存储空间远远低于CPU时间。
也许有人可能会考虑制作类似CAPTCHA的服务,以便可以要求许多用户为每个已知单词提供解决方案,并相互检查结果,这样一个人就不必自己完成所有这些。我希望结果一旦完成就可以自由发布。