Retour à l'index: [002] Analyse de la syntaxe> [003] Statistiques des paroles des parties Traitement> [004] Traitement statistique de l'analyse syntaxique
Faisons une analyse de texte en utilisant le résultat d'une analyse morphologique et d'un traitement statistique simple en utilisant NLP4J.
«L'analyse morphologique» et «l'analyse syntaxique» s'apparentent à «comment utiliser un couteau de cuisine» en termes de cuisine. Si vous ajoutez "traitement statistique" en plus de "analyse morphologique" et "analyse syntaxique", je pense que l'analyse de texte = cuisine. Le traitement statistique ici utilise des traitements simples, mais je pense que c'est aussi une bonne idée d'inclure l'apprentissage automatique et le traitement statistique compliqué.
Maintenant, supposons que vous ayez le document suivant. Une ligne est un enregistrement.
"Toyota", "Je fabrique une voiture hybride."
"Toyota", "Nous vendons des voitures hybrides."
"Toyota", "Je fabrique une voiture."
"Toyota", "Je vends des voitures."
"Nissan", "Je fabrique un EV."
"Nissan", "Je vends EV."
"Nissan", "Je vends des voitures."
"Nissan", "Nous sommes affiliés à Renault."
"Nissan", "Je vends des voitures légères."
"Honda", "Je fabrique une voiture."
"Honda", "Je vends des voitures."
"Honda", "Je fabrique un vélo."
"Honda", "Je vends des vélos."
"Honda", "Je vends des voitures légères."
"Honda", "Je fabrique une voiture légère."
Lorsque vous divisez le document en «Toyota», «Nissan» et «Honda», quels sont les «mots-clés caractéristiques»? Je vais essayer de mettre des mots-clés caractéristiques en utilisant NLP4J. (Pas de traitement difficile) Le fait est que le traitement statistique est effectué à l'aide de la classe "SimpleDocumentIndex".
Maven
<dependency>
<groupId>org.nlp4j</groupId>
<artifactId>nlp4j</artifactId>
<version>1.0.0.0</version>
</dependency>
Code1
public class HelloTextMiningMain1 {
public static void main(String[] args) throws Exception {
//Préparation de documents (lecture CSV etc. est également possible)
List<Document> docs = new ArrayList<Document>();
{
docs.add(createDocument("Toyota", "Je fabrique une voiture hybride."));
docs.add(createDocument("Toyota", "Nous vendons des voitures hybrides."));
docs.add(createDocument("Toyota", "Je fabrique une voiture."));
docs.add(createDocument("Toyota", "Je vends des voitures."));
docs.add(createDocument("Nissan", "Je fabrique un EV."));
docs.add(createDocument("Nissan", "Je vends EV."));
docs.add(createDocument("Nissan", "Je vends des voitures."));
docs.add(createDocument("Nissan", "Nous sommes affiliés à Renault."));
docs.add(createDocument("Nissan", "Je vends des voitures légères."));
docs.add(createDocument("Honda", "Je fabrique une voiture."));
docs.add(createDocument("Honda", "Je vends des voitures."));
docs.add(createDocument("Honda", "Je fabrique un vélo."));
docs.add(createDocument("Honda", "Je vends des vélos."));
docs.add(createDocument("Honda", "Je vends des voitures légères."));
docs.add(createDocument("Honda", "Je fabrique une voiture légère."));
}
//Annotateur d'analyse morphologique
DocumentAnnotator annotator = new YJpMaAnnotator();
//Traitement de l'analyse morphologique
annotator.annotate(docs);
//Préparation de l'index des mots clés (traitement statistique)
Index index = new SimpleDocumentIndex();
//Processus d'indexation des mots-clés
index.addDocuments(docs);
{
//Acquisition de mots-clés à forte cooccurrence
List<Keyword> kwds = index.getKeywords("nom", "item=Nissan");
System.out.println("Keywords(nom) for Nissan");
for (Keyword kwd : kwds) {
System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
}
}
{
//Acquisition de mots-clés à forte cooccurrence
List<Keyword> kwds = index.getKeywords("nom", "item=Toyota");
System.out.println("Keywords(nom) for Toyota");
for (Keyword kwd : kwds) {
System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
}
}
{
//Acquisition de mots-clés à forte cooccurrence
List<Keyword> kwds = index.getKeywords("nom", "item=Honda");
System.out.println("Keywords(nom) for Honda");
for (Keyword kwd : kwds) {
System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
}
}
}
static Document createDocument(String item, String text) {
Document doc = new DefaultDocument();
doc.putAttribute("item", item);
doc.setText(text);
return doc;
}
}
Output
Keywords(nom) for Nissan
3.0,EV
3.0,Renault
3.0,Alliance
1.0,Voiture légère
0.6,Voiture
Keywords(nom) for Toyota
3.8,hybride
3.8,voiture
1.5,Voiture
Keywords(nom) for Honda
2.5,bicyclette
1.7,Voiture légère
1.0,Voiture
C'est facile! Le résultat est comme ça! Cela correspond-il au sens humain?
Introduction de NLP4J- [000] Traitement du langage naturel avec Java Index
https://www.nlp4j.org/
Recommended Posts