2017-03-19 2 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

하나의 옵션이 tokenizers을 [tidytext] (http://tidytextmining.com/intro.html) 프레임 워크를 사용하고 사용하는 것 등을하는 paste(x, collapse = " ")을 보내고 sapply()으로 할 필요가있는 경우 :'라이브러리를 (gutenbergr); 도서관 (tidyverse); 도서관 (tidytext); moby_dick <- gutenberg_download (2489); mobiles_dick %> % unnest_tokens (단락, 텍스트, 토큰 = '단락') %> % group_by (단락 번호 = 행 번호()) %> % unnest_tokens (단어, 단락) %> % slice (1) 텍스트가 저장되는 방식에 따라 모양이 달라집니다. – alistaire

+0

나는 당신의 제안을 시도하고, fullplay = data_frame (file = c2name) %> % mutate (텍스트 = map (file, read_lines)) fullplay % unnest_tokens_ (word, text) %> % mutate_ = ROW_NUMBER 내가 오류가있어()) : unnest_tokens_ 오류 (as.vector (fullplay)) : unnest_tokens 입력의 모든 열이 원자 벡터 (하지리스트) 그래서 나는이 fullplay.new을 시도 할 것으로 예상 = unlist (fullplay $ text) fullplay.new % unnest_tokens_ (단어, 텍스트) %> mutate_ (행 번호 = 행 번호) 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" 

당신은 물론 다시 돌아 목록이 방법을 얻을 수 있습니다 문서에 당신은

as.list(toks) 
## $d1 
## [1] "This" "is"  "quoted" 
## 
## $d2 
## [1] "quanteda's" "hypen-words" 
## 
## $d3 
## [1] "Example" "single" "quotes" 
## 
## $d4 
## [1] "Possessive" "plurals" "usage"