提取段R的第一个单词

时间:2017-03-19 15:06:30

标签: r tm corpus punctuation paragraphs

我正在尝试从语料库中删除撇号,但只有当它们是段落中的第一个字符时才会删除。我看过有关在句子中找到第一个单词的帖子,但没有看到段落。

我之所以这样做,是因为我正在分析文字。我想删除所有标点符号,但在单词中间留下撇号和短划线 。为此,我做了:

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

有什么想法吗?

谢谢!

1 个答案:

答案 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"