Antwort schreiben 
MeCab - Morphologisches Analysetool
Verfasser Nachricht
vdrummer


Beiträge: 1.388
Beitrag #1
MeCab - Morphologisches Analysetool
Da ich das Programm mecab jetzt schon des öfteren hier im Forum erwähnt habe und es weder eine deutsche noch eine englische Dokumentation gibt, nutze ich diesen Thread mal, um eine kleine Anleitung zu schreiben. Natürlich kann dieser Thread auch dazu genutzt werden um generell über mecab und andere morphologische Analysetools zu diskutieren.

TL;DR
Hier klicken, japanischen Text eingeben und auf "Submit" klicken hoho

Was ist mecab?
Mecab ist ein morphologisches Analysetool für die japanische Sprache. Es nimmt einen japanischen Text als Eingabe, analysiert diesen und gibt dann eine Liste mit den einzelnen Wörtern, deren Wortklassen, Lesungen, Grundformen etc. aus. Technisch gesehen arbeitet es mit einem besonderen statistischen Modell, was es schneller und besser als seine Konkurrenz (wie zum Beispiel das Programm ChaSen) macht.

Installation
Mecab braucht man gar nicht zu installieren. Man kann es hier über ein Web-Interface benutzen.
Möchte man das Programm dennoch lokal auf dem eigenen Rechner haben, kann man es sich natürlich auch herunterladen.

Windows: Hier reicht es, wenn man einfach die Binary installiert.

Linux: Am besten im Repository der verwendeten Distribution nachschauen oder zur Not von Hand kompilieren:
Den Source-Code gibt's auf GitHub).
Es müssen sowohl mecab selbst, als auch das ipadic-Wörterbuch kompilliert werden:
mecab:
Code:
cd mecab-master/mecab
./configure --with-charset=utf8
make
make check
sudo make install

ipadic
Code:
cd mecab-master/ipadic
./configure --with-charset=utf-8
make
sudo make install

Mac:
Mecab kann unter OS X genau so wie unter Linux installiert werden, sofern ein C-Compiler (→Xcode) vorhanden ist.
Eine andere Möglichkeit ist die Installation via homebrew:
Code:
$ brew install mecab
$ brew install mecab-ipadic
Bei gewissen Versionen von OS X (10.5, 10.6, 10.10 mit Xcode, ...) ist bereits eine mecab-Bibliothek unter /usr/lib/mecab vorinstalliert (aber leider keine Binary). Wenn die Bibliothek bereits vorhanden ist, kann es zu Problemen bei der Verwendung von mecab.h in C(++)-Programmen kommen.

Bindings:
Es gibt ein Python-3-Modul namens "mecab-python3", das sich am bequemsten mit pip installieren lässt.
Außerdem gibt es Bindings für Perl, Ruby und Java (Details siehe hier (japanisch) und in den entsprechenden readme-Dateien der GitHub-Version).

Grundlagen
Web-Interface:
Zunächst erstmal muss man warten, bis die Download-Meldung erlischt. Danach kann man den zu analysierenden Text in das große schwarze Textfeld eingeben und auf "Submit" klicken. Auf die "Configuration Flags" komme ich später nochmal zu sprechen.

Linux:
Die Bedienung erfolgt ausschließlich über die Shell. Man kann entweder dem Programm eine Datei als Argument übergeben, die analysiert wird, oder mit echo einen String durch die Standardeingabe schleusen:
Code:
# Datei als Argument
mecab datei_zum_analysieren.txt
# String über stdin
echo "文字列" | mecab

Windows: Da ich momentan keinen Windows-Rechner zur Verfügung habe, kann ich nichts genaueres zur Benutzung unter Windows schreiben.

Output von mecab
Das Standard-Ausgabeformat von mecab sieht wie folgt aus:
Wort [Tab] Liste mit Eigenschaften (durch Kommatas getrennt)
Die Eigenschaften sind wie folgt:
Wortart,
genauere Wortart 1,
genauere Wortart 2,
genauere Wortart 3,
Flexionsgruppe,
Art der Flexion,
Grundform,
Lesung,
Aussprache

Ein paar Beispiele:
Code:
習う 動詞,自立,*,*,五段・ワ行促音便,基本形,習う,ナラウ,ナラウ
Hier wird als Wortart 動詞 (どうし), also "Verb" angegeben. Als "genauere Wortart 1" wird angezeigt, dass es sich um ein "eigenständiges Wort" handelt, "genauere Wortart" 2 und 3 sind leer, die Flexionsgruppe ist die der "fünfstufigen Verben", die Art der Flexion ist die Grundform und Lesung und Aussprache sind beide ナラウ.

