如何使用 tm 包从非英语语料库中删除常用词尾?

Posted

技术标签:

【中文标题】如何使用 tm 包从非英语语料库中删除常用词尾?【英文标题】:How to remove common word endings from a non-English corpus using the tm package? 【发布时间】: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,而是在将文本转换为语料库之前先执行它吗? 【参考方案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 包。

【讨论】:

以上是关于如何使用 tm 包从非英语语料库中删除常用词尾?的主要内容,如果未能解决你的问题,请参考以下文章

OSGi 捆绑包从非捆绑包 jar 导入包:为它们创建捆绑包?

如何使用 R 中的 TM 包将我的语料库元数据附加到我的 dtm 数据帧导出中

从 R 中的语料库或数据框中删除英语以外的语言

使用 R 中的 tm 包为多个语料库制作前 N 个频繁项的数据框

如何使用 nltk 找出英语中是不是存在单词

英语动词加es的规律