Zurück zum Index: [003] Statistische Verarbeitung von Teilen> [004] Syntax Statistische Verarbeitung der Analyse> [005-1] NLP4J + Twitter4J (Datenerfassung)
Verwenden wir NLP4J, um eine Textanalyse mit den Ergebnissen der morphologischen Analyse und der einfachen statistischen Verarbeitung durchzuführen.
Nochmal, "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" Abhängigkeitsschlüsselwörter? Ich werde versuchen, charakteristische Schlüsselwörter mit NLP4J zu löschen. (Keine schwierige Verarbeitung) Der Punkt ist, dass wir Syntaxanalyse und statistische Verarbeitung mit der Klasse "SimpleDocumentIndex" verwenden.
Maven
<dependency>
<groupId>org.nlp4j</groupId>
<artifactId>nlp4j</artifactId>
<version>1.0.0.0</version>
</dependency>
Code1
public class HelloTextMiningMain2B {
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 + Annotator für Syntaxanalyse
DocumentAnnotator annotator = new YjpAllAnnotator(); //
{
System.err.println("");
long time1 = System.currentTimeMillis();
//
annotator.annotate(docs);
long time2 = System.currentTimeMillis();
System.err.println("[ms]:" + (time2 - time1));
}
//
Index index = new SimpleDocumentIndex();
{
System.err.println("");
long time1 = System.currentTimeMillis();
//Morphologische Analyse + syntaktische Analyse Morphologische Analyse + syntaktische Analyse Verarbeitungszeit Erstellung des Schlüsselwortindex (statistische Verarbeitung) Indexerstellung Verarbeitung des Schlüsselwortindex
index.addDocuments(docs);
long time2 = System.currentTimeMillis();
System.err.println("Verarbeitungszeit[ms]:" + (time2 - time1));
}
{
//"Substantiv...Erwerb von Schlüsselwörtern, die häufig mit Nissan in "Verben" vorkommen
List<Keyword> kwds = index.getKeywords("Substantiv...Verb", "item=Nissan");
System.out.println("Substantiv...Verben für Nissan");
for (Keyword kwd : kwds) {
System.out.println(String.format("count=%d,correlation=%.1f,lex=%s", kwd.getCount(),
kwd.getCorrelation(), kwd.getLex()));
}
}
{
//"Substantiv...Erwerb von Schlüsselwörtern mit hohem Vorkommen in Toyota mit "Verb"
List<Keyword> kwds = index.getKeywords("Substantiv...Verb", "item=Toyota");
System.out.println("Substantiv...Verbice für Toyota");
for (Keyword kwd : kwds) {
System.out.println(String.format("count=%d,correlation=%.1f,lex=%s", kwd.getCount(),
kwd.getCorrelation(), kwd.getLex()));
}
}
{
//"Substantiv...Erwerb von Schlüsselwörtern, die in hohem Maße zusammen mit Honda mit "Verben" vorkommen
List<Keyword> kwds = index.getKeywords("Substantiv...Verb", "item=Honda");
System.out.println("Substantiv...Verb für Honda");
for (Keyword kwd : kwds) {
System.out.println(String.format("count=%d,correlation=%.1f,lex=%s", kwd.getCount(),
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
Morphologische Analyse + Syntaxanalyse
Verarbeitungszeit[ms]:9618
Indizierung
Verarbeitungszeit[ms]:3
Substantiv...Verben für Nissan
count=1,correlation=3.0,lex=EV...verkaufen
count=1,correlation=3.0,lex=EV...erstellen
count=1,correlation=1.5,lex=Leichtes Auto...verkaufen
count=1,correlation=1.0,lex=Wagen...verkaufen
Substantiv...Verbice für Toyota
count=1,correlation=3.8,lex=Wagen...verkaufen
count=1,correlation=3.8,lex=Wagen...erstellen
count=1,correlation=3.8,lex=Hybrid...verkaufen
count=1,correlation=3.8,lex=Hybrid...erstellen
count=1,correlation=1.9,lex=Wagen...erstellen
count=1,correlation=1.3,lex=Wagen...verkaufen
Substantiv...Verb für Honda
count=1,correlation=2.5,lex=Fahrrad...verkaufen
count=1,correlation=2.5,lex=Leichtes Auto...erstellen
count=1,correlation=2.5,lex=Fahrrad...erstellen
count=1,correlation=1.3,lex=Wagen...erstellen
count=1,correlation=1.3,lex=Leichtes Auto...verkaufen
count=1,correlation=0.8,lex=Wagen...verkaufen
Es ist einfach! Das Ergebnis ist so! Entspricht es dem menschlichen Sinn?
Zurück zum Index: [003] Statistische Verarbeitung von Teilen> [004] Syntax Statistische Verarbeitung der Analyse> [005-1] NLP4J + Twitter4J (Datenerfassung)
https://www.nlp4j.org/
Recommended Posts