r - 删除 R 中的标点符号,但保留标点符号/“句子标记”“!”、“。”、“?” 在句末
问题描述
我目前正在尝试在我正在使用的文本语料库上创建一个基于句子的 LDA。为了检测句子并拆分它们,我使用了包中的sent_detect()
函数。openNLP
但是,我正在使用的数据集非常不干净,并且包含许多其他“标点符号”,我想在使用该sent_detect()
函数之前将其删除。
通常,我会在文本语料库上使用以下代码(来自tm
包)来删除标点符号:
text.corpus <- tm_map(text.corpus, removePunctuation)
但是,此函数会删除所有类型的标点符号,包括 “.”、“?”、“!”、“|” 函数用于sent_detect()
检测句子。因此,将文本分成单独的句子会破坏我的目标。
有没有办法使用上述tm_map()
功能删除标点符号但排除特定的“句子指示符”(*“。”,“?”,“!”,“|”**)?
这是一个文本示例:
不好笑; - 我根本不喜欢这部电影/电影(因为演员很糟糕)。然而,我真的很喜欢这里的风景!
通常,上面removePunctuation
会删除所有标点符号并留下以下句子:
不好笑我根本不喜欢这部电影,因为演员很糟糕,但我真的很喜欢这里的风景
但是,我想要结束的是:
不好笑我根本不喜欢这部电影,因为演员很糟糕。但是我真的很喜欢这里的风景!
谢谢!
Ps:使用 openNLP 包不是必须的,我也对任何其他解决方案持开放态度!
解决方案
您可以使用gsub
将要删除的所有字符定义为模式,将它们与交替标记连接,并|
确保元字符(如(
和)
)正确转义为争论:\\
""
gsub(";|- |/ |,|\\(|\\)", "", s)
[1] "not funny i did not like the movie film at all since the actors were terrible. however i really enjoyed the scenery!"
数据:
s <- "not funny; - i did not like the movie / film at all (since the actors were terrible). however, i really enjoyed the scenery!"
推荐阅读
- javascript - p5.js 使用 directionalLight 渲染纹理时出现意外的缓慢性能
- apache-spark - 工作人员初始化后运行脚本
- reactjs - 路由内的嵌套路由不起作用 - React
- java - Thymeleaf 返回视图与锚标记
- mysql - 在 Unix 服务器上迁移后更新查询突然停止工作
- mysql - phpmyadmin 复制变量
- prolog - 在序言中生成诗句的问题
- ant - 使用 ant(build.xml) 将消息发送到 ibm mq
- javascript - 如何在单击添加按钮时复制完整表单(+ 加号)
- python - 重定向输出时使用 pdb