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,但打开使用更多。
任何想法?
谢谢!
一种选择是使用[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
我试过了你的建议,并做了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' –
如果不能看到数据结构,很难说,但如果你有ac orpus,如问题所示,尝试tidytext的“tidy”方法将其强制转换为data.frame。 – alistaire