NLP4J Versuchen Sie eine Textanalyse unter Verwendung einer Verarbeitung in natürlicher Sprache und einer statistischen Verarbeitung der Syntaxanalyse in Java

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)

Projekt-URL

https://www.nlp4j.org/ NLP4J_N_128.png


Recommended Posts

NLP4J Versuchen Sie eine Textanalyse unter Verwendung einer Verarbeitung in natürlicher Sprache und einer statistischen Verarbeitung der Syntaxanalyse in Java
NLP4J Versuchen Sie eine Textanalyse unter Verwendung einer Verarbeitung in natürlicher Sprache und einer statistischen Verarbeitung von Teilen in Java
Einführung des NLP4J- [000] Natural Language Processing Index in Java
NLP4J Versuchen Sie eine syntaktische Analyse von Japanisch unter Verwendung der japanischen Abhängigkeitsanalyse (V1) von Yahoo! Developer Network in Java
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java
NLP4J Morphologische Analyse in Java (unter Verwendung von Kuromoji)
Versuchen Sie es mit RocksDB mit Java
Implementieren Sie Thread in Java und versuchen Sie, die anonyme Klasse Lambda zu verwenden
NLP4J Morphologische Analyse mit Java (unter Verwendung der japanischen morphologischen Analyse des Yahoo! Developer Network)
Versuchen Sie es mit der Stream-API in Java
Versuchen Sie es mit der JSON-Format-API in Java
Versuchen Sie, mit Scala mithilfe der Standardbibliothek von Java Text zu einem Bild hinzuzufügen
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
Versuchen Sie es mit Sourcetrail (Win-Version) mit Java-Code
Versuchen Sie, die Cloud Vision-API von GCP in Java zu verwenden
Versuchen Sie es mit Sourcetrail (MacOS-Version) mit Java-Code
[Android / Java] Bildschirmübergang und Rückgabeverarbeitung in Fragmenten
Konvertieren Sie JSON und YAML in Java (mit Jackson und SnakeYAML)
NLP4J Versuchen Sie eine Twitter-Analyse mit Twitter4J und NLP4J (Datenerfassung)
Verwenden Sie Watson Conversation als NLP (Java) (Verarbeitung natürlicher Sprache)
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
Versuchen Sie es mit globalem Hooking in Java mithilfe der JNativeHook-Bibliothek
NLP4J 100 Sprachverarbeitungsklopfen mit NLP4J # 30 Lesen morphologischer Analyseergebnisse
[Java] Ändern Sie Sprache und Gebietsschema mit JVM-Optionen in Englisch
Protokollaggregation und -analyse (Arbeiten mit AWS Athena in Java)
Übersetzen mit der Microsoft Translator-Text-API in Java (Japanisch → Englisch)
Tipps zur Verwendung von Salesforce SOAP und Bulk API in Java