Zurück zum Index: [002] Syntaxanalyse> [003] Teiltextstatistik Verarbeitung> Statistische Verarbeitung der Syntaxanalyse (https://qiita.com/oyahiroki/items/257b2d730fc71366fbcc)
Verwenden wir NLP4J, um eine Textanalyse mit den Ergebnissen der morphologischen Analyse und der einfachen statistischen Verarbeitung durchzuführen.
"Morphologische Analyse" und "Syntaxanalyse" ähneln in Bezug auf das Kochen der Verwendung eines Küchenmessers. Wenn Sie zusätzlich zu "morphologische Analyse" und "Syntaxanalyse" "statistische Verarbeitung" hinzufügen, denke ich, dass Textanalyse = Kochen. Die statistische Verarbeitung verwendet hier einfache, aber ich denke, es ist auch gut, maschinelles Lernen und komplizierte statistische Verarbeitung einzubeziehen.
Angenommen, Sie haben das folgende Dokument. Eine Zeile ist ein Datensatz.
"Toyota", "Ich mache ein Hybridauto."
"Toyota", "Wir verkaufen Hybridautos."
"Toyota", "Ich mache ein Auto."
"Toyota", "Ich verkaufe Autos."
"Nissan", "Ich mache einen EV."
"Nissan", "Ich verkaufe EV."
"Nissan", "Ich verkaufe Autos."
"Nissan", "Wir sind mit Renault verbunden."
"Nissan", "Ich verkaufe leichte Autos."
"Honda", "Ich mache ein Auto."
"Honda", "Ich verkaufe Autos."
"Honda", "Ich mache ein Fahrrad."
"Honda", "Ich verkaufe Fahrräder."
"Honda", "Ich verkaufe leichte Autos."
"Honda", "Ich mache ein leichtes Auto."
Wenn Sie das Dokument in "Toyota", "Nissan" und "Honda" unterteilen, was sind die "charakteristischen Schlüsselwörter"? Ich werde versuchen, charakteristische Schlüsselwörter mit NLP4J zu löschen. (Keine schwierige Verarbeitung) Der Punkt ist, dass die statistische Verarbeitung mit der Klasse "SimpleDocumentIndex" durchgeführt wird.
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 {
//Vorbereitung von Dokumenten (Lesen von CSV usw. ist ebenfalls möglich)
List<Document> docs = new ArrayList<Document>();
{
docs.add(createDocument("Toyota", "Ich mache ein Hybridauto."));
docs.add(createDocument("Toyota", "Wir verkaufen Hybridautos."));
docs.add(createDocument("Toyota", "Ich mache ein Auto."));
docs.add(createDocument("Toyota", "Ich verkaufe Autos."));
docs.add(createDocument("Nissan", "Ich mache einen EV."));
docs.add(createDocument("Nissan", "Ich verkaufe EV."));
docs.add(createDocument("Nissan", "Ich verkaufe Autos."));
docs.add(createDocument("Nissan", "Wir sind mit Renault verbunden."));
docs.add(createDocument("Nissan", "Ich verkaufe leichte Autos."));
docs.add(createDocument("Honda", "Ich mache ein Auto."));
docs.add(createDocument("Honda", "Ich verkaufe Autos."));
docs.add(createDocument("Honda", "Ich mache ein Fahrrad."));
docs.add(createDocument("Honda", "Ich verkaufe Fahrräder."));
docs.add(createDocument("Honda", "Ich verkaufe leichte Autos."));
docs.add(createDocument("Honda", "Ich mache ein leichtes Auto."));
}
//Annotator für morphologische Analyse
DocumentAnnotator annotator = new YJpMaAnnotator();
//Morphologische Analyseverarbeitung
annotator.annotate(docs);
//Erstellung des Keyword-Index (statistische Verarbeitung)
Index index = new SimpleDocumentIndex();
//Indizierungsprozess für Schlüsselwörter
index.addDocuments(docs);
{
//Erwerb von Keywords mit hoher Koexistenz
List<Keyword> kwds = index.getKeywords("Substantiv", "item=Nissan");
System.out.println("Keywords(Substantiv) for Nissan");
for (Keyword kwd : kwds) {
System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
}
}
{
//Erwerb von Keywords mit hoher Koexistenz
List<Keyword> kwds = index.getKeywords("Substantiv", "item=Toyota");
System.out.println("Keywords(Substantiv) for Toyota");
for (Keyword kwd : kwds) {
System.out.println(String.format("%.1f,%s", kwd.getCorrelation(), kwd.getLex()));
}
}
{
//Erwerb von Keywords mit hoher Koexistenz
List<Keyword> kwds = index.getKeywords("Substantiv", "item=Honda");
System.out.println("Keywords(Substantiv) 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(Substantiv) for Nissan
3.0,EV
3.0,Renault
3.0,Allianz
1.0,Leichtes Auto
0.6,Wagen
Keywords(Substantiv) for Toyota
3.8,Hybrid
3.8,Wagen
1.5,Wagen
Keywords(Substantiv) for Honda
2.5,Fahrrad
1.7,Leichtes Auto
1.0,Wagen
Es ist einfach! Das Ergebnis ist so! Entspricht es dem menschlichen Sinn?
Einführung von NLP4J- [000] Verarbeitung natürlicher Sprache mit Java-Index
https://www.nlp4j.org/
Recommended Posts