Lassen Sie uns eine morphologische Analyse in Java durchführen. In Anbetracht dessen, dass dies in verschiedenen anderen Artikeln Voraussetzung sein wird, werde ich bis zur Funktionsprüfung zusammenfassen.
Es bezieht sich auf den Prozess der Aufteilung eines Dokuments in kleinste sinnvolle Einheiten wie Wörter. Dies ist eine der am häufigsten verwendeten Techniken, um Maschinen dazu zu bringen, Sprache zu verarbeiten.
Es gibt viele andere Begriffe in diesem Artikel, Zunächst wird die Funktionsprüfung beschrieben und jeder Begriff im Anhang erwähnt.
Die Richtlinie besteht darin, die Kuromoji-Bibliothek zusätzlich zu Spring Boot & Gradle hinzuzufügen. Wenn Sie aus dem Umweltbau stammen, lesen Sie bitte Folgendes. ⇒ Einführung in Spring Boot ... Es ist gut, also bin ich mir sicher!
Umgebung | Bedienung/Ausführung |
---|---|
Ausführungsumgebung | Windows10 |
Entwicklungsumgebung | eclipse Oxygen.2 Release (4.7.2)Java-Version |
Entwicklungssprache | Java 8 |
Framework | SpringBoot 2.1.3 |
Kuromojis Bibliothek scheint sich in Maven Central zu befinden. Dieses Mal habe ich beschlossen, es aus Codelibs zu holen.
Zu Repositorys und Abhängigkeiten wie folgt hinzugefügt. Führen Sie dann eine Gralde-Aktualisierung durch, um die Abhängigkeiten zu aktualisieren.
build.gralde
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com.lab.app.ketman'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
//hinzufügen
maven {
url "http://maven.codelibs.org"
}
//Bisher
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0'
//hinzufügen
implementation 'org.codelibs:lucene-analyzers-kuromoji-ipadic-neologd:7.6.0-20190325'
//Bisher
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
Das Analyseergebnis wird im Attributobjekt gespeichert. Holen Sie sich die gewünschten Informationen, indem Sie sie als Variable deklarieren.
Attribute | Überblick |
---|---|
CharTermAttribute | Darstellung des analysierten Satzes wie er ist |
ReadingAttribute | Lesen der Morphologie |
OffsetAttribute | In welchem Charakter erscheint das morphologische Element? |
PartOfSpeechAttribute | Teil Lyrics Informationen |
BaseFormAttribute | Prototyp |
InflectionAttribute | Nutzung |
KuromojiSample
public class KuromojiSample {
//Geben Sie eine Liste der Kuromoji-Entitäten als Rückgabe zurück
public List<KuromojiEntity> kuromojineologd(String src){
List<KuromojiEntity> keList = new ArrayList<KuromojiEntity>();
try(JapaneseTokenizer jt =
new JapaneseTokenizer(null, false, JapaneseTokenizer.Mode.NORMAL)){
jt.setReader(new StringReader(src));
jt.reset();
while(jt.incrementToken()){
CharTermAttribute ct = jt.addAttribute(CharTermAttribute.class);
ReadingAttribute ra = jt.addAttribute(ReadingAttribute.class);
OffsetAttribute oa = jt.addAttribute(OffsetAttribute.class);
PartOfSpeechAttribute posa = jt.addAttribute(PartOfSpeechAttribute.class);
BaseFormAttribute bfa = jt.addAttribute(BaseFormAttribute.class);
InflectionAttribute ifa = jt.addAttribute(InflectionAttribute.class);
System.out.println(
ct.toString()
+ " | " + ra.getReading()
+ " | " + oa.startOffset()
+ " | " + posa.getPartOfSpeech()
+ " | " + bfa.getBaseForm()
+ " | " + ifa.getInflectionForm()
+ " | " + ifa.getInflectionType());
}
} catch (IOException e) {
e.printStackTrace();
}
return keList;
}
}
KuromojiSample
@Controller
public class SampleKuromojiController {
KuromojiSample ks = new KuromojiSample();
@RequestMapping("/kuromoji")
public String index(Model model) {
String sentence = "neologd kann Yuru-chara als richtige Nomenklatur interpretieren.";
ks.kuromojineologd(sentence);
return "index";
}
}
neologds wörterbuch scheint so aufgeteilt zu sein. Es ist charakteristisch, dass die Lesung Jiccouiinkai enthält.
neologd |Neologdy| 0 |Substantiv-Eigenname-Allgemeines| NEologd | null | null
Du|Kun| 7 |Substantiv-Suffix-Name der Person| null | null | null
Ist|C.| 8 |Partikel-Hilfe| null | null | null
Yuru Chara|Yuru Chara Grand Prix Jiccoui Inkai| 9 |Substantiv-Eigenname-Name der Person-Allgemeines| null | null | null
Zu|Wo| 14 |Partikel-Fallassistent-Allgemeines| null | null | null
Eigenname|Koyu Meishi| 15 |Substantiv-Allgemeines| null | null | null
Wie|Toshite| 19 |Partikel-Fallassistent-Gemeinsame Sprache| null | null | null
Interpretation|Kaishaku| 22 |Substantiv-Verbindung ändern| null | null | null
Fertig|Deki| 24 |Verb-Unabhängigkeit|Tun können|Kontinuierlicher Typ|Ein Schritt
Masu|Forelle| 26 |Hilfsverb| null |Grundform|Spezial / Masse
。 | 。 | 28 |Symbol-Phrase| null | null | null
Auszug aus 1. Überblick über Lucene
Lucene ist eine Volltextsuchmaschine vom Typ 100% PureJava-Indizierung, die von Jakarta Project 1 entwickelt wurde. (Ein Index ist ein Index, der für die schnelle Suche angehängt wird.) Lucene selbst ist eine Bibliothek, kein vollständiges Programm, Mit der von Lucene bereitgestellten API können Sie ganz einfach ein benutzerfreundliches Volltextsuchprogramm erstellen. Da es in Java geschrieben ist, kann es auch leicht an Webanwendungen angepasst werden. Lucene selbst kann kein Japanisch analysieren, aber es ist möglich, mithilfe eines morphologischen Analyseprogramms nach Japanisch zu suchen.
Die Pflege von Informationen (Wörterbuch), die Maschinen Tag und Nacht in der sich entwickelnden natürlichen Sprache zur Verfügung gestellt werden, ist eines der Probleme. Die Idee ist, dieses Problem durch Crawlen im Web zu beheben. Teilauszug aus neologd / mecab-ipadic-neologd
mecab-ipadic-NEologd ist ein Systemwörterbuch für MeCab, das durch Hinzufügen neuer Wörter aus vielen Web-Sprachressourcen angepasst wurde. Bei der Analyse von Dokumenten im Web wird empfohlen, dieses Wörterbuch zusammen mit dem Standardsystemwörterbuch (ipadic) zu verwenden. (Weggelassen) Vorteile Es werden ungefähr 3,12 Millionen Paare (einschließlich doppelter Einträge) der Oberflächenschicht (Notation) und Frigana-Wortpaare wie eindeutige Ausdrücke aufgezeichnet, die vom MeCab-Standardsystemwörterbuch nicht korrekt unterteilt werden können. Dieses Wörterbuch wird auf dem Entwicklungsserver automatisch aktualisiert Wird mindestens zweimal pro Woche aktualisiert Montag und Donnerstag Mithilfe von Sprachressourcen im Web können zum Zeitpunkt der Aktualisierung neue eindeutige Ausdrücke aufgezeichnet werden Die derzeit verwendeten Ressourcen sind: ・ Daten des Hatena-Schlüsselworts sichern ・ Postleitzahlendaten herunterladen … (Weggelassen) Nachteile Unzureichende Klassifizierung der richtigen Ausdrücke Beispielsweise werden einige Personennamen und Produktnamen derselben eindeutigen Ausdruckskategorie zugeordnet. Wörter, die keine eindeutigen Ausdrücke sind, werden auch als eindeutige Ausdrücke registriert …
Im Beispielcode wurde das Argument (JapaneseTokenizer.Mode.NORMAL) angegeben, Es gibt auch Such- und Erweiterungsmodi mit den folgenden Funktionen.
Auszug aus Über Kuromoji
Normaler Modus Nach dem Initialisieren des normalen Modus wird die morphologische Analyse standardmäßig in diesem Format durchgeführt.
Suchmodus Ein Wort, das mehrere Wörter wie "Nihon Keizai Shimbun" kombiniert, heißt "Japan".|Wirtschaft|Es analysiert separat wie eine Zeitung. In Kombination mit einer Volltextsuchmaschine ist dies praktisch, da der Nihon Keizai Shimbun auch nach "Wirtschaft" oder "Zeitung" durchsucht werden kann.
Erweitert den Modus Behandeln Sie unbekannte Wörter zusätzlich zum Suchmodus als Uni-Gramm. Zum Beispiel ist "mobage" "mo"|Ba|Ge|- "Ist in jedes Zeichen unterteilt. Eine Funktion, die die Wahrscheinlichkeit zu verringern scheint, dass nicht nach unbekannten Wörtern gesucht wird.
Wenn Sie es von Maven Central erhalten möchten, sollten Sie es so machen. [Home » com.atilika.kuromoji » kuromoji-ipadic » 0.9.0] (https://mvnrepository.com/artifact/com.atilika.kuromoji/kuromoji-ipadic/0.9.0)
// https://mvnrepository.com/artifact/com.atilika.kuromoji/kuromoji-ipadic
compile group: 'com.atilika.kuromoji', name: 'kuromoji-ipadic', version: '0.9.0'
Recommended Posts