我想检查一个字符串在PHP中是单数还是复数。
发布于 2012-01-27 18:43:34
即使只有一种语言,比如英语,也不容易做到这一点。首先,你需要识别你的名词。
使用诸如:单词以"s“结尾的规则是非常简单的,
羊单数绵羊复数
女士单数女士复数,但是女士的呢?
因此,您需要更加聪明,并在S之前立即测试撇号
试着使用像Brill Parser这样的东西,这可以识别名词,并且可以适当地准确地识别单数/复数,但即使这样也不是完美的。
再说一次,你可以用法语或德语……你的问题非常宽泛,不能识别一种语言
编辑
本wikipedia article中描述了英语中单数/复数复杂性的示例
像porter stemming这样的技术可以识别单词的“词根”,与实际单词的比较可以帮助检查扩展是典型的单数还是复数。here提供了Porter Stemmer的PHP实现。
发布于 2012-01-27 18:48:04
考虑到在不同语言中复数单词的不确定性,以及在英语(和其他语言)中并不总是以"s“结尾的复数,以及有时以"s”结尾的单词不是复数,我将尝试提供一个可能的解决方案。
您可以为复数始终以"s“结尾的单词创建一个大数组,并为不规则复数创建另一个数组,并针对它验证句子中的每个单词。
稍后我将用一些实用的PHP示例来完成这篇文章。
我找到了一些java示例here
发布于 2012-01-27 18:40:48
嗯,这取决于你的语言在不容易,它可能是无法决定的。
例如,你如何区分"man“和”man“?
你可以使用启发式,就像所有东西一样,以"s“结尾的是一个复数,并提供额外的异常情况,比如前面提到的"man”。这也会导致错误的答案,因为例如"kiss“以"s”结尾,但不是复数。
https://stackoverflow.com/questions/9032032
复制相似问题