如何训练斯坦福NLP情绪分析工具

2022-09-03 15:14:55

地狱大家!我正在使用斯坦福核心NLP包,我的目标是对实时推文流进行情感分析。

按原样使用情感分析工具会返回对文本“态度”的非常糟糕的分析。许多正面标记为中性,许多负面标记为正。我已经在文本文件中获得了超过一百万条推文,但我不知道如何实际训练该工具并创建自己的模型。

链接到斯坦福情绪分析页面

“可以使用以下命令使用 PTB 格式数据集重新训练模型:”

java -mx8g edu.stanford.nlp.sentiment.SentimentTraining -numHid 25 -trainPath train.txt -devPath     dev.txt -train -model model.ser.gz

来自 dev.txt的样本(前导 4 表示 5 个 ...4/5 阳性)

(4 (4 (2 A) (4 (3 (3 warm) (2 ,)) (3 funny))) (3 (2 ,) (3 (4 (4 engaging) (2 film)) (2 .))))

测试样品.txt

(3 (3 (2 If) (3 (2 you) (3 (2 sometimes) (2 (2 like) (3 (2 to) (3 (3 (2 go) (2 (2 to) (2 (2 the) (2 movies)))) (3 (2 to) (3 (2 have) (4 fun))))))))) (2 (2 ,) (2 (2 Wasabi) (3 (3 (2 is) (2 (2 a) (2 (3 good) (2 (2 place) (2 (2 to) (2 start)))))) (2 .)))))

火车上的样品.txt

(3 (2 (2 The) (2 Rock)) (4 (3 (2 is) (4 (2 destined) (2 (2 (2 (2 (2 to) (2 (2 be) (2 (2 the) (2 (2 21st) (2 (2 (2 Century) (2 's)) (2 (3 new) (2 (2 ``) (2 Conan)))))))) (2 '')) (2 and)) (3 (2 that) (3 (2 he) (3 (2 's) (3 (2 going) (3 (2 to) (4 (3 (2 make) (3 (3 (2 a) (3 splash)) (2 (2 even) (3 greater)))) (2 (2 than) (2 (2 (2 (2 (1 (2 Arnold) (2 Schwarzenegger)) (2 ,)) (2 (2 Jean-Claud) (2 (2 Van) (2 Damme)))) (2 or)) (2 (2 Steven) (2 Segal))))))))))))) (2 .)))

我还有两个问题要问。

每个文件之间的意义和区别是什么?火车.txt/开发.txt/测试.txt ?

如何使用充满推文的原始、未解析的文本文件来训练自己的模型?

我对NLP非常陌生,所以如果我缺少任何必需的信息或任何东西,请批评!谢谢!


答案 1

每个文件之间的意义和区别是什么?火车.txt/开发.txt/测试.txt ?

这是标准的机器学习术语。火车集用于(惊喜惊喜)训练模型。开发集用于优化模型可能具有的任何参数。您通常要做的是选择一个参数值,在训练集上训练模型,然后检查训练的模型在开发集上的表现。然后选取另一个参数值并重复上述步骤。此过程可帮助您查找模型的合理参数值。

完成此操作后,继续测试模型在测试集上的表现。这是看不见的 - 您的模型以前从未遇到过任何这些数据。测试集与训练集和开发集是分开的,这一点很重要,否则您正在根据它以前见过的数据有效地评估模型。这是错误的,因为它不会让您了解模型的实际效果。

如何使用充满推文的原始、未解析的文本文件来训练自己的模型?

你不能也不应该使用一组未解析的文档进行训练。递归深度模型的全部意义(以及它表现如此出色的原因)是它可以从解析树的每个级别的情绪注释中学习。您上面给出的句子可以采用如下格式:

(4 
    (4 
        (2 A) 
        (4 
            (3 (3 warm) (2 ,)) (3 funny)
        )
    ) 
    (3 
        (2 ,) 
        (3 
            (4 (4 engaging) (2 film)) (2 .)
        )
    )
)

通常,情绪分析器使用文档级批注进行训练。您只有一个分数,并且此分数适用于整个文档,忽略了文档中的短语可能表达不同情绪这一事实。斯坦福大学的团队投入了大量精力来注释文档中的每个短语,以获得情感。例如,这个词本身在情感上是中性的:.但是,这句话非常积极:film(2 film)engaging film(4 (4 engaging) (2 film)) (2 .)

如果你已标记推文,则可以使用任何其他文档级情绪分类器。堆栈溢出上的标签已经有一些非常好的答案,我不打算在这里重复它们。

PS:你标记了你拥有的推文吗?所有100万?如果你这样做了,我想为那个文件付给你很多钱:)


推荐