R tm使用gsub替换语料库中的单词

R tm substitute words in Corpus using gsub

我有一个包含 200 多个文档的大型文档语料库。正如您可以从如此庞大的语料库中预料的那样,一些单词拼写错误,以不同的格式使用,等等。我已经完成了标准的文本处理,例如转换为小写、删除标点符号、词干提取。在继续分析之前,我正在尝试替换一些单词来纠正拼写并对其进行标准化。我使用与下面相同的语法完成了超过 100 次替换,并且对于大多数替换,它按预期工作。然而,一些(约 5%)没有工作。例如,以下替换似乎只有有限的效果:

docs <- tm_map(docs, content_transformer(gsub), pattern = "medecin|medicil|medicin|medicinee", replacement = "medicine")
docs <- tm_map(docs, content_transformer(gsub), pattern = "eephant|eleph|elephabnt|elleph|elephanyt|elephantant|elephantant", replacement = "elephant")
docs <- tm_map(docs, content_transformer(gsub), pattern = "firehood|firewod|firewoo|firewoodloc|firewoog|firewoodd|firewoodd", replacement = "firewood") 

我所说的有限效果是指即使有些替代品有效,有些则无效。例如,尽管试图替换“elephantant”、“medicinee”、“firewoodd”,他们当我创建 DTM(文档术语矩阵)时仍然存在。

我不知道为什么会出现这种混合效应。

另外,以下行将语料库中的每个单词替换为 collect 的某种组合:

docs <- tm_map(docs, content_transformer(gsub), pattern = "colect|colleci|collectin|collectiong|collectng|colllect|", replacement = "collect")

仅供参考,当我只替换一个单词时,我使用的是语法(注意 fixed=TRUE):

docs <- tm_map(docs, content_transformer(gsub), pattern = "charcola", replacement = "charcoal", fixed=TRUE)

单个替换失败的是:

docs <- tm_map(docs, content_transformer(gsub), pattern = "dogmonkeycat", replacement = "dog monkey cat", fixed=TRUE)

你遇到的问题是你的模式中的交替没有锚定,因此只有第一个匹配 "wins",即使用,其余不考虑。

您应该在交替周围使用一些 "anchors"(例如,单词边界):

pattern = "\b(medecin|medicil|medicin|medicinee)\b"

或者将较长的备选方案 放在 较短的备选方案之前:

pattern = "medicinee|medecin|medicil|medicin"

请注意,您可以通过使用字符 类 来加快拼写速度

pattern = "med[ie]ci(?:n(?:ee)?|l)"