2013-06-20 6 views
0

나는,R : 대화식 Questn 응답 패턴을 데이터 프레임으로 변환하는 방법? QnA.txt</p> <hr> <p>질문 :


파일 이름을 다음과 같은 텍스트 파일을 읽고 다음과 같은 문제가있다 당신의 이름은 무엇입니까?

답변 : XXXX

질문 : 주소를 알려주십시오.

답변 : XXX, XXXX-에서 ssss는 00000

질문 : 나에게 말해 다른 세부 사항

답변 : 물론, ................


txt <- "directory path" 
QuesAnsFiles <- Corpus(DirSource(txt, encoding = "UTF-8"),readerControl = list(language = "lat")) 

나는 코퍼스에서이 텍스트 파일을 읽고, 지금은있는 내가 같은 dataFrame에 각 코퍼스 파일을 만들 필요가 해당 파일에 텍스트 마이닝을 할 필요가 :

df <- data.frame(Question='',Answer='') 

어떻게하면 각 자료를 읽고 내 욕망의 데이터 프레임으로 변환 할 수 있습니까?

이해에 대한 더보기 :

안양 $ 질문 모든 질문과 그에 안양 $ 응답을 보여줍니다은

가 좋은 말에 approperiate 방법을 제시 해당 질문의 답을 보여줍니다 이 문제로 돌아 가면 나중에 속도에 초점을 맞출 것입니다 ...

답변

2

파일을 readLines 인 문자 벡터로 읽은 다음 re gular expression을 사용하여 필요한 부분을 추출합니다.

library(stringr) 
lines <- readlines("your file") 
questions <- str_match(lines, "Question: (.*)")[, 2] 
answers <- str_match(lines, "Answer: (.*)")[, 2] 
data.frame(
    Question = questions[!is.na(questions)], 
    Answer = answers[!is.na(answers)] 
) 
1

나는이 작업을 쉽게 수행하기 위해 qdap version 1.1.0을 사용할 수 있다고 생각합니다. 첫 번째 qdap에는 보유하고있는 성적 데이터를 읽는 기능이 있습니다 (read.transcript). 그런 다음 재정렬와 sentCombine 우리는 사람이 결합 할 수 있습니다 :

dat <- read.transcript(text="Question: What is your name? 
Answer: XXXX 
Question: Please tell me your address? 
Answer: XXX, xxxx-ssss, 00000 
Question: Tell me other details 
Answer: sure, ................", col.names =qcv(person, text)) 


with(dat[order(dat$person), ], sentCombine(text, person)) 

##  person             text.var 
## 1 Answer      XXXX XXX, xxxx-ssss, 00000 sure, ..... 
## 2 Question What is your name? Please tell me your address? Tell me... 

또한 qdap version 1.1.0는 TM 패키지와 함께 통합 기능의 번호를 추가 있습니다. 자세한 내용은 ?tdm을 참조하십시오.

또한 여기에서 직접 데이터를 읽었습니다. 실제로 read.transcript("directory path")을 사용하고 싶습니다. 이것은 txt, csv, xlsx 및 docx 파일에서 작동합니다.