我有一个包含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")
通过有限的作用,我的意思是,即使某些替代有效,但某些替代无效。例如,尽管尝试替换“大象”,“药”,“木柴”,但当我创建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)
您遇到的问题是您的模式中的变更没有固定下来,因此只有第一个匹配的“获胜者”(即使用了),而其余的则不被考虑。
您应该在交替之间使用一些“锚”(例如单词边界):
pattern = "\\b(medecin|medicil|medicin|medicinee)\\b"
或只是将较长的替代方案放在较短的替代方案之前:
pattern = "medicinee|medecin|medicil|medicin"
请注意,通过对常见的错误键入的元音(请参阅参考资料[ei]
)和组使用字符类,可以使模式更快:
pattern = "med[ie]ci(?:n(?:ee)?|l)"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句