我使用 VADER 進行了情緒分析,現在想將值分類為負面、正面和中性。
復合得分 > 0.05 時為陽性
在 -0.05 和 0.05 之間時其 < - 0.05 中性時為負值
df_polarity$VADER_Sent = ifelse(df_polarity$VADER_Sent > 0.05, "pos",
ifelse (df_polarity$VADER_Sent < -0.05, "neg",
ifelse (between(df_polarity$VADER_Sent, -0.05, 0.05) , "neu", "NA")
)
)
運行此代碼時,即使是 - 0.4XXX 的值也會被歸類為中性而不是負數。
由于某種原因,這行不通。有什么我錯過了......但我可以弄清楚它是什么......
通過谷歌搜索,我找不到任何有用的提示。
我希望你們中的某個人可以幫助我解決這個問題!
來自 str(df_polarity) 的輸出:
$ VADER_Sent:字符“0.0”“-0.4939”“0.7717”“0.7096”
在進一步查看我的資料后,似乎在負數的背景關系中無法識別“-”符號。
感謝所有試圖幫助我的人!真的很欣賞!!!
uj5u.com熱心網友回復:
問題是因為該VADER_Sent列是字符。比較<和>是按字母而不是數字檢查。
例子:
> -0.4939 < -0.05
[1] TRUE
> "-0.4939" < "-0.05"
[1] FALSE
嘗試as.numeric(df_polarity$VADER_Sent)在你的ifelse()陳述中使用來解決這個問題。
uj5u.com熱心網友回復:
如果沒有可重現的代碼,則無法確定,但您應該能夠在第二次ifelse()呼叫中將“中性”類別作為第二個選項。
df_polarity$VADER_Sent = ifelse(df_polarity$VADER_Sent > 0.05, "pos",
ifelse(df_polarity$VADER_Sent < -0.05, "neg", "neutral"
)
)
uj5u.com熱心網友回復:
這應該有效:
df %>%
mutate(X = if_else(VADER_sent < -0.5, "neg",
if_else(VADER_sent <= 0.5 & VADER_sent >= -0.5, "neutral", "pos"))
)
VADER_sent X
1 0.51 pos
2 0.10 neutral
3 2.00 pos
4 -0.60 neg
5 0.30 neutral
6 -1.20 neg
資料:
df <- data.frame(
VADER_sent = c(0.51, 0.1, 2,-0.6, 0.3, -1.2)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517975.html
