gpt4 book ai didi

r - 使用R的qdap包估计文档极性而不使用sentSplit

转载 作者:行者123 更新时间:2023-12-02 09:51:33 26 4
gpt4 key购买 nike

我想将qdap极性函数应用于文档向量,每个文档可以包含多个句子,并获取每个文档相应的极性。例如:

library(qdap)
polarity(DATA$state)$all$polarity
# Results:
[1] -0.8165 -0.4082 0.0000 -0.8944 0.0000 0.0000 0.0000 -0.5774 0.0000
[10] 0.4082 0.0000
Warning message:
In polarity(DATA$state) :
Some rows contain double punctuation. Suggested use of `sentSplit` function.

这个警告不能被忽略,因为它似乎添加了文档中每个句子的极性分数。这可能会导致文档级极性分数超出 [-1, 1] 范围。

我知道可以选择首先运行 sentSplit,然后对句子进行平均,也许可以按字数对极性进行加权,但这 (1) 效率较低(大约需要运行时间的 4 倍)在带有警告的完整文档上),以及(2)不清楚如何衡量句子的权重。这个选项看起来像这样:

DATA$id <- seq(nrow(DATA)) # For identifying and aggregating documents 
sentences <- sentSplit(DATA, "state")
library(data.table) # For aggregation
pol.dt <- data.table(polarity(sentences$state)$all)
pol.dt[, id := sentences$id]
document.polarity <- pol.dt[, sum(polarity * wc) / sum(wc), "id"]

我希望可以在删除了句点的矢量版本上运行 polity,但 sentSplit 的作用似乎不止于此。这适用于DATA,但不适用于其他文本集(我不确定除句点之外的完整中断集)。

因此,我怀疑解决此问题的最佳方法是使文档向量的每个元素看起来像一个长句子。我该如何做到这一点,或者还有其他方法吗?

最佳答案

Max 在此版本的 qdap (1.3.4) 中发现了一个错误,该错误将占位符计为影响方程的单词,因为分母为 sqrt(n),其中 n 是字数。从 1.3.5 开始,此问题已得到纠正,因此两个不同的输出不匹配。

这是输出:

library(qdap)
counts(polarity(DATA$state))[, "polarity"]

## > counts(polarity(DATA$state))[, "polarity"]
## [1] -0.8164966 -0.4472136 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000
## [8] -0.5773503 0.0000000 0.4082483 0.0000000
## Warning message:
## In polarity(DATA$state) :
## Some rows contain double punctuation. Suggested use of `sentSplit` function.

在这种情况下,使用strip并不重要。它可能在涉及放大器、否定词、否定词和逗号的更复杂的情况下。这是一个例子:

## > counts(polarity("Really, I hate it"))[, "polarity"]
## [1] -0.5
## > counts(polarity(strip("Really, I hate it")))[, "polarity"]
## [1] -0.9

请参阅文档了解更多信息。

关于r - 使用R的qdap包估计文档极性而不使用sentSplit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com