Wozu braucht man dann überhaupt die beiden Felder "Lesung" und "Aussprache"?
Vieles wird im Japanischen so ausgesprochen wie es geschrieben wird. Es gibt allerdings ein paar Ausnahmen. Nehmen wir mal 高校 (こうこう). Würden wir die Lesung so sprechen, wie sie da steht, wäre das kein reines o, sondern ein o, das zu einem u wird. Hier unterscheidet sich also die Lesung von der eigentlichen Aussprache, weshalb wir für 高校 folgende Ausgabe bekommen:
Code:
高校 名詞,一般,*,*,*,*,高校,コウコウ,コーコー
Man beachte die letzten beiden Felder.

Das "EOS" im Output signalisiert das Ende einer Analyse, wobei zu beachten ist, dass mecab zeilenweise analysiert.

Lesungen mit mecab geneieren
Ist man nur an den Lesungen eines Satzes oder Textes interessiert, kann man mecab anweisen, die Eingabe einfach in Katakana zu konvertieren.
Im Web-Interface geht das, in dem man in das Feld "Configuration Flags" den Text "-Oyomi" einträgt.
Unter Linux geht das mit der Option "-Oyomi"
Die Ausgabe für "形態素解析" sieht dann zum Beispiel so aus:
Code:
ケイタイソカイセキ

Tokenizing (Zerlegen in Wörter) mit mecab
Wenn man nur an den einzelnen Wörtern (nicht aber an den ganzen Details) interessiert ist, weil man zum Beispiel Worthäufigkeiten berechnen will, kann man mit -Owakati (funktioniert analog zu -Oyomi im Abschnitt über diesem) sich die Eingabe mit Leerzeichen ausgeben lassen:
"今日は天気がいいですね。" wird zu
Code:
今日 は 天気 が いい です ね 。

Mehr Vorschläge anzeigen lassen
mecab ist natürlich nicht perfekt. Manchmal liegt es bei der Analyse eines Satzes daneben. Allerdings gibt es auch die Möglichkeit, sich nicht nur eine Analyse, sondern die N besten bzw. wahrscheinlichsten Analysen anzeigen zu lassen:
Das funktioniert mit -NX (analog zu den Optionen weiter oben), wobei X die Anzahl der darzustellenden Analysen ist.
Eine Analyse von "いってください" mit "-N2" ergibt zum Beispiel
Code:
いっ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,いう,イッ,イッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
ください 動詞,非自立,*,*,五段・ラ行特殊,命令i,くださる,クダサイ,クダサイ
EOS
いっ 動詞,自立,*,*,五段・カ行促音便,連用タ接続,いく,イッ,イッ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
ください 動詞,非自立,*,*,五段・ラ行特殊,命令i,くださる,クダサイ,クダサイ
EOS
Hier kann man sehen, dass zuerst "いって" als いう und bei zweiten Mal als いく analysiert wurde.

Weiterführende Links
Die japanische Dokumentation von mecab
Wikipedia-Artikel zur japanischen Grammatik (u.a. gibt es dort eine Übersicht zu den Wortarten und den Flexionsarten der Verben)
Das Paper, aus dem mecab enstanden ist

Edit: Abschnitt "Installation" mit neuen Erkenntnissen der letzten Tage angepasst.
(Dieser Beitrag wurde zuletzt bearbeitet: 15.03.16 11:13 von vdrummer.)
02.03.16 23:35
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
tachibana


Beiträge: 214
Beitrag #2
RE: MeCab - Morphologisches Analysetool
Vielen Dank für diese detaillierte Anleitung.

Ich bin noch ganz neu in dem Gebiet, interessiere mich aber für die Berechnung von Worthäufigkeiten in japanischen Texten. Hast du dafür Softwareempfehlungen? Die tokenizing-Funktion von mecab ist schon einmal sehr praktisch.
03.03.16 04:12
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vdrummer


Beiträge: 1.388
Beitrag #3
RE: MeCab - Morphologisches Analysetool
(03.03.16 04:12)tachibana schrieb:  Ich bin noch ganz neu in dem Gebiet, interessiere mich aber für die Berechnung von Worthäufigkeiten in japanischen Texten. Hast du dafür Softwareempfehlungen?

