我目前正在尝试在我正在使用的文本语料库上创建基于句子的LDA。要检测句子并拆分它们,我正在使用sent_detect()
程序包中的openNLP
函数。
但是,我正在使用的数据集非常不干净,并且包含许多我想在使用sent_detect()
函数之前摆脱的“标点符号”。
通常,我将在文本语料库上使用以下代码(来自tm
包)来删除标点符号:text.corpus <- tm_map(text.corpus, removePunctuation)
但是,此功能将删除由sent_detect()
功能用于检测句子的所有标点符号包括 “。”,“?”,“!”,“ |”。因此,这将破坏我将文本拆分为单独句子的目的。
是否可以使用上述tm_map()
功能删除标点符号,但排除特定的“句子指示符”(*“。”,“?”,“!”,“ |” **)?
这是一个文本示例:
不好笑; -我根本不喜欢电影/电影(因为演员很糟糕)。但是,我真的很喜欢风景!
通常,以上removePunctuation
将删除所有标点符号并留下以下句子:
[不好笑,我一点都不喜欢电影,因为演员很糟糕,但是我真的很喜欢风景
但是,我最后要得到的是:
[不好笑,因为演员们太可怕了,我一点也不喜欢这部电影。但是我真的很喜欢风景!
谢谢!
Ps:使用openNLP软件包不是必须的,我也愿意接受任何其他解决方案!
您可以使用gsub
:
gsub(";|-|/|\\(|\\),", "", s)
数据:
s <- "not funny; - i did not like the movie / film at all (since the actors were terrible). however, i really enjoyed the scenery!"