PHP音节检测

10

我希望能够找到一种使用PHP将单词分割为音节的方法。例如,通过detect_syllables()函数处理单词"nevermore"后,返回的结果应为"nev-er-more"。是否有什么好的API或其他工具可以用于此目的?


1
我不确定是否有原生的PHP方法,但是相关问题中的https://dev59.com/CEjSa4cB1Zd3GeqPJOBt提供了一些编写此功能的良好指南。 - Fanis Hatzidakis
3个回答

14
有一篇由Frank Liang撰写的PHD论文非常有用,描述了一种异常精确的算法:虽然已经写了25年,但仍然有效。但我不知道是否有PHP实现。 编辑 快速谷歌搜索识别出这个Text Statistics library链接,其中包括单词音节计数的算法(以及其他可读性测量算法)。您应该能够在此处找到音节分割的代码。

据我所知,它只有一个用于计算音节的函数,而没有实际分割音节的功能。 - jeremy
3
虽然我没有查看实际代码,但如果它能够计算音节,那么它一定是将单词分割成音节来进行计数,因此逻辑必须在其中。 - Mark Baker

5
我正在制作一个基于Frank Liang算法和TeX字典的PHP连字符类,这似乎是所有办公套件采用的方法。(实际上我是在寻找一个尚未被占用的好名称时发现了这个主题)。随着浏览器对­实体的支持逐渐改善,对网站内容进行连字符处理成为了一个现实的选择。
核心功能已经实现:分割(因此计数)和/或连字符文本和/或HTML、解析TeX连字符词典、缓存这些解析过的词典。一些计划中的功能仍然缺失,但这并不妨碍您使用它。此外,还没有良好的文档、示例、正式的单元测试或虚荣站点。
我已经为它创建了一个github站点,链接在这里,将尽快发布当前版本,所以请在几天后回来查看。
我只测试了荷兰语(我的母语)和美式英语,因此可能还存在一些与使用不同字符集的语言相关的问题。

很好!太棒了。我会回来检查的。 - jeremy
3
请查看 https://github.com/heiglandreas/Org_Heigl_Hyphenator - 或许我们可以联手合作 ;) - heiglandreas

2
请注意,Frank Liang的论文是关于连字符,而不是音节检测。此外,他的论文本身指出,在他使用的词典中,成功率约为89%,这对于每个人来说都不够好。似乎没有任何替代方法需要手动为每个单词进行处理。虽然要求完整的一对一查找表单词列表来执行此操作并不高效,但现在存储空间比CPU时间便宜得多。
也许有人会考虑制作类似CAPTCHA的服务,以便要求许多用户提供每个已知单词的解决方案,并将结果相互检查,以便一个人不必自己完成所有工作。我希望结果一旦完成就可以自由发布。

Frank Liang的论文是TeSX断字模式的基础之一,Liang的观点之一是自动创建的模式必须扩展以获得更好的成功率。这已经在TeX断字模式中完成。还有其他基于模式或字典的算法,但它们不是开源的(例如DIHYPH)。 - heiglandreas

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