我正在对一个大型数据库进行文本挖掘,以创建指示变量,指示观察的注释字段中某些短语的出现。评论由技术人员输入,因此使用的术语始终保持一致。
然而,在某些情况下,技术人员拼错了一个单词,因此我的grepl()函数没有发现观察中发生的短语(尽管是错误的)。理想情况下,我希望能够将短语中的每个单词提交给一个函数,这将返回几个常见的拼写错误或所述单词的拼写错误。这样的R函数是否存在?
有了这个,我可以在评论字段中搜索短语的这些拼写错误的所有可能组合,并将其输出到另一个数据框。这样,我可以根据具体情况查看每个出现的情况,以确定我感兴趣的现象是否实际上由技术人员描述。
我已经用Google搜索了,但是只找到了对R的实际拼写检查包的引用。我要找的是一个“反向”拼写检查器。由于我所寻找的短语数量相对较少,我实际上可以手工检查拼写错误;我只是认为将这种能力内置到R包中以便将来进行文本挖掘工作会很好。
感谢您的时间!
答案 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"