检查字符串输入是复数还是单数?

时间:2012-01-27 10:39:13

标签: php string

我想在PHP中检查字符串是单数还是复数。

3 个答案:

答案 0 :(得分:3)

即使只是用英语这样的语言也不容易做到。首先,你需要识别你的名词。

使用如下规则:单词以“s”结尾非常简单,

SHEEP单数SHEEP复数

LADY单数女士复数 但是LADY'S

呢?

所以你需要更加聪明,并在S

之前立即测试撇号

尝试使用像Brill Parser之类的东西,这可以识别名词,并且可能适合于以合理的准确度识别单数/复数,但即使这样也不完美。

然后,你可能想用法语或德语做这个...你是一个非常广泛的问题,不能识别一种语言

修改

wikipedia article

中描述了英语中单数/复数的复杂性的例子

porter stemming这样的技术可以识别单词的“根”,并且与实际单词的比较可以帮助检查扩展是否是典型的单数或复数。可以使用Porter Stemmer的PHP实现here

答案 1 :(得分:0)

那取决于你的语言并不容易,甚至可能是不可判断的。

你如何区分“男人”和“男人”?

您可以使用启发式,就像所有内容一样,以“s”结尾是复数并提供其他异常情况,如上面提到的“man”。这也会导致错误的答案,因为例如“吻”以“s”结束但不是复数。

答案 2 :(得分:0)

鉴于已经显示出不同语言中复数词的确定性,以及英语(和其他语言)不是总是以“s”结尾的复数形式,以及有时候以“s”结尾的单词不是复数,试着提供可能的解决方案。

你可以创建一个大数组,用于复数总是用“s”结尾,另一个用于不规则复数,并用它来验证句子的每个单词。

稍后我会用一些有用的PHP示例来完成这篇文章。

我找到了一些java示例here