تخصيص Dirichlet Latent Dirichlet (LDA) في JavaScript for Node.js. 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 "مرتبط بالكلاب"):
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 كلمة توقف لتجاهل المصطلحات الشائعة في النص (على سبيل المثال: هذا ، هذا ، نحن). افتراضيًا ، تستخدم قائمة الكلمات الإيقاف الإنجليزية. لاستخدام لغات إضافية ، يمكنك تحديد مجموعة من معرفات اللغة ، على النحو التالي:
// 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 هو المعرف للغة. على سبيل المثال ، يمكن تسمية قائمة كلمات التوقف الفرنسية "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