我一直在尝试删除dfmedia (大小29175)中与dfvocab (大小6001)中包含的任何单词相匹配的任何单词。
dfmedia: each row is a sentence of words in chinese.
我喜歡吃蘋果; 我愛吃饅頭; 我不喜歡菠菜; 我最討厭蘋果!;我很愛菠菜啊;哪個中國人敢不喜歡饅頭?;哎呀饅頭蘋果菠菜都是食物管人家喜歡否?
dfvocab: 蘋果,饅頭,菠菜
desired result: 我喜歡吃; 我愛吃; 我不喜歡; 我最討厭!;我很愛啊;哪個中國人敢不喜歡?;哎呀都是食物管人家喜歡否?我不认为中文和英文的结果会有什么不同,因为这是一个简单的匹配和删除/替换,但我在这里包括中文以防万一,因为我的og数据是中文的。
我尝试过gsub()、mapply(),并使用stringr将dfmedia和dfvocab绑定到一个dataframe/removing中。然而,由于dfvocab和dfmedia的大小不同,我不确定如何使用在线建议的方法来处理这个问题。
任何帮助都将不胜感激!
发布于 2020-10-25 09:47:31
使用gsub非常简单。只需将所有单词与正则表达式或操作符paste0在一起,并替换为""
> gsub(paste0(dfvocab, collapse="|"), "", dfmedia)
[1] "我喜歡吃" " 我愛吃" " 我不喜歡" " 我最討厭!" "我很愛啊" "哪個中國人敢不喜歡?"
[7] "哎呀都是食物管人家喜歡否"(我不会说中文,也不会读中文。)我想,这么大的一个单词集要被删除,你可能需要把6000个单词分成块,我怀疑这会很慢。您可能希望查看tm包,因为文本挖掘可能是一项需要优化此类操作的任务。
下面是一种构建可重现示例的方法:
> dfmedia <- scan(text="我喜歡吃蘋果; 我愛吃饅頭; 我不喜歡菠菜; 我最討厭蘋果!;我很愛菠菜啊;哪個中國人敢不喜歡饅頭?;哎呀饅頭蘋果菠菜都是食物管人家喜歡否", what="", sep=";")
Read 7 items
>
> dfvocab <- scan(text="蘋果,饅頭,菠菜", what="", sep=",")
Read 3 itemshttps://stackoverflow.com/questions/64517978
复制相似问题