Latent Dirichlet Allocation (LDA) Themenmodellierung in JavaScript für node.js. LDA ist ein Algorithmus für maschinelles Lernen, der Themen und ihre damit verbundenen Schlüsselwörter aus einer Sammlung von Dokumenten extrahiert.
In LDA kann ein Dokument mehrere verschiedene Themen enthalten, die jeweils ihre eigenen bezogenen Begriffe haben. Der Algorithmus verwendet ein probabilistisches Modell, um die Anzahl der angegebenen Themen zu erkennen und ihre zugehörigen Schlüsselwörter zu extrahieren. Beispielsweise kann ein Dokument Themen enthalten, die als Strand und wetterbedingt eingestuft werden könnten. Das Strandthema kann verwandte Wörter wie Sand, Ozean und Wasser enthalten. In ähnlicher Weise kann das Wetterthema verwandte Wörter wie Sonne, Temperatur und Wolken enthalten.
Siehe 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 ) ;Das obige Beispiel erzeugt das folgende Ergebnis mit zwei Themen (Thema 1 ist "CAT-bezogen", Thema 2 ist "hundebezogen"):
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 gibt eine Reihe von Themen zurück, die jeweils eine Reihe von Begriffen enthalten. Das Ergebnis enthält das folgende Format:
[ [ { 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 } ] ]
Das Ergebnis kann wie folgt durchquert werden:
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 verwendet Stop-Wörter, um gemeinsame Begriffe im Text zu ignorieren (zum Beispiel: Dies, wir). Standardmäßig verwendet die Liste der Stoppwörter Englisch. Um zusätzliche Sprachen zu verwenden, können Sie eine Reihe von Sprach -IDs wie folgt angeben:
// 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' ] ) ;Um eine neue lachspezifische Stoppword-Liste hinzuzufügen, erstellen Sie eine Datei /lda/lib/stopwords_xx.js, wobei XX die ID für die Sprache ist. Beispielsweise könnte eine französische Stop-Words-Liste als "stopwords_fr.js" bezeichnet werden. Der Inhalt der Datei sollte dem Format einer vorhandenen Stop-Words-Liste folgen. Das Format ist wie folgt:
exports . stop_words = [
'cette' ,
'que' ,
'une' ,
'il'
] ; Ein spezifischer Zufallssamen kann verwendet werden, um die gleichen Begriffe und Wahrscheinlichkeiten während der nachfolgenden Läufe zu berechnen. Sie können den zufälligen Samen wie folgt angeben:
// Use the random seed 123.
result = lda ( documents , 2 , 5 , null , null , null , 123 ) ; Kory Becker http://www.primaryobjects.com
Basierend auf der ursprünglichen JavaScript -Implementierung https://github.com/awaisathar/lda.js