Mecab natürlich hoho Am besten zusammen mit Linux oder einer Highlevel-Programmiersprache wie Python.
Was du letztendlich mit dem Output von mecab machst, ist ja sehr von dem abhängig, was du analysieren willst. Daher denke ich nicht, dass es dafür eine vorgefertigte Softwarelösung gibt.
Generell bietet sich bei Worthäufigkeiten natürlich eine Grundformenreduktion an, was mecab ja auch kann. Allerdings sieht es so Sachen wie た in 食べた und て in 食べて auch als eigenständige Wörter an, was bei der Analyse von Worthäufigkeiten etwas nervig werden könnte.
Beispiel (mit dem node-format lasse ich mir nur die Grundformen ausgeben):
Code:
$ echo "魚を食べた" | mecab --node-format="%f[6]\n"


食べる

EOS

Am schönsten wäre es natürlich, schon vorher all diese Hilfsverben rauszufiltern und dann erst die Grundformen zu betrachten. Für solche Sachen bieten sich dann Python oder Linux an, wo man solche Filter-, Zähl- und Sortieraufgaben m.M.n. schnell und elegant lösen kann. Aber ich bin da vielleicht auch zu voreingenommen, was solche Aufgaben angeht. Es gibt bestimmt auch schon fertige Tools, die Wörter in japanischen Texten zählen. Aber wo bleibt da der Spaß? zwinker

Edit: Hab nur kurzem Suchen das hier gefunden. Hätte mich auch gewundert, wenn noch niemand so etwas programmiert hätte.
(Dieser Beitrag wurde zuletzt bearbeitet: 15.03.16 11:17 von vdrummer.)
03.03.16 12:34
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Reedmace Star


Beiträge: 183
Beitrag #4
RE: MeCab - Morphologisches Analysetool
Von mir auch vielen Dank.

Mal etwas nützliches mit mecab auszuprobieren steht schon länger bei mir auf dem Plan. Spätestens wenn ich (hoffentlich) Mitte des Jahres mit meinem Lehrbuch durch bin meine Vokabellisten häufiger selbst erstellen muss, wird es wahrscheinlich soweit sein, dann schaue ich bestimmt hier wieder rein.

Schon mal gut zu wissen, dass es eine Python-Anbindung gibt.
03.03.16 13:14
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
adv


Beiträge: 1.037
Beitrag #5
RE: MeCab - Morphologisches Analysetool
Sehr interessant. Vielen Dank!
03.03.16 14:01
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
tachibana


Beiträge: 214
Beitrag #6
RE: MeCab - Morphologisches Analysetool
vdrummer schrieb:Beispiel (mit dem node-format lasse ich mir nur die Grundformen ausgeben):
(...)

Danke. Das ist sehr hilfreich.

vdrummer schrieb:Am schönsten wäre es natürlich, schon vorher all diese Hilfsverben rauszufiltern und dann erst die Grundformen zu betrachten. Für solche Sachen bieten sich dann Python oder Linux an, wo man solche Filter-, Zähl- und Sortieraufgaben m.M.n. schnell und elegant lösen kann. Aber ich bin da vielleicht auch zu voreingenommen, was solche Aufgaben angeht. Es gibt bestimmt auch schon fertige Tools, die Wörter in japanischen Texten zählen. Aber wo bleibt da der Spaß? zwinker

Selber etwas programmieren? Wenn's nicht sein muss, dann nicht. Sonst wird das noch eine Lebensaufgabe. zwinker

vdrummer schrieb:Edit: Hab nur kurzem Suchen das hier gefunden. Hätte mich auch gewundert, wenn noch niemand so etwas programmiert hätte.

Danke. Ja, über das Tool bin ich dann auch gestolpert. Und dann noch zwei weitere: yougox und EKWords. Netterweise beides Freeware, allerdings für Windows. Ich hätte mich über eine Mac-Anwendung gefreut. Mal sehen, ob die mit WINE laufen.
04.03.16 02:56
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vdrummer


Beiträge: 1.388
Beitrag #7
RE: MeCab - Morphologisches Analysetool
(04.03.16 02:56)tachibana schrieb:  Ich hätte mich über eine Mac-Anwendung gefreut.

Unter OS X hast du eigentlich schon alles, was du brauchst. Damit kannst du eigentlich alles das machen, was ich für Linux beschrieben habe.
Falls du mecab unter OS X installieren willst, findest du hier eine Anleitung(, die etwas ausführlicher ist als der Linux-Abschnitt auf der offiziellen mecab-Seite).
Edit: Vielleicht hätte ich auch noch den Link angeben sollen hoho Ich habe das gerade mal auf einem OS X 10.8-Rechner probiert, allerdings gab es da Probleme bei der Installation. Ich ändere den Code also mal so um, dass du das mecab-Web-Interface benutzen kannst.

