Antwort schreiben 
MeCab - Morphologisches Analysetool
Verfasser Nachricht
torquato


Beiträge: 2.703
Beitrag #11
RE: MeCab - Morphologisches Analysetool
(05.03.16 00:10)vdrummer schrieb:  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

Naja, die Buildtools sollten natürlich schon vorhanden sein. zwinker

Auf dem Mac werden die Buildtools traditionell im Gegensatz zu Linux nicht gleich bei der Systeminstallation mitinstalliert. Man geht eben davon aus, daß der durchschnittliche User die sowieso nicht braucht, und man es jemandem, der weiß, warum man die braucht, auch zumuten kann, sie separat runterzuladen und zu installieren... Das ist dann ein mehrere GB großes Gesamtsoftwarepaket inklusive GUI-IDE, etc. namens Xcode.

Apple hat da noch einen Haufen anderer Besonderheiten, aber das würde jetzt zu weit führen... augenrollen

I spent a lot of money on booze, birds and fast cars – the rest I just squandered.
05.03.16 01:49
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
torquato


Beiträge: 2.703
Beitrag #12
RE: MeCab - Morphologisches Analysetool
Ich habe gestern noch mal einen Blick auf mecab geworfen und festgestellt, daß nicht nur ein Komandozeilenprogramm installiert wird, sondern auch C/C++-Bibliotheken. Die API in der Headerdatei sieht jetzt auch nicht besonders schwierig aus, und auf Github findet sich auch Beispielcode.
Das wollte ich mal ausprobieren, mecab in C zu verwenden. Leider stoße ich dabei auf ein Problem, das ich mir nicht erklären kann und über das ich nicht hinwegkomme.

Mein Testcode

Code:
#include <stdio.h>
#include <mecab.h>

int main(int argc, const char * argv[]) {
    
    const char* version = mecab_version();
    
    printf("version: %s\n", version);
    
    const char *path = "-d /usr/local/lib/mecab/dic/ipadic";
    
    mecab_t * mecab = mecab_new2(path);
    
    if (mecab == NULL) {
        printf("mecab == NULL\n");
        const char* mecabError = mecab_strerror(NULL);
        printf("%s\n", mecabError);
    }
    
    return 0;
}

gibt folgendes aus:

Zitat:version: 0.97
mecab == NULL
/SourceCache/MeCab/MeCab-666.7/src/tagger.cpp(136) [tokenizer_.open(*param)] /SourceCache/MeCab/MeCab-666.7/src/tokenizer.cpp(295) [n.value != 0] cannot find UNK category: DEFAULT

Auf Google finden sich ein paar wenige Treffer in dieser Richtung, aber soweit ich die lesen kann nichts was mir weiterhilft.

Hat hier schon mal jemand mecab in C ausprobiert oder sonst irgendwelche Ideen?

I spent a lot of money on booze, birds and fast cars – the rest I just squandered.
10.03.16 21:40
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
torquato


Beiträge: 2.703
Beitrag #13
RE: MeCab - Morphologisches Analysetool
Nachtrag nach weiterer Recherche:

Die Codebasis wird inzwischen anscheinend auf GitHub unter https://github.com/taku910/mecab mehr oder weniger weitergepflegt. Zumindest wurden im letzten Monat noch kleinere Pullrequests eingepflegt. Bei dem Namenskürzel und der Vita gehe ich vom ursprünglichen Autor aus. Außerdem sind die Commits der alten SVN-Repositories enthalten.

Vielleicht könnte dieses Repo im Eingangspost als Sourcecode-Quelle verlinkt werden.

In diesem Repository befinden sich neben zwei Wörterbücher (ipadic, jumandic?) auch die Python-, Ruby- und Pearlanbindungen und die komplette Japanische Dokumentation als html-Dateien.

Leider hilft mir das bei meinem Codeproblem auch nicht weiter... traurig

I spent a lot of money on booze, birds and fast cars – the rest I just squandered.
11.03.16 06:07
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mecab
Unregistriert

 
Beitrag #14
RE: MeCab - Morphologisches Analysetool
@torquato Fällt dir nichts auf?

Du hast Version 0.996 installiert, aber es wird 0.97 gemeldet. Das spricht dafür, dass ein Konflikt zwischen einer mitgelieferten Version und deiner intendierten Version besteht. Der komische Pfad (/SourceCache/MeCab/MeCab-666.7/) spricht auch dafür. In der Tat war/ist(?) mecab Bestandteil der Japanischkomponenten von Mac OS.

