Latent Dirichlet Allocation (LDA) Pemodelan topik dalam JavaScript untuk Node.js. LDA adalah algoritma pembelajaran mesin yang mengekstraksi topik dan kata kunci terkait dari kumpulan dokumen.
Di LDA, sebuah dokumen dapat berisi beberapa topik berbeda, masing -masing dengan persyaratan terkait mereka sendiri. Algoritma menggunakan model probabilistik untuk mendeteksi jumlah topik yang ditentukan dan mengekstraksi kata kunci terkait mereka. Misalnya, sebuah dokumen mungkin berisi topik yang dapat diklasifikasikan sebagai yang berhubungan dengan pantai dan terkait cuaca. Topik pantai mungkin berisi kata -kata terkait, seperti pasir, laut, dan air. Demikian pula, topik cuaca mungkin berisi kata -kata terkait, seperti matahari, suhu, dan awan.
Lihat 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 ) ;Contoh di atas menghasilkan hasil berikut dengan dua topik (topik 1 adalah "terkait kucing", topik 2 adalah "terkait anjing"):
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 mengembalikan serangkaian topik, masing -masing berisi berbagai istilah. Hasilnya berisi format berikut:
[ [ { 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 } ] ]
Hasilnya dapat dilalui sebagai berikut:
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 menggunakan stop-word untuk mengabaikan istilah umum dalam teks (misalnya: ini, itu, itu, kita). Secara default, daftar stop-word menggunakan bahasa Inggris. Untuk menggunakan bahasa tambahan, Anda dapat menentukan serangkaian ID bahasa, sebagai berikut:
// 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' ] ) ;Untuk menambahkan daftar stop-word khusus bahasa baru, buat file /lda/lib/stopwords_xx.js di mana xx adalah id untuk bahasa. Misalnya, daftar stop-word Prancis dapat dinamai "stopwords_fr.js". Isi file harus mengikuti format daftar stop-word yang ada. Formatnya adalah, sebagai berikut:
exports . stop_words = [
'cette' ,
'que' ,
'une' ,
'il'
] ; Biji acak spesifik dapat digunakan untuk menghitung istilah dan probabilitas yang sama selama menjalankan berikutnya. Anda dapat menentukan benih acak, sebagai berikut:
// Use the random seed 123.
result = lda ( documents , 2 , 5 , null , null , null , 123 ) ; Kory Becker http://www.primaryobjects.com
Berdasarkan Implementasi JavaScript asli https://github.com/awaisathar/lda.js