【发布时间】:2019-11-20 16:12:52
【问题描述】:
我想在数据集上使用正则表达式进行文本清理。但是我想保留逗号,因为我需要在基于逗号 (,) 清理文本后分割文本。 问题是我对正则表达式不是很熟悉(我通常使用 quanteda 并将单词分别视为 uni-gram,但在这种情况下我不能,因为我需要根据逗号处理每个 X-gram .)
数据集如下所示:
ID Key
1 "Hello, dog_ food, This is it2, water"
2 "wow! nice, love, yes"
3 "1997"
4
5 "blabla, 34 l lol, @IceCream, #nice #wow d, seriously Not"
....
.
.
在我想做的事情中,我想去掉少于 2 个字母的单词,去掉任何不是字母数字词干的单词。
我尝试使用这些命令仅获取低调的字母数字并删除少于 2 个字母的单词,但我最终也取消了逗号,我不知道如何避免它
data$keys <- to_lower(data$keys)
data$keys <- str_replace_all(data$keys, "[^[:alnum:]]", " ")
data$keys <- gsub(" *\\b[[:alpha:]]{1,2}\\b *", " ", data$keys) # Remove 1-2 letter words
data$keys <- gsub("^ +| +$|( ) +", "\\1", data$keys)
预期的输出应该是这样的
ID Key
1 "hello, dog food, this, water"
2 "wow nice, love, yes"
3 "1997"
4
5 "blabla, lol, icecream, nice wow, seriously not"
....
.
.
.
所以基本上,所有内容都小写,删除 2 个字母的单词,删除任何非字母数字的符号。
提前非常感谢您的帮助!
【问题讨论】:
-
显示预期输出。
-
@G.Grothendieck 完成了,希望现在更清楚了,事实是,无论我想对正则表达式做什么操作,我都想确保逗号保持原位。
-
你不能做你已经做的然后用逗号替换空格吗?对我来说似乎是最简单的选择。
-
@HanselPalencia 我不确定我是否理解您的建议。如果我用逗号替换空格,我会用逗号分隔每个单词,我不想要这个。因为我希望一组单词用逗号分隔,因为它们是 noe(即有些单词像“hello”这个词一样单独,而其他单词则不像“wow nice”
-
有道理,没注意到我的错误
标签: r regex nlp data-cleaning