Hier mecab mit den Flags --node-format="%f[6]\n" --eos-format="" aufrufen und das Ergebnis in einer Textdatei speichern.

Dann folgendes ins Terminal (einfach "Terminal" mit Spotlight suchen)
Code:
sort DATEI | uniq -c | sort -nr
eingeben (einfügen) und da wo DATEI steht, die Datei reinziehen, in der du die mecab-Ergebnisse gespeichert hast.
Als Ausgabe bekommst du eine absteigend nach Worthäufigkeit sortierte Liste.

Zur Erklärung, was da passiert:
--node-format="%f[6]\n" → gibt nur die Grundformen aus
--eos-format="" → lässt das EOS am Ende weg

sort → sortiert (alphanumerisch aufsteigend)
DATEI → Pfad zur Datei mit den mecab-Ergebnissen
| uniq -c → fasst gleiche Zeilen, die untereinander stehen (deshalb das Sortieren vorher) zusammen und zählt sie
| sort -nr → sortiert numerisch absteigend

Falls dir das zu kompliziert ist, kannst du natürlich auch eines der fertigen Tools über WINE benutzen. Ich wollte nur demonstrieren, dass du schon (fast) alles hast, was du brauchst hoho
(Dieser Beitrag wurde zuletzt bearbeitet: 04.03.16 09:18 von vdrummer.)
04.03.16 08:49
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
tachibana


Beiträge: 214
Beitrag #8
RE: MeCab - Morphologisches Analysetool
Finde ich super! Danke! Das heißt, ich bereite den Text mit mecab auf und sortiere ihn mithilfe einer im Betriebssystem integrierten Funktion.

Wird ausprobiert. hoho

Wenn ich mal wieder zu viel Zeit habe, installiere ich mecab vielleicht sogar. Hier ist noch eine Anleitung für Mavericks* (10.9): http://mollydesjardin.com/guides/mecabinstructions.html

*Edit: korrigiert (vorher falsch "Yosemite")
(Dieser Beitrag wurde zuletzt bearbeitet: 07.03.16 02:34 von tachibana.)
04.03.16 09:36
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
torquato


Beiträge: 2.822
Beitrag #9
RE: MeCab - Morphologisches Analysetool
Vielen Dank vdrummer für Deine ausführliche Darstellung. Wie immer.^^

(04.03.16 09:36)tachibana schrieb:  Hier ist noch eine Anleitung für Yosemite (10.9): http://mollydesjardin.com/guides/mecabinstructions.html

Oh je. Wenn es jemand selber von den Sourcen nicht hinbekommt und dann mit vollkommen blödsinnigem Gefrickel mit einem überflüssigen Paketmanager ankommt... *seufz* *kopfschüttel*

Ich habe mecab gerade selber mal installiert. Das kompiliert absolut problemlos (unter OS X 10.10) durch. Nur beim Punkt Zeichenkodierung muß man darauf achten, daß mecab und das Wörterbuch beide UTF 8 verwenden.

Für mecab:

Code:
tar zxf mecab-0.996.tar.gz
cd mecab-0.996
./configure --with-charset=utf8
make
make check
sudo make install

Mecab-ipadic:

Code:
tar zxf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf-8
make
sudo make install

Das B in Rassismus steht für Bildung.
(Dieser Beitrag wurde zuletzt bearbeitet: 11.03.16 04:05 von torquato.)
04.03.16 20:45
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vdrummer


Beiträge: 1.388
Beitrag #10
RE: MeCab - Morphologisches Analysetool
@torquato
Freut mich, dass es geklappt hat. Danke für deine Ergebnisse.
Bei mir war das Problem, dass sich ./configure beschwert hat, dass kein C-Compiler installiert war. Da der Rechner, an dem ich das ausprobiert habe, aber nicht mir gehört hat, wollte ich jetzt nicht noch erst einen Compiler installieren hoho

Alle, die es geschafft haben, mecab auf Mac oder Linux zu installieren, können sich dann natürlich den Umweg über das Web-Interface sparen:
Code:
mecab --node-format="%f[6]\n" --eos-format="" DATEI | sort | uniq -c | sort -nr
Eine Erklärung gibt es in diesem Post.
DATEI bezieht sich jetzt aber natürlich auf die Datei mit dem Text, den man analysieren will.
04.03.16 23:10
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
MeCab - Morphologisches Analysetool
Antwort schreiben