gpt4 book ai didi

regex - R tm 在语料库中使用 gsub 替换单词

转载 作者:行者123 更新时间:2023-12-05 00:18:05 26 4
gpt4 key购买 nike

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

最佳答案

您遇到的问题是您的模式中的交替没有 anchor 定,因此只有第一个匹配“获胜”,即使用,其余的不被考虑。

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

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

或者只是将较长的替代品放在较短的替代品之前:
pattern = "medicinee|medecin|medicil|medicin"

请注意,您可以通过对常见错误输入的元音(参见 [ei])和组使用字符类来使模式更快:
pattern = "med[ie]ci(?:n(?:ee)?|l)"

关于regex - R tm 在语料库中使用 gsub 替换单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38605890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com