node.jsのjavascriptでの潜在的なディリクレアロケーション(LDA)トピックモデリング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 ) ;上記の例は、2つのトピックで次の結果を生み出します(トピック1は「猫関連」、トピック2は「犬関連」です):
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は、ストップワードを使用してテキスト内の一般的な用語を無視します(たとえば、これ、それ、それ、私たち)。デフォルトでは、ストップワードリストには英語が使用されます。追加の言語を使用するには、次のように言語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」という名前が付けられます。ファイルの内容は、既存のSTOP-WORDSリストの形式に従う必要があります。フォーマットは次のとおりです。
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