1

我正在尝试从语料库中删除撇号,但前提是它们是段落中的第一个字符。我看过关于在一个句子中找到第一个单词的帖子,但不是一个段落。

我尝试这样做的原因是因为我正在分析文本。我想去掉所有的标点符号,但在单词中间留下撇号和破折号。为了开始这个,我做了:

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,但可以使用更多。

有任何想法吗?

谢谢!

4

1 回答 1

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()ing apaste(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" 
于 2017-03-27T12:09:39.973 回答