我正在尝试从语料库中删除撇号,但只有当它们是段落中的第一个字符时才会删除。我看过有关在句子中找到第一个单词的帖子,但没有看到段落。
我之所以这样做,是因为我正在分析文字。我想删除所有标点符号,但在单词中间留下撇号和短划线 。为此,我做了:
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,但是可以使用更多。
有什么想法吗?
谢谢!
答案 0 :(得分:0)
您没有提供测试示例,但这是一个保持字内撇号和连字符的函数。它位于不同的包中,但正如最后的示例所示,如果您需要它,很容易被强制转换为常规列表:
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"