用下划线把句子中的否定词和下面的单词连起来


Link a negative in a sentence to the following word by an undercore

我正在数一个网站上正面评论的数量。考虑以下字符串:

$str_1 = "This is great";
$str_2 = "This is not great after all";
$str_3 = "That isn't good and I will not return to this store.";

它们的意思正好相反。在自动分类中,$str_2和3会被大多数分类器(只计算句子中肯定词的数量)视为肯定词。我想通过将"not"与"great","isn’t"与"good"answers"not"与"return"连接来避免这个错误,如下所示:

$str_1 = "This is great";
$str_2 = "This is not_great after all";
$str_3 = "That isn't_good and I will not_return to this store.";

我从标记字符串开始:

$tokens = explode("", $str_3);

但我不知道如何继续。如何将否定词后的单词("not","isn’t")与后面的单词连读?在这里使用正则表达式不是更好吗?

我不确定这个答案是否会很有帮助,恐怕…如果你真的试图对论坛上帖子的情绪进行分类,这是一个非常困难的问题。你的建议会让你在一定程度上达到目标,但英语(和其他语言)要复杂得多,这并没有考虑到。例如:

  • 我不是在开玩笑:这个产品很烂
  • 我极力推荐这个产品
  • 我不能推荐这个产品

等。换句话说,在一些简单的情况下,寻找一个带否定的肯定词是有效的,但在很多其他情况下就行不通了。我想你会想要一个更复杂的方法。如果你有大量的训练数据(如手动分类评论),你可以使用神经网络或分类器,如SVM或朴素贝叶斯分类器。

我怀疑你会发现,如果你继续使用regex方法,你会永远添加异常和特殊情况,它最终会变得非常复杂,只会在50%的情况下工作。抱歉,我不能再乐观了!

"Pattern"系统可能对情绪分析也有帮助:

  • 比利时大选,2010年6月13日- Twitter意见挖掘http://www.clips.ua.ac.be/pages/pattern-examples-elections

  • http://www.clips.ua.ac.be/pages/pattern

这个可以作为您需求的开始。

https://github.com/JWHennessey/phpInsight