我有两个陈述。
1)我喜欢 Car。 2)我穿喜欢国王。
在两个陈述中,相似词的含义是不同的。所以我想写函数,如果我通过第一个语句它应该返回'a'和amp;我通过了第二个声明然后应该返回'b'。
function chkStatement($stmt) {
//function body
}
chkStatement('I like an apple');
chkStatement('I like Mango');
chkStatement('I fly in air like a bird');
由于
答案 0 :(得分:0)
像preg_replace
这样的简单PHP函数不允许您根据使用单词的上下文返回不同的值。
您需要深入了解自然语言处理的广阔空间。祝你好运!
答案 1 :(得分:0)
Marc-Antoine是正确的,将like
标识为动词的唯一方法是使用NLP。
但是,如果我们对此进行了简化,您可以在单词I
之前检查You
,We
,They
或like
。你不会检查它是否实际上是一个动词,并且应该有很多例外。你可以使用这样的东西:
function chkStatement($stmt) {
if (preg_match('/\b(?:(I|You|We|They)\s+)?like\b/i', $stmt, $matches)) {
if (isset($matches[1])) return "a";
return "b";
} else {
return false;
}
}
echo chkStatement('I like an apple');
echo chkStatement('I like Mango');
echo chkStatement('I fly in air like a bird');
echo chkStatement('Something else');