在R中进行文本挖掘时,有没有方便的方法来处理“停止短语”?

gorkyyrv  于 2023-03-15  发布在  其他
关注(0)|答案(1)|浏览(147)

我目前正在处理大量的司法文件。这些文件包含大量固定短语(如 * 理事会directive*),由于它们频繁出现,对我的分析没有意义。因此,我想删除它们。使用个性化的停用词列表是行不通的,因为单个单词在不同的上下文中具有含义。
到目前为止,我使用了tidytext包,我最初的想法是将文本转换为bigram并使用dplyr::anti_join().然而,这并不能完全摆脱短语,例如,“根据理事会指令453-EL [...]”将变成“到理事会”、“理事会指令”和“指令453”。
有没有人有一个简洁的方法来解决这个问题?理想情况下,我希望从一开始就避免将我的文本转换为bigram。下面是一个可重复的示例代码:

library(dplyr)
library(tidytext)

text <- "according to Council directive 453-EL" %>% data.frame()
colnames(text) <- c("word")

txt_bigrams <- text %>% unnest_tokens(ngram, word, token = "ngrams", n = 2)

谢谢大家!

eufgjt7s

eufgjt7s1#

如果您使用Quanteda包,您可以非常容易地删除您的自定义停止词列表。甚至有一个phrase函数可以用作删除组合停止词(如“理事会Directive”)的模式。
你唯一需要确保的是停止词与文本匹配。所以如果你在停止词中使用大写,比如“理事会”,而它在文本中是小写的,它就不会匹配。

library(dplyr)

text <- "according to Council directive 453-EL" %>% data.frame()
colnames(text) <- "word"

stop_phrases <- "Council directive"

library(quanteda)

my_corp <- corpus(text$word)

my_toks <- tokens(my_corp) # will not use tolower, use function tokens_tolower() for that (or dfm()).
my_toks <- tokens_remove(my_toks, pattern = phrase(stop_phrases))

my_toks
Tokens consisting of 1 document.
text1 :
[1] "according" "to"        "453-EL"

相关问题