繁体   English   中英

如何使用我自己的词典词典分析R中的句子?

[英]How to use my own lexicon dictionary to analyse sentences in R?

我已经形成了一个新的词典词典来分析R中句子的情感。在使用R之前我已经使用过词典词典,但是我不确定如何使用自己的词典。 我设法创建了正面和负面的单词列表,该列表计算正面和负面单词的数量,然后提供一个总和。 如下例所示,这并未考虑分配给每个单词的分数。

我想分析说这句话“我很高兴,有点伤心”。 单词和分数列表示例(列表将比这个更大):

happy, 1.3455
sad, -1.0552

我想将这些单词与句子匹配,并获得总分1.3455 + -1.0552,在这种情况下,总分为0.2903。

如上例中所强调的,在分析R中每个句子的情感时,我将如何使用每个单词的实际分数来提供总体分数?

非常感谢,詹姆斯

您可以从宏伟的tidytext包开始:

library(tidytext)
library(tidyverse)

首先,对您的数据进行分析,并进行一些小的转换:

# data
df <-data_frame(text = c('I am happy and kind of sad','sad is sad, happy is good'))

# add and ID
df <- tibble::rowid_to_column(df, "ID")

# add the name of the ID column
colnames(df)[1] <- "line"

> df
# A tibble: 1 x 2
   line text                      
  <int> <chr>                     
1     1 I am happy and kind of sad

然后,您可以使他们在专栏中做单词。 这是一个应用于每个句子(每个id)的“循环”:

 tidy <- df %>% unnest_tokens(word, text)
    > tidy
# A tibble: 7 x 2
   line word 
  <int> <chr>
1     1 i    
2     1 am   
3     1 happy
4     1 and  
5     1 kind 
6     1 of   
7     1 sad  

现在您的全新词典:

lexicon <- data_frame(word =c('happy','sad'),scores=c(1.3455,-1.0552))
> lexicon
# A tibble: 2 x 2
  word  scores
  <chr>  <dbl>
1 happy   1.35
2 sad    -1.06

最后,您可以merge词典和数据以得到分数的总和。

merged <- merge(tidy,lexicon, by = 'word')    


现在,对于每个短语,情绪:

scoredf <- aggregate(cbind(scores) ~line, data = merged, sum)
>scoredf
  line  scores
1    1  0.2903
2    2 -0.7649


最后,您可以merge初始df与乐谱merge ,将短语和乐谱合并在一起:

scoredf <- aggregate(cbind(scores) ~line, data = merged, sum)
merge(df,scoredf, by ='line')
  line                       text  scores
1    1 I am happy and kind of sad  0.2903
2    2  sad is sad, happy is good -0.7649

如果您想要多个短语,则总体情感得分。
希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM