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)"
我有一个包含 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)"