在R

时间:2017-06-12 23:23:14

标签: r twitter text-mining punctuation tidytext

我在tidytext中使用R包进行n-gram分析。

由于我分析了推文,我想保留@和#来捕获提及,转发和主题标签。但是,unnest_tokens函数会自动删除所有标点符号并将文本转换为小写。

我发现unnest_tokens可以选择使用token='regex'使用正则表达式,因此我可以自定义清理文本的方式。但是,它只适用于unigram分析,并且不适用于n-gram,因为我需要定义token='ngrams'来进行n-gram分析。

有没有办法阻止unnest_tokens在n-gram分析中将文本转换为小写?

2 个答案:

答案 0 :(得分:1)

tokenize_words的参数在unnest_tokens函数调用中可用。因此,您可以直接将strip_punct = FALSE用作unnest_tokens的参数。

示例:

txt <- data.frame(text = "Arguments for `tokenize_words` are available within the `unnest_tokens` function call. So you can use `strip_punct = FALSE` directly as an argument for `unnest_tokens`. ", stringsAsFactors = F)
unnest_tokens(txt, palabras, "text", strip_punct =FALSE)

 palabras
 1         arguments
 1.1             for
 1.2               `
 1.3  tokenize_words
 1.4               `
 1.5             are
 1.6       available
 1.7          within
 1.8             the
 1.9               `
 1.10  unnest_tokens
 1.11              `
 1.12       function
 1.13           call
 1.14              .
 1.15             so
 #And some more, but you get the point. 

也可用:lowercase = FALSEstrip_numeric = TRUE来更改默认的相反行为。

答案 1 :(得分:0)

tidytext版本0.1.9中,您现在可以选择标记推文,如果您不想要小写,请使用选项to_lower = FALSE

unnest_tokens(tweet_df, word, tweet_column, token = "tweets", to_lower = FALSE)