Je voulais pratiquer JavaFX et les packages autonomes, Je voulais faire un outil que je pourrais utiliser de toute façon, alors j'ai décidé d'utiliser LDA. Voici un résumé de LDA sur Java. Voir les liens à la fin de ce livre pour JavaFX et les packages autonomes.
Il s'agit de l'une des méthodes d'apprentissage automatique (à usage général) pour estimer des sujets à partir de documents spécifiés dans le traitement du langage naturel. Depuis 2019, l'apprentissage en profondeur est populaire, mais avant cela, j'étais en voyage d'affaires pour améliorer la précision dans le domaine de la PNL. Pour ceux qui veulent en savoir plus sur la logique, les pages suivantes sont recommandées pour une lecture facile.
Extrait de Latent Dirichlet Allocation (LDA) Introduction to Yurufuwa
LDA est un type de modèle de langage qui suppose qu'un document se compose de plusieurs rubriques. En japonais, on l'appelle "Potential Diricle Allocation Method". Si vous décrivez un mot comme superficiel, le sujet est potentiel car il n'apparaît pas en surface contrairement à un mot. Je me demande si on l'appelle «méthode de distribution potentielle de Diricle» car on suppose que la distribution de Diricle est la distribution a priori de la distribution des éléments potentiels. (Omis) La distribution de Diricre est à peu près la distribution de probabilité de la distribution de probabilité. Par exemple, s'il y a trois thèmes, "sports", "économie" et "politique" La probabilité que chaque thème soit généré (sport, économie, politique) = (0,3, 0,2, 0,5) La probabilité que 0> .1, (sports, économie, politique) = (0,1, 0,2, 0,7) détermine la probabilité de la distribution de probabilité égale à 0,2.
En tant que politique d'implémentation LDA, la bibliothèque Python appelée gensim semble être célèbre. Référence: Introduction to gensim
Du point de vue de la simplification des applications JavaFX ultérieures, nous ne collaborerons pas avec Python et Java. Un exemple d'implémentation Java LDA a été publié sur GitHub, j'ai donc décidé de l'emprunter. Merci.
J'ai fait deux hits sous le nom de LDA4j, mais cette fois j'ai adopté le module de Mr. hankcs. Je l'aime presque. (Pour conserver un ensemble de documents en entrée, 1 fichier (1 document par ligne) dans breakbee / LDA4J, Dans hankcs / LDA4j, il y avait une différence entre plusieurs fichiers (1 fichier, 1 document). J'ai personnellement préféré par dossier)
environnement | un service/version |
---|---|
Environnement d'exécution | Windows10 |
Environnement de développement | eclipse 4.1.0 |
langage de développement | Java 8 |
Tirez le module pour éclipser de manière appropriée. Téléchargez forks & clones ou Zip depuis Github et importez des projets. Après cela, j'ai créé mon propre module d'exécution. (MainRunner.java)
Comme le dit ReadMe ...
MainRunner.java
package com.ketman.app;
import java.io.IOException;
import java.util.Map;
import com.hankcs.lda.Corpus;
import com.hankcs.lda.LdaGibbsSampler;
import com.hankcs.lda.LdaUtil;
public class MainRunner {
public static void main(String[] args)
{
// 1. Load corpus from disk
Corpus corpus;
try {
corpus = Corpus.load("data/mini");
// 2. Create a LDA sampler
LdaGibbsSampler ldaGibbsSampler = new LdaGibbsSampler(corpus.getDocument(), corpus.getVocabularySize());
// 3. Train it
ldaGibbsSampler.gibbs(10);
// 4. The phi matrix is a LDA model, you can use LdaUtil to explain it.
double[][] phi = ldaGibbsSampler.getPhi();
Map<String, Double>[] topicMap = LdaUtil.translate(phi, corpus.getVocabulary(), 10);
LdaUtil.explain(topicMap);
} catch (IOException e) {
//Bloc de capture généré automatiquement TODO
e.printStackTrace();
}
}
}
Essayez d'exécuter MainRunner à partir de Exécuter ⇒ Exécuter la configuration ⇒ Application Java. Vous devriez voir la sortie suivante sur la console. Estime le nombre spécifié (10) de sujets pour l'ensemble de documents stockés dans data / mini.
Sampling 1000 iterations with burn-in of 100 (B/S=20).
BBBBB|S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||S||
topic 0 :
Chine=0.0097164123524064
Marché=0.007268178259268298
Entreprise=0.006646897977003122
Ltd.=0.006420165848545306
Exposition=0.005931172520179485
Périple=0.005517115761050293
Imminent=0.004144655174798414
Journaliste=0.003896963247878764
Des produits=0.0038405773231741857
Un service=0.0036131627315211285
topic 1 :
Beau pays=0.007753386939328633
Japon=0.004271883755069139
训练=0.0039382838929572965
Systématique=0.0038821627109404673
Bureau=0.0037908977218186262
département=0.003713327985408122
Nuire=0.003662570207063461
Avance=0.003548971364140448
Création=0.003465095755923189
Équipement=0.0033491792847693187
~ Omis ~
topic 9 :
Hirai=0.00887335526016362
队员=0.003820752808354389
联赛=0.0034088636107220934
Balle=0.0030593385176732896
俱 乐 Département=0.002519739439727434
couronne=0.0025101075962186965
Chine=0.002314435002019442
Balle=0.0023066510579788685
赛=0.002282312176369107
Journaliste=0.0022029528425211455
Recommended Posts