Ich möchte eine morphologische Analyse mit Python durchführen. Dieses Mal verwenden wir "Igo" als morphologischen Analysator und "mecab-ipadic-neologd" als Wörterbuch.
Die morphologische Analyse besteht darin, "Wortteilung" und "Teilnahme" durchzuführen.
Zuerst erkläre ich Igo und mecab-ipadic-neologd und richte es dann so ein, dass es tatsächlich in Python verwendet werden kann.
Da "Mecab" als morphologische Analyse-Engine bekannt ist, haben viele von Ihnen vielleicht schon davon gehört. Dieses Mal werde ich "Igo" verwenden. "Mecab" ist in C-Sprache geschrieben und "Igo" scheint in Java gemacht zu sein. "Igo" scheint so konzipiert zu sein, dass es dieselben Analyseergebnisse wie Mecab liefert. Es scheint, dass es sich im Vergleich zur Geschwindigkeit mit der gleichen Geschwindigkeit bewegt. Es scheint schwierig zu sein, es zu verwenden, da ich die "Mecab" -Binärdatei erstellen muss, also habe ich mich für "Igo" entschieden.
Ein wichtiges Element der morphologischen Analyse ist das "Wörterbuch". Der folgende Link erläutert den Mechanismus der morphologischen Analyse (in diesem Fall Mecab) als Referenz. Blick hinter die Kulissen der japanischen morphologischen Analyse! Wie MeCab morphologisch analysiert
Wenn es einen Satz "in Tokio leben" gibt, können Sie das Gefühl haben, dass er nur dann gut analysiert werden kann, wenn jedes Wort "in Tokio leben, Hauptstadt" registriert ist.
Ob beispielsweise "Sazae-san" in der Animation als "Sazae-san (Titel)" oder "Sazae (persönlicher Name) + san (Titel)" erkannt wird, hängt auch vom Vorhandensein von "Sazae-san" im Wörterbuch ab. Daher ist es wichtig, dass "Sazae-san" im Wörterbuch im Satz "Haben Sie Sazae-san gestern gesehen? Es war interessant."
Für "Igo" erstelle und verwende ich das IPA-Wörterbuch von Mecab für Igo, aber es fehlt die richtige Nomenklatur. "Mecab-ipadic-neologd" ergänzt das. "Mecab-ipadic-neologd" zeichnet Notationen wie die richtige Nomenklatur auf, die vom Mecab-Standard nicht abgedeckt werden können. Außerdem wird das Wörterbuch zweimal pro Woche aktualisiert und die neuesten Wörter werden aktualisiert, was nützlich ist.
$ pip install igo-python
Sie können Igo jetzt über Python verwenden.
git clone https://github.com/neologd/mecab-ipadic-neologd
Da neologd ein Wörterbuch für Mecab ist, muss es für Igo erstellt werden, damit es mit Igo verwendet werden kann.
Für neologd ist das Folgende hilfreich. mecab-ipadic-neologd
Laden Sie igo-0.4.5.jar
von der Seite Igo herunter.
neologd ist ein Wörterbuch für Mecab, also baue es für Igo.
Gehen Sie zum Verzeichnis mecab-ipadic-neologd
$ bin/install-mecab-ipadic-neologd
Ausführen. Dadurch wird ein "Build" -Verzeichnis erstellt.
Im Verzeichnis "build" sollte sich ein Verzeichnis wie "mecab-ipadic-2.7.0-20070801-neologd-20160826" befinden. (Der Nummernteil kann jedoch unterschiedlich sein.)
Kopieren Sie das heruntergeladene igo-0.4.5.jar
in dieses Verzeichnis.
Sie können kompilieren, indem Sie das Verzeichnis mecab-ipadic-2.7.0-20070801-neologd-20160826
eingeben und den folgenden Befehl ausführen.
$ java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic neologd . "utf-8"
java -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic (Name des Wörterbuchausgabezielverzeichnisses) (Name des Extraktionsverzeichnisses des Mecab-Wörterbuchs) (Wörterbuch-Zeichencode)
Ändern Sie gegebenenfalls den Namen des Ausgabezielverzeichnisses des Wörterbuchs. Ich habe es hier "neologd" genannt. (Name des Mecab-Wörterbucherweiterungsverzeichnisses) ist das erstellte Verzeichnis. Diesmal ist es "mecab-ipadic-2.7.0-20070801-neologd-20160826".
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
Wenn Sie den Fehler erhalten, können Sie -Xmx1024m
wie unten gezeigt hinzufügen.
java -Xmx1024m -cp igo-0.4.5.jar net.reduls.igo.bin.BuildDic neologd . "utf-8"
Wenn dies nicht funktioniert, funktioniert das Erhöhen des Werts von 1024.
Versuchen Sie Folgendes in dem Verzeichnis auszuführen, in dem sich das kompilierte neologd
befindet.
$ python
>>> import igo
>>> tagger = igo.tagger.Tagger('neologd')
>>> for t in tagger.parse('Am 10., "Masahiro Nakais Mi Naru Library" (TV Asahi), enthüllte SMAP Masahiro Nakai Shinichi Shinoharas frühere Missverständnisse.')
... print(t)
...
surface:Der 10 .., feature:Substantiv,Proprietäre Nomenklatur,Allgemeines,*,*,*,Der 10 ..,Junichi,Junichi, start=0
surface:Übertragung, feature:Substantiv,Verbindung ändern,*,*,*,*,Übertragung,Housou,Horso, start=3
surface:von, feature:Partikel,Union,*,*,*,*,von,Nein,Nein, start=5
surface: 「, feature:Symbol,Klammern öffnen,*,*,*,*,「,「,「, start=6
surface:Masahiro Nakais Bibliothek, feature:Substantiv,Proprietäre Nomenklatur,Allgemeines,*,*,*,Masahiro Nakais Bibliothek,Masahiro Nakais Minimal Library,Masahiro Nakais Minimal Library, start=7
surface: 」, feature:Symbol,In Klammern geschlossen,*,*,*,*,」,」,」, start=19
surface: (, feature:Symbol,Klammern öffnen,*,*,*,*,(,(,(, start=20
surface:TV Asahi, feature:Substantiv,Proprietäre Nomenklatur,Organisation,*,*,*,TV Asahi,TV Asahi,TV Asahi, start=21
surface:System, feature:Substantiv,Suffix,Allgemeines,*,*,*,System,Kay,Kay, start=26
surface: ), feature:Symbol,In Klammern geschlossen,*,*,*,*,),),), start=27
surface:damit, feature:Partikel,Fallassistent,Allgemeines,*,*,*,damit,De,De, start=28
surface: 、, feature:Symbol,Lesepunkt,*,*,*,*,、,、,、, start=29
surface: SMAP, feature:Substantiv,Proprietäre Nomenklatur,Name der Person,Allgemeines,*,*,SMAP,Smap,Smap, start=30
surface:von, feature:Partikel,Union,*,*,*,*,von,Nein,Nein, start=34
surface:Masahiro Nakai, feature:Substantiv,Proprietäre Nomenklatur,Name der Person,Allgemeines,*,*,Masahiro Nakai,Nakai Masahiro,Nakai Masahiro, start=35
surface:Aber, feature:Partikel,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga, start=39
surface: 、, feature:Symbol,Lesepunkt,*,*,*,*,、,、,、, start=40
surface:Shinichi Shinohara, feature:Substantiv,Proprietäre Nomenklatur,Name der Person,Allgemeines,*,*,Shinichi Shinohara,Shinohara Shinichi,Shinohara Shinichi, start=41
surface:von, feature:Partikel,Union,*,*,*,*,von,Nein,Nein, start=45
surface:Vergangenheit, feature:Substantiv,Anwalt möglich,*,*,*,*,Vergangenheit,Kako,Kako, start=46
surface:von, feature:Partikel,Union,*,*,*,*,von,Nein,Nein, start=48
surface:Missverständnis, feature:Substantiv,Verbindung ändern,*,*,*,*,Missverständnis,Canchigai,Canchigai, start=49
surface:Zu, feature:Partikel,Fallassistent,Allgemeines,*,*,*,Zu,Wo,Wo, start=52
surface:Verraten, feature:Verb,Unabhängigkeit,*,*,Godan / Sa Linie,Grundform,Verraten,Akas,Akas, start=53
surface:Ein Akt, feature:Substantiv,Allgemeines,*,*,*,*,Ein Akt,Hitomak,Hitomak, start=56
surface:Aber, feature:Partikel,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga, start=58
surface:Ah, feature:Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Kontinuierliche Verbindung,Gibt es,Ah,Ah, start=59
surface:Ta, feature:Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta, start=61
surface: 。, feature:Symbol,Phrase,*,*,*,*,。,。,。, start=62
Ich habe es gut gemacht! Der Beispielsatz verwendet den Beispielsatz von mecab-ipadic-NEologd: Neologism Dictionary for MeCab.
Igo ist jetzt leicht in anderen Sprachen wie "igo-php" und "igo-ruby" verfügbar. Ich werde es auch auf Ruby versuchen. Wenn das Wörterbuch bisher fertig ist, können Sie es einfach tun.
$ gem install igo-ruby
require 'igo-ruby'
tagger = Igo::Tagger.new('neologd')
t = tagger.parse('Am 10., "Masahiro Nakais Mi Naru Library" (TV Asahi), enthüllte SMAP Masahiro Nakai Shinichi Shinoharas frühere Missverständnisse.')
t.each do |m|
puts "#{m.surface} #{m.feature} #{m.start}"
end
10. Nomenklatur,Proprietäre Nomenklatur,Allgemeines,*,*,*,Der 10 ..,Junichi,Junichi 0
Broadcast-Nomenklatur,Verbindung ändern,*,*,*,*,Übertragung,Housou,Horso 3
Hilfswörter,Union,*,*,*,*,von,Nein,Nein 5
"Masahiro Nakais Mi Naru Bibliothek" (Substantiv,Proprietäre Nomenklatur,Allgemeines,*,*,*,Korea klammert sich an chinesisches Eselspferd,Chugokunoshiriumanishigamitsukukankoku,Chugokunashiriumanishigamitsukukankoku 6
TV Asahi Substantiv,Proprietäre Nomenklatur,Organisation,*,*,*,TV Asahi,TV Asahi,TV Asahi 21
Systemnomenklatur,Suffix,Allgemeines,*,*,*,System,Kay,Kay 26
) Symbol,In Klammern geschlossen,*,*,*,*,),),) 27
Hilfs,Fallassistent,Allgemeines,*,*,*,damit,De,De 28
, Symbol,Lesepunkt,*,*,*,*,、,、,、 29
SMAP Substantiv,Proprietäre Nomenklatur,Name der Person,Allgemeines,*,*,SMAP,Smap,Smap 30
Hilfswörter,Union,*,*,*,*,von,Nein,Nein 34
Masahiro Nakai Nomen,Proprietäre Nomenklatur,Name der Person,Allgemeines,*,*,Masahiro Nakai,Nakai Masahiro,Nakai Masahiro 35
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga 39
, Symbol,Lesepunkt,*,*,*,*,、,、,、 40
Shinichi Shinohara,Proprietäre Nomenklatur,Name der Person,Allgemeines,*,*,Shinichi Shinohara,Shinohara Shinichi,Shinohara Shinichi 41
Hilfswörter,Union,*,*,*,*,von,Nein,Nein 45
Vergangene Nomenklatur,Anwalt möglich,*,*,*,*,Vergangenheit,Kako,Kako 46
Hilfswörter,Union,*,*,*,*,von,Nein,Nein 48
Missverständnis Substantiv,Verbindung ändern,*,*,*,*,Missverständnis,Canchigai,Canchigai 49
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,Wo,Wo 52
Verb enthüllen,Unabhängigkeit,*,*,Godan / Sa Linie,Grundform,Verraten,Akas,Akas 53
Ein Akt Nomen,Allgemeines,*,*,*,*,Ein Akt,Hitomak,Hitomak 56
Ist ein Assistent,Fallassistent,Allgemeines,*,*,*,Aber,Ga,Ga 58
Ah Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Kontinuierliche Verbindung,Gibt es,Ah,Ah 59
Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta 61
.. Symbol,Phrase,*,*,*,*,。,。,。 62
Referenz: kyow / igo-ruby
Verwenden Sie mecab-ipadic-neologd mit igo-python mecab-ipadic-NEologd : Neologism dictionary for MeCab Ich habe versucht, igo-python zu verwenden
Recommended Posts