python - Stanford NLP Parser 对 Kaggle Movie 评论中使用的相同语句给出不同的结果(情感)

标签 python scikit-learn classification stanford-nlp kaggle

我正在研究 Kaggle 电影情感分析,我发现电影评论已使用 Standford Parser 进行了解析。 在探索数据集时,我发现相同的语句给出了不同的设置-

their parents , wise folks that they are ,  2
their parents , wise folks that they are    3

Genuinely unnerving .   3
Genuinely unnerving 1

其中 english 是解析​​后的数据,数字属于 sentiment。 现在,如果您只检查逗号和一个点的区别,其余的是相同的,但两者都属于不同的情绪,这给我分类带来了很多麻烦。

在文本分类中我应该怎么做才能避免这样的问题,如果我忽略重复项并使用已经添加的 sentiment ,我的分类就会出错,那么解决这种情况的方法应该是什么。

最佳答案

我假设您使用的是词袋,逗号和点是您的特征之一(X 矩阵中的一列)。

+-------------------------+-----------+-----------+----+
|    Document/Features    | Genuinely | unnerving | .  |
+-------------------------+-----------+-----------+----+
|  Genuinely unnerving .  |         1 |         1 | 1  |
|  Genuinely unnerving    |         1 |         1 | 0  |
+-------------------------+-----------+-----------+----+

理想的算法应该了解这些特征是否相关。例如,在逻辑回归的情况下,您的算法会为相应的列分配一个非常小的权重,因此该列中的 10 不会改变预测的结果。所以你会有类似的东西:

"Genuinely unnerving ." -> 0.5*1 + -2.3*1 + 0.000001*1 -> Negative
"Genuinely unnerving  " -> 0.5*1 + -2.3*1 + 0.000001*0 -> Also negative

在您的情况下,它们的效果似乎很小。这真的是个问题吗?你发现了一些特殊情况,它似乎是错误的,但通过查看数据,算法发现带点的句子比没有点的句子更消极。也许您应该相信,从统计学上讲,一个点可以改变句子的含义。

您的训练数据或过度拟合模型也可能会出现问题。如果您真的认为有问题,那么您可以通过表示句子将这些知识强加到模型上,使它们无法区分,例如忽略一些标点符号。

我认为一次去掉所有标点符号是错误的,例如 ! 伴随着单词 yes 可能代表非常积极的情绪,如果你从你的句子中删除它你会隐藏模型有值(value)的信息。但可能恰恰相反,! 在大多数情况下是负的,所以它在训练后得到很高的负权重,这会在预测 yes!!! 时混淆模型像句子。在这种情况下,您可以将句子表示为二元语法,以便模型可以分别对单个 !(yes, !) 组合的效果进行加权。

所以在简历中,您应该尝试不同的模型和方法来表示您的数据,看看哪些有效。

关于python - Stanford NLP Parser 对 Kaggle Movie 评论中使用的相同语句给出不同的结果(情感),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033135/

相关文章:

machine-learning - 分类和检测之间的区别

matlab - 从特征向量分类

python - 在python opencv中为像素着色

python - 如何从 Python 代码进入 REPL(读取、评估、打印、循环)

python - 随机森林分类的​​不确定性

opencv - 哈尔分类器交换

python - 根据Python中的索引合并两个包含字典的列表

Python 2.7 从登录网站抓取网页

matplotlib - 绘制逻辑回归的决策边界

python - sklearn OPTICS 和预先计算的余弦矩阵不产生簇