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

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?

Zurück zum Index

Einführung von NLP4J- [000] Verarbeitung natürlicher Sprache mit Java-Index

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 von Teilen in Java
NLP4J Versuchen Sie eine Textanalyse unter Verwendung einer Verarbeitung in natürlicher Sprache und einer statistischen Verarbeitung der Syntaxanalyse 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
NLP4J Morphologische Analyse in Java (unter Verwendung von Kuromoji)
Versuchen Sie es mit RocksDB mit Java
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
Versuchen Sie es mit der Syntaxanalyse der COTOHA-API in Java
[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