如何使用 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 数据帧导出中