【问题标题】:How to remove common word endings from a non-English corpus using the tm package?如何使用 tm 包从非英语语料库中删除常用词尾?
【发布时间】:2020-05-12 02:25:13
【问题描述】:

我正在尝试使用 tm 包对某个网站的意大利用户在那里写的评论进行一些文本挖掘。我刮掉了文本,将它们存储在语料库中,进行了某种清理,但是当我尝试通过删除常见的结尾来获取单词的词干时,我在指定意大利语而不是默认语言(即英语)时遇到了问题。

reviews_corpus <- tm_map(reviews_corpus, removeNumbers)
reviews_corpus <- tm_map(reviews_corpus, removePunctuation)
reviews_corpus <- tm_map(reviews_corpus, stripWhitespace)
reviews_corpus <- tm_map(reviews_corpus, content_transformer(tolower))
reviews_corpus <- tm_map(reviews_corpus, removeWords, stopwords("italian"))
reviews_corpus <- tm_map(reviews_corpus, stemDocument(reviews_corpus, language="italian"))

前五行工作正常,但对于最后一行,R 给了我:

Error in UseMethod("stemDocument", x) : 
  no applicable method for 'stemDocument' applied to an object of class "c('VCorpus', 'Corpus')"

所以,我的问题是我如何在语料库上使用 stemDocument 并指定我想要使用的语言?

【问题讨论】:

  • 不是在语料库上使用stemDocument,而是在将文本转换为语料库之前先执行它吗?

标签: r text-mining tm corpus


【解决方案1】:

stemDocument 中有一个错误。如果您使用英语以外的任何其他语言,它会恢复为英语。但是有一种方法可以绕过它,直接调用stemDocument 指向的词干分析器。

代替

reviews_corpus <- tm_map(reviews_corpus, stemDocument(reviews_corpus, language="italian"))

使用

reviews_corpus <- tm_map(reviews_corpus, function(x) SnowballC::wordStem(x, language = "italian"))

但我的建议是,如果您使用非英语语言,请使用 quanteda 包。

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 2013-05-31
    • 2018-10-28
    • 2019-10-26
    • 2019-08-03
    • 2017-05-08
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多