Node.js에 대한 JavaScript의 LDA (Latent Dirichlet 할당) 주제 모델링 LDA는 문서 모음에서 주제와 관련 키워드를 추출하는 머신 러닝 알고리즘입니다.
LDA에서 문서에는 각각 자체 관련 용어가있는 여러 가지 주제가 포함될 수 있습니다. 알고리즘은 지정된 주제 수를 감지하고 관련 키워드를 추출하기 위해 확률 론적 모델을 사용합니다. 예를 들어, 문서에는 해변 관련 및 날씨 관련으로 분류 될 수있는 주제가 포함될 수 있습니다. 해변 주제에는 모래, 바다 및 물과 같은 관련 단어가 포함될 수 있습니다. 마찬가지로 날씨 주제에는 태양, 온도 및 구름과 같은 관련 단어가 포함될 수 있습니다.
http://en.wikipedia.org/wiki/latent_dirichlet_allocation을 참조하십시오
$ npm install lda var lda = require ( 'lda' ) ;
// Example document.
var text = 'Cats are small. Dogs are big. Cats like to chase mice. Dogs like to eat bones.' ;
// Extract sentences.
var documents = text . match ( / [^.!?]+[.!?]+ / g ) ;
// Run LDA to get terms for 2 topics (5 terms each).
var result = lda ( documents , 2 , 5 ) ;위의 예는 두 가지 주제로 다음과 같은 결과를 생성합니다 (주제 1은 "고양이 관련", 주제 2는 "Dog 관련") :
Topic 1
cats (0.21%)
dogs (0.19%)
small (0.1%)
mice (0.1%)
chase (0.1%)
Topic 2
dogs (0.21%)
cats (0.19%)
big (0.11%)
eat (0.1%)
bones (0.1%)
LDA는 각각의 용어 배열을 포함하는 다양한 주제를 반환합니다. 결과에는 다음 형식이 포함됩니다.
[ [ { term: 'dogs', probability: 0.2 },
{ term: 'cats', probability: 0.2 },
{ term: 'small', probability: 0.1 },
{ term: 'mice', probability: 0.1 },
{ term: 'chase', probability: 0.1 } ],
[ { term: 'dogs', probability: 0.2 },
{ term: 'cats', probability: 0.2 },
{ term: 'bones', probability: 0.11 },
{ term: 'eat', probability: 0.1 },
{ term: 'big', probability: 0.099 } ] ]
결과는 다음과 같이 통과 할 수 있습니다.
var result = lda ( documents , 2 , 5 ) ;
// For each topic.
for ( var i in result ) {
var row = result [ i ] ;
console . log ( 'Topic ' + ( parseInt ( i ) + 1 ) ) ;
// For each term.
for ( var j in row ) {
var term = row [ j ] ;
console . log ( term . term + ' (' + term . probability + '%)' ) ;
}
console . log ( '' ) ;
} LDA는 정지 단어를 사용하여 텍스트의 일반적인 용어를 무시합니다 (예 : 이것은, 즉, 우리). 기본적으로 Stop-Words 목록은 영어를 사용합니다. 추가 언어를 사용하려면 다음과 같이 언어 ID 배열을 지정할 수 있습니다.
// Use English (this is the default).
result = lda ( documents , 2 , 5 , [ 'en' ] ) ;
// Use German.
result = lda ( documents , 2 , 5 , [ 'de' ] ) ;
// Use English + German.
result = lda ( documents , 2 , 5 , [ 'en' , 'de' ] ) ;새로운 언어 별 스톱워드 목록을 추가하려면 /lda/lib/stopwords_xx.js 파일을 만듭니다. 여기서 xx는 언어의 ID입니다. 예를 들어, 프랑스 중지 단어 목록의 이름은 "stopwords_fr.js"라고 할 수 있습니다. 파일의 내용은 기존 스톱 단어 목록의 형식을 따라야합니다. 형식은 다음과 같습니다.
exports . stop_words = [
'cette' ,
'que' ,
'une' ,
'il'
] ; 특정 임의의 시드는 후속 실행 중에 동일한 용어와 확률을 계산하는 데 사용될 수 있습니다. 다음과 같이 임의의 시드를 지정할 수 있습니다.
// Use the random seed 123.
result = lda ( documents , 2 , 5 , null , null , null , 123 ) ; Kory Becker http://www.primaryobjects.com
원본 JavaScript 구현 https://github.com/awaisathar/lda.js를 기반으로합니다