Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann

Inhalt dieses Artikels

Paketfunktionen

Wie benutzt man

Vorbereitung

Datei erstellen wurde im Github-Repository eingerichtet.

Wenn Sie es schaffen, installieren Sie es manuell. Informationen zur Installation finden Sie in diesem Abschnitt.

Beispielcode

Ein Beispiel wird in python3.x gezeigt. Wenn Sie ein Beispiel für python2.x sehen möchten, [Beispielcode](https://github.com/Kensuke- Siehe Mitsuzawa / JapaneseTokenizers / blob / master / examples / examples.py).

Das Teil-der-Sprache-System ist auf dieser Seite ausführlich zusammengefasst. Das Teil-der-Sprache-System von Juman / Human ++ wird ebenfalls beschrieben. Wenn Sie also eine Teil-der-Sprache-Filterung mit Juman / Human ++ durchführen möchten, wechseln Sie zur Verwendung.

Sie können übrigens auch das neologd-Wörterbuch in Human / Human ++ verwenden. Bitte lesen Sie diesen Artikel. Ich habe ein Skript erstellt, um das neologd-Wörterbuch in juman / juman ++ verwendbar zu machen

Der einzige Unterschied zwischen Mecab, Juman / Human ++ und Kytea ist die Klasse, die sie nennen. Es erbt dieselbe gemeinsame Klasse.

Morphologische Analyse mit Mecab

Einführung in die Verwendung von Version 1.3.1.

import JapaneseTokenizer
#Wählen Sie einen Wörterbuchtyp."neologd", "all", "ipadic", "user", ""Kann ausgewählt werden.
mecab_wrapper = JapaneseTokenizer.MecabWrapper(dictType='neologd')
#Definieren Sie den Teil des Wortes, den Sie erwerben möchten.
pos_condition = [('Substantiv', '固有Substantiv'), ('Adjektiv', 'Unabhängigkeit')]

sentence = "Die Islamische Republik Iran, allgemein bekannt als Iran, ist eine islamische Republik in Westasien und im Nahen Osten. Auch als Persien oder Persien bekannt."
#Morphologische Unterteilung,Teilwortfilterung,Vollständige Auflistung in einer Zeile
print(mecab_wrapper.tokenize(sentence).filter(pos_condition).convert_list_object())

Dann sieht das Ergebnis so aus:

['Islamische Republik Iran', 'Iran', 'Westasien', 'Mittlerer Osten', 'Islamische Republik', 'Persien', 'Persien']

Morphologische Analyse mit juman / juman ++

Es ist im Grunde das gleiche wie Mecab. Nur die anzurufende Klasse ist unterschiedlich.

Für Juman

from JapaneseTokenizer import JumanWrapper
tokenizer_obj = JumanWrapper()
#Definieren Sie den Teil des Wortes, den Sie erwerben möchten.
pos_condition = [('Substantiv', '固有Substantiv'), ('Substantiv', 'Ortsname'), ('Substantiv', 'Name der Organisation'), ('Substantiv', '普通Substantiv')]

sentence = "Die Islamische Republik Iran, allgemein bekannt als Iran, ist eine islamische Republik in Westasien und im Nahen Osten. Auch als Persien oder Persien bekannt."
#Morphologische Unterteilung,Teilwortfilterung,Vollständige Auflistung in einer Zeile
print(tokenizer_obj.tokenize(sentence).filter(pos_condition).convert_list_object())
['Iran', 'Islam', 'Kyowa', 'Land', 'Bekannt als', 'Iran', 'Westen', 'Asien', 'Mittlerer Osten', 'Islam', 'Kyowa', 'System', 'Land家', 'Persien', 'Persien']

Für Juman ++

from JapaneseTokenizer import JumanppWrapper
tokenizer_obj = JumanppWrapper()
#Definieren Sie den Teil des Wortes, den Sie erwerben möchten.
pos_condition = [('Substantiv', '固有Substantiv'), ('Substantiv', 'Ortsname'), ('Substantiv', 'Name der Organisation'), ('Substantiv', '普通Substantiv')]

sentence = "Die Islamische Republik Iran, allgemein bekannt als Iran, ist eine islamische Republik in Westasien und im Nahen Osten. Auch als Persien oder Persien bekannt."
#Morphologische Unterteilung,Teilwortfilterung,Vollständige Auflistung in einer Zeile
print(tokenizer_obj.tokenize(sentence).filter(pos_condition).convert_list_object())
['Iran', 'Islam', 'Republik', 'Bekannt als', 'Iran', 'Westen', 'Asien', 'Mittlerer Osten', 'Islam', 'Republikanisches System', 'Nation', 'Persien', 'Persien']

In der Tat, wenn der Text so anständig wie Wikipedia ist, werden sich Human und Juman ++ nicht so sehr ändern. Wenn Sie Juman ++ verwenden, ist es nur beim ersten Aufruf etwas langsam. Dies liegt daran, dass das Speichern der Modelldatei einige Zeit in Anspruch nimmt. Ab dem zweiten Mal wird der Prozess aufgerufen, der weiterläuft, sodass diese Langsamkeit verschwindet.

Morphologische Analyse mit Kytea

Bis auf Mecab, Juman und den Klassennamen ist alles gleich.

from JapaneseTokenizer import KyteaWrapper
tokenizer_obj = KyteaWrapper()
#Definieren Sie den Teil des Wortes, den Sie erwerben möchten.
pos_condition = [('Substantiv',)]

sentence = "Die Islamische Republik Iran, allgemein bekannt als Iran, ist eine islamische Republik in Westasien und im Nahen Osten. Auch als Persien oder Persien bekannt."
#Morphologische Unterteilung,Teilwortfilterung,Vollständige Auflistung in einer Zeile
print(tokenizer_obj.tokenize(sentence).filter(pos_condition).convert_list_object())

Entwicklungsgeschichte

Zuvor habe ich Mecabs [Artikel, der so etwas wie einen verbindlichen Wrapper macht und selbstzufrieden ist] veröffentlicht (http://qiita.com/Kensuke-Mitsuzawa/items/50d613952d5a4e3c58e0). Zu diesem Zeitpunkt habe ich es selbst geschafft, also ist das in Ordnung. Danach kam ich jedoch zu dem Gedanken, dass __ "Ich möchte, dass Sie den Vergleich von morphologischen Analysegeräten leicht versuchen" __, und ich kam, um es zu machen.

Grund 1 Jeder benutzt Mecab, oder?

Es ist nur um mich herum, aber ich fühle eine Atmosphäre wie "morphologische Analyse? Vorerst mit Mecab. Oder etwas anderes?"

Wenn ich mit Qiita suche, gibt es 347 Treffer für "Mecab", aber nur 17 für "Juman". Es gibt 3 Fälle für "Kytea".

Natürlich denke ich, dass Mecab als Software sehr gut ist. Aber: "Ich weiß nichts anderes, aber es gibt nur Mecab, richtig?" Ist etwas anderes, nicht wahr? Ich denke.

Aus diesem Grund war die erste Motivation, einen Appell einzureichen, der __ "Es gibt andere als Mecab" __.

Grund 2 Ich weiß es nicht von einem Ausländer, oder?

Vor kurzem war ich in der ausländischen Python-Community, die in Japan lebt.

Obwohl sie an der japanischen Verarbeitung interessiert sind, wissen sie nicht, welcher morphologische Analysator besser ist.

Sie schauen nach, aber sie verstehen den Unterschied nicht wirklich, also sagen sie, dass etwas durcheinander ist.

Unten die mysteriöse Logik, die ich bisher gehört habe

Ich dachte, der Grund, warum eine solche mysteriöse Logik herauskam, war, dass die Informationen nicht vorbereitet waren und nicht verglichen werden konnten.

Es ist schwierig, die Informationen zu organisieren, aber es kann Vergleiche erleichtern. Deshalb habe ich es geschafft. Außerdem habe ich versucht, alle Dokumente auf Englisch zu schreiben. Ich dachte, es wäre schön, wenn die Informationen so weit wie möglich gesammelt werden könnten.

Entwicklungspolitik

So viel wie möglich gemeinsam

Ich habe es so entworfen, dass es die gleiche Struktur wie möglich hat, einschließlich der Schnittstelle. Die Klasse, die die Verarbeitung ausführt, und die Datenklasse sind alle gemeinsam.

Einfache Syntax so weit wie möglich

Wir haben die Syntax so konzipiert, dass "Codierungsvorverarbeitung mit der schnellsten Geschwindigkeit" realisiert wird. Infolgedessen ist es zu einer Schnittstelle geworden, die die morphologische Unterteilung und Teilwortfilterung in einer Zeile handhabt.


Wenn es Ihnen gefällt, geben Sie Star ☆ an Github Repository: bow_tone1:

Wir suchen auch Menschen, die sich gemeinsam verbessern können. Ich möchte hier auch einen Analysator vorstellen. RakutenMA, Chansen ...

Recommended Posts

Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann
Ich habe ein Modul PyNanaco erstellt, das Nanaco-Guthaben mit Python belasten kann
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Ich habe ein Paket erstellt, um Zeitreihen mit Python zu filtern
Ich habe ein Plug-In erstellt, das "Daruma-san Fell" mit Minecraft ausführen kann
Ich habe mit Python einen Zeichenzähler erstellt
Ich habe mit Python eine Hex-Map erstellt
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
[Python] Ich habe eine Klasse erstellt, die schnell einen Dateibaum schreiben kann
Ich habe mit Python eine Bot-Wettervorhersage gemacht.
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
[Python] Ich habe ein Dienstprogramm erstellt, das wie ein Pfad auf den Diktattyp zugreifen kann
Ich habe ein Tool erstellt, das die Dekomprimierung mit CLI (Python3) etwas erleichtert.
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe einen Blackjack mit Python gemacht!
Ich habe PyQCheck, eine Bibliothek, die QuickCheck mit Python ausführen kann, in PyPI registriert.
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Ich habe ein Docker-Image erstellt, das FBX SDK Python von Node.js aus aufrufen kann
Ich habe eine Python3-Umgebung unter Ubuntu mit direnv erstellt.
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
Ich habe einen Python-Text gemacht
Ich habe mit Python einen Blackjack gemacht.
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Ich habe Wordcloud mit Python gemacht.
Eine Geschichte, die stolperte, als ich mit Transformer einen Chat-Chat-Bot erstellte
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe eine einfache Buch-App mit Python + Flask ~ Introduction ~ erstellt
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe einen harten Pomodoro-Timer entwickelt, der mit CUI funktioniert
Ich habe einen Line-Bot mit Python gemacht!
Ich habe eine einfache Schaltung mit Python gemacht (AND, OR, NOR, etc.)
[Python] Erstellen Sie ein Diagramm, das mit Plotly verschoben werden kann
Ich habe eine Bibliothek erstellt, die Konfigurationsdateien mit Python einfach lesen kann
[Python] Ich habe meine eigene Bibliothek erstellt, die dynamisch importiert werden kann
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Ich habe mit Python, Flask und Heroku ein Nyanko-Tweet-Formular erstellt
Ich habe viele Dateien für die RDP-Verbindung mit Python erstellt
[Python] Ich habe einen Bildbetrachter mit einer einfachen Sortierfunktion erstellt.
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
Ich habe ein Programm erstellt, das den Tierkreis mit tkinter automatisch berechnet
[Python] Ein Programm, das Treppen mit # erstellt