用R文本分析

前端之家收集整理的这篇文章主要介绍了用R文本分析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用TM包进行大量的分析.我最大的问题之一就是干扰和干扰样转化.

假设我有几个会计相关的条款(我知道拼写问题).
干涸后,我们有:

accounts   -> account  
account    -> account  
accounting -> account  
acounting  -> acount  
acount     -> acount  
acounts    -> acount  
accounnt   -> accounnt

结果:3条款(帐户,帐户,帐户)我希望1(帐户),因为所有这些都与相同的术语相关.

1)纠正拼写是一种可能性,但我从来没有尝试过这样的一种可能性.

2)另一个选项是创建一个参考列表,即account =(accounts,account,accounting,acounting,acount,acounts,accounnt),然后用主项取代所有的出现.在R中我该怎么做?

再次,任何帮助/建议将不胜感激.

解决方法

我们可以设置同义词列表并替换这些值.例如
synonyms <- list(
    list(word="account",syns=c("acount","accounnt"))
)

这表示我们要用“帐户”替换“acount”和“accounnt”(我假设我们在干预后这样做).现在我们来创建测试数据.

raw<-c("accounts","account","accounting","acounting","acount","acounts","accounnt")

现在我们来定义一个转换函数,它将使用主要的同义词替换我们列表中的单词.

library(tm)
replaceSynonyms <- content_transformer(function(x,syn=NULL) { 
    Reduce(function(a,b) {
        gsub(paste0("\\b(",paste(b$syns,collapse="|"),")\\b"),b$word,a)},syn,x)   
})

这里我们使用content_transformer函数定义一个自定义转换.基本上我们只是做一个gsub来替换每个单词.我们可以在语料库上使用这个

tm <- Corpus(VectorSource(raw))
tm <- tm_map(tm,stemDocument)
tm <- tm_map(tm,replaceSynonyms,synonyms)
inspect(tm)

并且我们可以看到所有这些值被转换成“帐户”.要添加其他同义词,只需将其他列表添加到主同义词列表.每个子列表应具有名称“word”和“syns”.

猜你在找的HTML相关文章