我有一个程序,我给它一个名词,它用名词表检查它的数据库,看看这个名词是否在那里。这适用于单数名词。如。用户输入"什么是树?"程序搜索"树"
但是对于"树是什么?"'
程序将搜索"树",但是数据库只存储单数形式的名词,因此找不到它。我想在搜索之前把最后一个s去掉。如。
if ((searchnoun.charAt(searchnoun.length-1))=== 's')
{ searchnoun = searchnoun.(take off last s);}
但是,对于以's'结尾的非复数名词,这不起作用。如:巨龙,剑龙,耶稣,质量,鲈鱼,物理和相当多的其他…
我可以创建一个以s结尾的非复数的单词列表,并首先搜索它是否在该列表中,如果是,则不删除最后一个's',否则执行。
对于以'es'结尾的单词,我会做类似的事情,除非它们在以'es'结尾的非复数单词列表中。
有更好的方法吗?
唯一的方法是创建一个规则和单词的数据库,它不会完美。如果您正在使用PHP,可以使用这个。http://www.kavoir.com/2011/04/php-class-converting-plural-to-singular-or-vice-versa-in-english.html它是框架的一部分,但即使你不使用PHP,你也可以从中提取信息。
不幸的是,这里的代码太多了,你必须遵循链接