2017-03-19 53 views
1

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

我试图这样做的原因是因为我在分析文本。我想去掉所有的标点符号,但是撇号和破折号只在文字中间有。要启动此,我所做的:

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

一种选择是使用[tidytext(http://tidytextmining.com/intro.html)框架,并使用断词:'库(gutenbergr);库(tidyverse);库(tidytext); moby_dick < - gutenberg_download(2489); moby_dick%>%unnest_tokens(paragraph,text,token ='paragraph')%>%group_by(paragraph_n = row_number())%>%unnest_tokens(word,paragraph)%>%slice(1)'正则表达式也可以工作,它看起来取决于文本的存储方式。 – alistaire

+0

我试过了你的建议,并做了fullplay = data_frame(file = c2name)%> mutate(text = map(file,read_lines)) fullplay < - fullplay%>%unnest_tokens_(word,text)%>%mutate_ = ROW_NUMBER()) 我得到了一个错误:错误unnest_tokens_(as.vector(贸易作用)): unnest_tokens希望输入的所有列是原子的载体(未列出) 所以,我想这个 fullplay.new = unlist(fullplay $ text) fullplay.new < - fullplay.new%>%unnest_tokens_(word,text)%>%mutate_(linenumber = row_number()) 在tbl [[input_col]]中出现错误错误:无效的下标类型'closure' –

+0

如果不能看到数据结构,很难说,但如果你有ac orpus,如问题所示,尝试tidytext的“tidy”方法将其强制转换为data.frame。 – alistaire

回答

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"