我正在尝试从语料库中删除撇号,但前提是它们是段落中的第一个字符。我看过关于在句子中查找第一个单词的帖子,但没有找到段落。
我尝试这样做的原因是因为我正在分析文本。我想去掉所有的标点符号,但只在单词中间留下撇号和破折号。为了开始这个,我做了:
library(tm)
library(qdap)
#docs is any corpus
docs.test=tm_map(docs, PlainTextDocument)
docs.test=tm_map(docs.test, content_transformer(strip), char.keep=c("'","-"))
for(j in seq(docs.test))
{
docs[[j]] <- gsub(" '", " ", docs[[j]])
}
这成功地删除了除新行开始的撇号之外的所有撇号。为了在新行上删除它们,我尝试了:
for(j in seq(docs.test))
{
docs[[j]] <- gsub("r'", " ", docs[[j]])
docs[[j]] <- gsub("n'", " ", docs[[j]])
docs[[j]] <- gsub("<p>'", " ", docs[[j]])
docs[[j]] <- gsub("</p>'", " ", docs[[j]])
}
总的来说,我认为找到一种方法来提取段落的第一个单词会很有用。对于我的特定问题,我正在尝试它只是为了获得这些撇号。我目前正在使用软件包 qdap 和 tm,但愿意使用更多。
有什么想法吗?
谢谢!
您没有提供测试示例,但这里有一个保留单词内撇号和连字符的函数。 它在不同的包中,但如末尾的示例所示,如果需要,很容易强制到常规列表:
require(quanteda)
txt <- c(d1 = ""This" is quoted.",
d2 = "Here are hypen-words.",
d3 = "Example: 'single' quotes.",
d4 = "Possessive plurals' usage.")
(toks <- tokens(txt, removePunct = TRUE, removeHyphens = FALSE))
## tokens from 4 documents.
## d1 :
## [1] "This" "is" "quoted"
##
## d2 :
## [1] "quanteda's" "hypen-words"
##
## d3 :
## [1] "Example" "single" "quotes"
##
## d4 :
## [1] "Possessive" "plurals" "usage"
您可以通过这种方式返回列表,当然,如果需要,也可以通过sapply()
paste(x, collapse = " ")
等方式返回文档。
as.list(toks)
## $d1
## [1] "This" "is" "quoted"
##
## $d2
## [1] "quanteda's" "hypen-words"
##
## $d3
## [1] "Example" "single" "quotes"
##
## $d4
## [1] "Possessive" "plurals" "usage"