2014-01-15 8 views
0

R에서 'lda'패키지를 사용하여 코퍼스의 토픽 모델 분석을 수행한다 ('corpusB'라고 부르 자.). 나는 먼저 'lexicalize'명령을 사용하여 분석을위한 코퍼스를 준비합니다.이 명령은 용어 - 문서 행렬과 사전 지정되지 않은 경우 코퍼스에 고유 토큰이있는 어휘를 반환합니다.R 토픽 모델링 - lda 명령어 'lexicalize'가 예기치 않은 결과를 낸다.

연구 목적으로 다른 코퍼스에서 유추 된 어휘 ('corpusA'라고 부름)를 사용하여 코퍼스를 어휘 정리하고 싶습니다. 쉽게 수행해야하는 용어입니다. 아직, 그것은 작동하지 않습니다. 다음은 코드 샘플입니다.

A <- lexicalize(corpusA) #the output of this command is just as expected 
B <- lexicalize(corpusB, vocab = corpusA$vocab) 

B$documents #let's see the term-document matrix 
>>NULL #this is what I get 

null 결과가 나타나는 이유는 무엇입니까? 이상하게도, 내가 가져온 코퍼가 아닌 단순한 문자 벡터를 사용하고 있다면 명령이 잘 작동합니다. 유용 할 수 있습니다 더 많은 정보

A <- c("I have the very model of a modern major general") 
B <- c("I have a major headache") 

B1 <- lexicalize(B) 
B1 

$documents 
$documents[[1]] 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 0 1 2 3 4 
[2,] 1 1 1 1 1 


$vocab 
[1] "i"  "have"  "a"  "major" "headache" 


A1 <- lexicalize(A, vocab = B1$vocab) 
A1 
[[1]] 
    [,1] [,2] [,3] [,4] 
[1,] 0 1 2 3 
[2,] 1 1 1 1 

몇 조각 :

1) 나는 (corpusB)에 관심 코퍼스 텍스트의 700메가바이트을 포함, 꽤 상당한 데이터;

2) 'tm'패키지를 사용하여 두 corpora (B와 A)를 R로 가져옵니다. 어휘를 사용하기 전에 'tm'을 사용하여 구두점, 숫자, 불용어를 제거하고 공백을 제거하고 소문자를 제거합니다.

어떤 도움을 주셔서 감사합니다.

+0

을 적용하기 전에 문자 벡터로 변환해야 하는가? 그렇게하면 쉽게 재현 할 수 있습니다. –

+0

예. 나는 이것을 용어 - 문서 행렬로 변환하고, 문제를 해결할 수있는 재판을 할 수 있는지 알아 봅니다 ... – user3197869

답변

0

lexicalize()lda에 적합한 코퍼스 및 어휘를 구성하기 위해 문서 라인의 문자 벡터가 필요합니다. tm 코퍼스는 당신이 어딘가에 corpusA 및 corpusB에 대한 RDATA 파일을 저장할 수 lexicalize()

texts <-data.frame(text=unlist(sapply(corpusA, `[`, "content")), stringsAsFactors=F) 
l_corp <- lexicalize(texts$text)