使用R - “逆”拼写检查器在字符向量中搜索单词拼写错误

时间:2013-02-01 21:06:26

标签: r spell-checking text-mining tm

我正在对一个大型数据库进行文本挖掘,以创建指示变量,指示观察的注释字段中某些短语的出现。评论由技术人员输入,因此使用的术语始终保持一致。

然而,在某些情况下,技术人员拼错了一个单词,因此我的grepl()函数没有发现观察中发生的短语(尽管是错误的)。理想情况下,我希望能够将短语中的每个单词提交给一个函数,这将返回几个常见的拼写错误或所述单词的拼写错误。这样的R函数是否存在?

有了这个,我可以在评论字段中搜索短语的这些拼写错误的所有可能组合,并将其输出到另一个数据框。这样,我可以根据具体情况查看每个出现的情况,以确定我感兴趣的现象是否实际上由技术人员描述。

我已经用Google搜索了,但是只找到了对R的实际拼写检查包的引用。我要找的是一个“反向”拼写检查器。由于我所寻找的短语数量相对较少,我实际上可以手工检查拼写错误;我只是认为将这种能力内置到R包中以便将来进行文本挖掘工作会很好。

感谢您的时间!

1 个答案:

答案 0 :(得分:5)

正如Gavin Simpson建议的那样,你可以使用aspell。我想为此工作你需要安装aspell。在许多Linux发行版中,它是默认的;我不知道其他系统或是否与R一起安装。

有关使用示例,请参阅以下函数。这取决于您的输入数据以及您想要对结果做些什么(例如,使用第一个建议的正确拼写错误),您没有指定:

check_spelling <- function(text) {
  # Create a file with on each line one of the words we want to check
  text <- gsub("[,.]", "", text)
  text <- strsplit(text, " ", fixed=TRUE)[[1]]
  filename <- tempfile()
  writeLines(text, con = filename);
  # Check spelling of file using aspell
  result <- aspell(filename)
  # Extract list of suggestions from result
  suggestions <- result$Suggestions
  names(suggestions) <- result$Original
  unlink(filename)
  suggestions
}

> text <- "I am text mining a large database to create indicator variables which indicate the occurence of certain phrases in a comments field of an observation. The comments were entered by technicians, so the terms used are always consistent. "
> check_spelling(text)
$occurence
[1] "occurrence"   "occurrences"  "occurrence's"