2016-06-09 6 views
0

"euroscepticism"또는 "eurosceptic"이라는 용어를 사용하는 기준에 따라 수집 된 뉴스 기사의 데이터 세트가 있습니다. 이 기사의 주 주제를 확인하기 위해 lda 패키지 (dfm 행렬을 사용하여 quanteda 내장)를 사용하여 주제 모델을 실행했습니다. 그러나 내가 관심있는 단어는 어떤 주제에도 나타나지 않습니다. 따라서이 단어들을 모델에 넣고 싶습니다. 정확히 어떻게해야하는지 모르겠습니다.LDA 주제 모델에 단어를 시돈 R

패키지 topicmodels은 "matrix 또는 객체 클래스 simple_triplet_matrix"으로 지정할 수있는 seedwords라는 인수를 허용하지만 다른 지침은 없음을 알 수 있습니다. simple_triplet_matrix은 문자열이 아닌 정수 만 사용하는 것 같습니다. 그러면 누구나 모델에 'euroscepticism'과 'eurosceptic'이라는 단어를 뿌릴 것입니다. 여기

코드의 단축 버전입니다 :

library("quanteda") 
library("lda") 

##Load UK texts/create corpus 
UKcorp <- corpus(textfile(file="~Michael/DM6/*")) 

##Create document feature matrix 
UKdfm2 <- dfm(UKcorp, ngrams =1, verbose = TRUE, toLower = TRUE, 
     removeNumbers = TRUE, removePunct = TRUE, removeSeparators = TRUE, 
     removeTwitter = FALSE, stem = TRUE, ignoredFeatures =  
     stopwords(kind="english"), keptFeatures = NULL, language = "english",  
     thesaurus = NULL, dictionary = NULL, valuetype = "fixed")) 

##Convert to lda model 
UKlda2 <- convert(UKdfm2, to = "lda") 

##run model 
UKmod2 <- lda.collapsed.gibbs.sampler(UKlda2$documents, K = 15, UKlda2$vocab, 
      num.iterations = 1500, alpha = .1,eta = .01, initial = NULL, burnin 
      = NULL, compute.log.likelihood = TRUE, trace = 0L, freeze.topics = FALSE) 
+0

'lda'를 실행하기 전에 당신이 사용하는 단어가'dtm'에 있는지 확인 하시겠습니까? 단어가 드문 경우 단어가 삭제 될 수 있습니다. 또한'stem = TRUE'을 사용하고 있습니다. 이것은 "euroscepticism"이라는 단어를 유로화로 줄이는 결과를 가져올 수 있습니다. 체크 아웃 할 것이 있습니다. –

답변

0

붕괴 된 깁스 샘플러를 통해 추정하는 단어에 대한 사전 가중치를 첨부 할 때 당신을 수 있습니다로 topicmodels 패키지에 "시드"말은 다른 절차이며, . (Computing Linguistics 협회) 그러나 이것은 주제에 대한 평가 전략의 일부이다. (예를 들어, Jagarlamudi, J., Daumé, H., III, & Udupa, R. (2012) Incorporating lexical priors into topic models (pp.204-213) 관심있는 핵심 단어가 귀하의 맞춤 토픽에 남아 있도록 보장하는 방법이 아닙니다. 희소성에 따라 제거 기준을 설정하지 않은 경우 lad::lda.collapsed.gibbs.sampler(), then *every* term in your을 호출하기 전에 UKlda2 $ vocab` 벡터에 주제별 확률이 지정됩니다.

아마 여기서 일어나는 일은 단어가 너무 낮은 빈도로 어느 주제에서나 쉽게 찾을 수 없다는 것입니다. 또한 형태소가 그들을 변경된 것을 가능 예 :

quanteda::char_wordstem("euroscepticism") 
## [1] "eurosceptic" 

난 당신이 단어를 통해, 첫째 DFM에 존재하는지 확인 제안 :

colSums(UKdfm2)["eurosceptic"] 

그리고 당신은의 장착 분포를 볼 수 있습니다 이 단어와 맞는 주제 모델 객체의 다른 단어에 대한 주제 비율.

+1

아, 알겠습니다. 나는 씨 뿌리기가 더 높은 할당 된 무게로 우선 순위를 매김으로써 특정 키워드 주위의 모델을 '구축'하는 방법이라고 생각했습니다. Eurosceptic은 dfm에 표시되지만 생성 된 주제와 강하게 연결되어서는 안됩니다. 예를 들어 주제에 상위 30 개 단어를 표시하면 찾을 수 있습니다. 검색 기준을 안내하는 단어로는 주제가 높지 않습니다. 자체적으로 뭔가를 말해줍니다. 답장을 보내 주셔서 감사합니다. –