Außerdem würde ich auf dem Mac die Installation per Homebrew (http://brew.sh) empfehlen, weil man das dann wieder sauber entfernen kann.
11.03.16 12:45
Diese Nachricht in einer Antwort zitieren
torquato


Beiträge: 2.703
Beitrag #15
RE: MeCab - Morphologisches Analysetool
Kopf -> Tischplatte *Bäng*

Die falsche Versionsnummer habe ich schon zur Kenntnis genommen, aber irgendwie leichtfertig als schlecht gewarteten Code abgetan. rot Ja, auch diese Pfandangaben hätten mich stutzig machen sollen.

In der Tat ist auf OS X unter /usr/lib eine MeCab-Bibliothek schon vorinstalliert. Es fehlt aber die Headerdatei, ein Wörterbuch und das Komandozeilentool. Offensichtlich also eine speziell angepaßte Bibliothek nur für den internen Gebrauch.

Ich hab's jetzt geschafft, dem Compiler/ Linker beizubringen, 'meine' Bibliothek zu verwenden. Damit hat's jetzt geklappt, wie es soll. grins

Danke für den Schubser.^^

PS: Ich bin kein großer Freund von einem Paketmanager unter OS X. Ich kompiliere lieber von Hand...

I spent a lot of money on booze, birds and fast cars – the rest I just squandered.
11.03.16 21:31
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vdrummer


Beiträge: 911
Beitrag #16
RE: MeCab - Morphologisches Analysetool
(11.03.16 06:07)torquato schrieb:  Die Codebasis wird inzwischen anscheinend auf GitHub unter https://github.com/taku910/mecab mehr oder weniger weitergepflegt. Zumindest wurden im letzten Monat noch kleinere Pullrequests eingepflegt. Bei dem Namenskürzel und der Vita gehe ich vom ursprünglichen Autor aus. Außerdem sind die Commits der alten SVN-Repositories enthalten.

Vielleicht könnte dieses Repo im Eingangspost als Sourcecode-Quelle verlinkt werden.
Danke für den Hinweis auf das Git-Repo. Ich hatte das auch schon gesehen, dachte allerdings, dass es sich inhaltlich mit den Sourcen, die man auf der von mir verlinkten Seite herunterladen kann, deckt. Aber da ist ja viel mehr drin. Werde das gleich mal verlinken.
Taku Kudo ist einer der drei Personen, die zum ersten Mal CRFs im Zusammenhang mit morphologischen Analysesystemen des Japanischen benutzt haben, woraus dann letztlich mecab entstanden ist (siehe hier).

(11.03.16 12:45)mecab schrieb:  In der Tat war/ist(?) mecab Bestandteil der Japanischkomponenten von Mac OS.
Da nutzt mal jahrelang Japanisch auf dem Mac und merkt nie was davon hoho
Auf einem OS X 10.6-Rechner konnte ich die mecab-Bibliothek, eine mecabrc und sogar die Manpage der mecab-Binary finden, aber von der Binary selbst fehlt jede Spur. Schade eigentlich; die hätten sie ja ruhig gleich dazu packen können.
Unter 10.8 habe ich gar nichts in Richtung mecab gefunden. Unter welchem System hast du das denn gefunden, torquato? 10.10?
12.03.16 13:03
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
torquato


Beiträge: 2.703
Beitrag #17
RE: MeCab - Morphologisches Analysetool
(03.03.16 00:35)vdrummer schrieb:  Output von mecab
Das Standard-Ausgabeformat von mecab sieht wie folgt aus:
Wort [Tab] Liste mit Eigenschaften (durch Kommas getrennt)
Die Eigenschaften sind wie folgt:
Wortart,
genauere Wortart 1,
genauere Wortart 2,
genauere Wortart 3,

Diese Wortart-Angaben sind anscheinend eine vom verwendeten Wörterbuch festgelegte fixe hierarchische Kombination. Beim ipac-Wörterbuch sind die möglichen Kombinationen (bei einer Standardinstallation) in der Datei /usr/local/lib/mecab/dic/ipadic/pos-id.def festgelegt. Die Datei ist in euc kodiert. Fogende Kombinationen werden verwendet:

Code:
その他,間投,*,* 0
フィラー,*,*,* 1
感動詞,*,*,* 2
記号,アルファベット,*,* 3
記号,一般,*,* 4
記号,括弧開,*,* 5
記号,括弧閉,*,* 6
記号,句点,*,* 7
記号,空白,*,* 8
記号,読点,*,* 9
形容詞,自立,*,* 10
形容詞,接尾,*,* 11
形容詞,非自立,*,* 12
助詞,格助詞,一般,* 13
助詞,格助詞,引用,* 14
助詞,格助詞,連語,* 15
助詞,係助詞,*,* 16
助詞,終助詞,*,* 17
助詞,接続助詞,*,* 18
助詞,特殊,*,* 19
助詞,副詞化,*,* 20
助詞,副助詞,*,* 21
助詞,副助詞/並立助詞/終助詞,*,* 22
助詞,並立助詞,*,* 23
助詞,連体化,*,* 24
助動詞,*,*,* 25
接続詞,*,*,* 26
接頭詞,形容詞接続,*,* 27
接頭詞,数接続,*,* 28
接頭詞,動詞接続,*,* 29
接頭詞,名詞接続,*,* 30
動詞,自立,*,* 31
動詞,接尾,*,* 32
動詞,非自立,*,* 33
副詞,一般,*,* 34
副詞,助詞類接続,*,* 35
名詞,サ変接続,*,* 36
名詞,ナイ形容詞語幹,*,* 37
名詞,一般,*,* 38
名詞,引用文字列,*,* 39
名詞,形容動詞語幹,*,* 40
名詞,固有名詞,一般,* 41
名詞,固有名詞,人名,一般 42
名詞,固有名詞,人名,姓 43
名詞,固有名詞,人名,名 44
名詞,固有名詞,組織,* 45
名詞,固有名詞,地域,一般 46
名詞,固有名詞,地域,国 47
名詞,数,*,* 48
名詞,接続詞的,*,* 49
名詞,接尾,サ変接続,* 50
名詞,接尾,一般,* 51
名詞,接尾,形容動詞語幹,* 52
名詞,接尾,助数詞,* 53
名詞,接尾,助動詞語幹,* 54
名詞,接尾,人名,* 55
名詞,接尾,地域,* 56
名詞,接尾,特殊,* 57
名詞,接尾,副詞可能,* 58
名詞,代名詞,一般,* 59
名詞,代名詞,縮約,* 60
名詞,動詞非自立的,*,* 61
名詞,特殊,助動詞語幹,* 62
名詞,非自立,一般,* 63
名詞,非自立,形容動詞語幹,* 64
名詞,非自立,助動詞語幹,* 65
名詞,非自立,副詞可能,* 66
名詞,副詞可能,*,* 67
連体詞,*,*,* 68

Ich hab's nicht ausprobiert, aber ich könnte mir vorstellen, daß man mit Hilfe dieser Datei die Ausgabe von mecab auch auf Deutsch lokalisieren könnte…

PS: @vdrummer Es heißt 'Kommata', nicht 'Kommas'… zwinker

(12.03.16 13:03)vdrummer schrieb:  Werde das gleich mal verlinken.

Wie ich gesehen habe, hast Du das nicht nur verlinkt, sondern gleich den ganzen Installationsteil im Eröffnungspost umgeschrieben. Toll.

Nur der Teil 'Könnte problematisch unter Mac OS X sein' finde ich so in der jetzigen Form etwas befremdlich. Eine normale Standardinstallation bereitet für das Komandozeilenprogramm keine Probleme. Das ist eher ein Spezialfall für Programmierer. "Stell sicher, daß Du nicht in /usr/lib installierst!", aber das hat sich unter dem angesprochenen Personenkreis auf OS X schon rumgesprochen. zwinker

(12.03.16 13:03)vdrummer schrieb:  Da nutzt mal jahrelang Japanisch auf dem Mac und merkt nie was davon hoho
Auf einem OS X 10.6-Rechner konnte ich die mecab-Bibliothek, eine mecabrc und sogar die Manpage der mecab-Binary finden, aber von der Binary selbst fehlt jede Spur. Schade eigentlich; die hätten sie ja ruhig gleich dazu packen können.
Unter 10.8 habe ich gar nichts in Richtung mecab gefunden. Unter welchem System hast du das denn gefunden, torquato? 10.10?

Ja, ich laufe auf 10.10.
Jemand auf GitHub hat die SDKs aller OS X Versionen hochgeladen https://github.com/phracker/MacOSX-SDKs
Demzufolge gibt es die libmecab seit 10.5 auf dem System und die zugehörige Headerdatei, aus der auch Apples 'Anpassungen' hervorgehen, war bis 10.7 dabei.
Diese SDKs sind seit einiger Zeit nicht mehr komplett statisch im System, sondern teils im Bereich der Compilertools (Xcode) angesiedelt. Apple ist da im Vergleich zu anderen *nixes etwas merkwürdig… Dein OS X 10.8 Befund und mein System kann also auch einfach nur etwas mit Xcode, etc. zu tun haben.

Ich bastel bei mecab gerade spaßeshalber an einer Anbindung an Apples neuer Programmiersprache Swift rum. Deshalb der etwas technisch basierte Ansatz. Klappt in Grundzügen soweit auch ganz OK. Das werde ich aber wahrscheinlich genauso wenig fertigstellen, wie die anderen drei Japanischen Software-Kleinprojekte, die ich hier noch rumliegen habe... rot

I spent a lot of money on booze, birds and fast cars – the rest I just squandered.
(Dieser Beitrag wurde zuletzt bearbeitet: 15.03.16 08:51 von torquato.)
15.03.16 08:03
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
vdrummer


Beiträge: 911
Beitrag #18
RE: MeCab - Morphologisches Analysetool
(15.03.16 08:03)torquato schrieb:  Diese Wortart-Angaben sind anscheinend eine vom verwendeten Wörterbuch festgelegte fixe hierarchische Kombination. Beim ipac-Wörterbuch sind die möglichen Kombinationen (bei einer Standardinstallation) in der Datei /usr/local/lib/mecab/dic/ipadic/pos-id.def festgelegt. Die Datei ist in euc kodiert.
Interessante Entdeckung. Bei mir (ich hab mecab aus den Arch-Repos) liegen die mecab-Sachen übrigens in /usr/lib anstatt in /usr/local/lib. Danke für den Hinweis auf die Kodierung; das hat mir einiges an Sucherei gespart hoho
Ich habe die Befürchtung, dass das noch nicht alle Tags sind, die verwendet werden. In dem Paper, das ich im Eingangspost verlinkt habe, heißt es
Kudo et al schrieb:For example, IPA tagset used
in ChaSen consists of three categories: part-of-
speech, conjugation form (cform), and conjugate
type (ctype). The cform and ctype are assigned only
to words that conjugate, such as verbs and adjec-
tives. The part-of-speech has at most four levels of
subcategories. The top level has 15 different cate-
gories, such as Noun, Verb, etc. Noun is subdivided
into Common Noun, Proper Noun and so on. Proper
Noun is again subdivided into Person, Organization
or Place, etc. The bottom level can be thought as
the word level (base form) with which we can com-
pletely discriminate all words as different POS. If
we distinguish each branch of the hierarchical tree
as a different label (ignoring the word level), the to-
tal number amounts to about 500, which is much
larger than the typical English POS tagset such as
Penn Treebank.

Und soweit ich weiß ist mecabs ipadic einfach eine syntaktisch angepasstest ChaSen-ipadic.
Andererseits: Wenn ich die Top-Level-Kategorien in pos-id.def zähle, komme ich nur auf 13:
Code:
$ cut -d',' -f1 pos-id.def | sort -u
その他
フィラー
副詞
助動詞
助詞
動詞
名詞
形容詞
感動詞
接続詞
接頭詞
記号
連体詞
Insofern weichen die beiden ipadicts wahrscheinlich doch voneinander ab...

Zitat:Ich hab's nicht ausprobiert, aber ich könnte mir vorstellen, daß man mit Hilfe dieser Datei die Ausgabe von mecab auch auf Deutsch lokalisieren könnte…
Ich habe mal zum Testen 記号,読点,*,* 9 in Symbol,Komma,*,* 9 geändert, aber das hatte keinerlei Auswirkungen. Wahrscheinlich müsste man das ipadic mit der neuen Definition noch mal kompilieren.

Zitat:PS: @vdrummer Es heißt 'Kommata', nicht 'Kommas'… zwinker
Laut Duden ist beides in Ordnung zunge Aber ich finde "Kommatas" auch schöner. Danke für den Hinweis.

Zitat:Nur der Teil 'Könnte problematisch unter Mac OS X sein' finde ich so in der jetzigen Form etwas befremdlich. Eine normale Standardinstallation bereitet für das Komandozeilenprogramm keine Probleme. Das ist eher ein Spezialfall für Programmierer. "Stell sicher, daß Du nicht in /usr/lib installierst!", aber das hat sich unter dem angesprochenen Personenkreis auf OS X schon rumgesprochen. zwinker
Also gab es nur Probleme, als du die mecab.h in C benutzt hast und die normale Binary hat funktioniert? Dann werde ich das entsprechend ändern. Ich dachte, das bezog sich auch auf die Binary.

Zitat:Demzufolge gibt es die libmecab seit 10.5 auf dem System und die zugehörige Headerdatei, aus der auch Apples 'Anpassungen' hervorgehen, war bis 10.7 dabei.
Danke für die Recherchen zu den SDKs. Zum Glück ist das Problem ja nicht so gravierend wie ich angenommen habe. Dann betrifft das also alle Versionen ab 10.5 (wobei ich glaube / hoffe, dass heutzutage niemand mehr 10.4 oder älter benutzt, womit es also quasi alle OS X-Versionen betrifft hoho). Auch hier werde ich entsprechende Anpassungen vornehmen.

Zitat:Das werde ich aber wahrscheinlich genauso wenig fertigstellen, wie die anderen drei Japanischen Software-Kleinprojekte, die ich hier noch rumliegen habe... rot
Das kenne ich nur zu gut! Ich habe hier auch diverse angefangene Software-Projekte rumliegen hoho



Ich hab den Installationsabschnitt für Mac jetzt mal angepasst. Meintest du das so?
(Dieser Beitrag wurde zuletzt bearbeitet: 15.03.16 12:14 von vdrummer.)
15.03.16 12:05
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
MeCab - Morphologisches Analysetool
Antwort schreiben