[PYTHON] Verwenden Sie für MeCab das Wörterbuch zur Erkennung von Firmennamen "JCLdic"

Über diesen Artikel

Dieser Artikel beschreibt die Verwendung des Firmennamenwörterbuchs (JCLdic).

Wörterbuch Einführung

JCLdic enthält über 8 Millionen Firmennamen und deren Aliase. Dieses Wörterbuch wurde erstellt, um das Problem zu lösen, dass die Abdeckung von Firmennamen in herkömmlichen Wörterbüchern gering ist und aufgrund von Notationsschwankungen schwer zu erkennen ist.

Holen Sie sich ein Wörterbuch

Laden Sie MeCab Dic am Beispiel von JCL_slim herunter.

Umwelt vorbereiten

Bitte installieren Sie zuerst MeCab und mecab-python3.

Verschieben Sie die heruntergeladene Datei "jcl_slim_mecab.dic" in den angegebenen Ordner.

$ mkdir /usr/local/lib/mecab/dic/user_dict
$ mv jcl_slim_mecab.dic /usr/local/lib/mecab/dic/user_dict

Aktualisieren Sie die MeCab-Konfigurationsdatei mecabrc und schreiben Sie den Pfad zum Wörterbuch.

$ vim /usr/local/etc/mecabrc

In "mecabrc" sind der "dicdir" -Systemwörterbuchpfad und "userdic" die Benutzerwörterbuchpfade. Schreiben Sie den JCLdic-Pfad in userdic.

dicdir =  /usr/local/lib/mecab/dic/ipadic
;dicdir =  /usr/local/lib/mecab/dic/mecab-ipadic-neologd
;dicdir = /usr/local/lib/mecab/dic/jumandic
;dicdir = /usr/local/lib/mecab/dic/unidic

userdic = /usr/local/lib/mecab/dic/user_dict/jcl_slim_mecab.dic
; output-format-type = wakati
; input-buffer-size = 8192

; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n

Sie können auch Pfade für mehrere Benutzerwörterbücher angeben.

userdic = /usr/local/lib/mecab/dic/user_dict/jcl_full_mecab_1.dic,/usr/local/lib/mecab/dic/user_dict/jcl_full_mecab_2.dic

Jetzt können Sie loslegen.

Verwenden Sie JCLdic in der Befehlszeile

Ergebnis der Nichtverwendung von jcl_slim_mecab.dic:

echo "TIS Co., Ltd. von der TIS Intec Group hat JCLdic (japanisches Firmennamenwörterbuch) veröffentlicht, ein Wörterbuch zur kostenlosen Erkennung von Firmennamen in der Verarbeitung natürlicher Sprache." | mecab

TIS-Nomenklatur,Allgemeines,*,*,*,*,*
Intec Substantiv,Eigenname,Organisation,*,*,*,Intec,Intec,Intec
Gruppennomenklatur,Allgemeines,*,*,*,*,Gruppe,Gruppe,Gruppe
Hilfswörter,Union,*,*,*,*,von,Nein,Nein
TIS-Nomenklatur,Allgemeines,*,*,*,*,*
Noun Co., Ltd.,Allgemeines,*,*,*,*,Co., Ltd.,Kabushiki Gaisha,Kabushiki Gaisha
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
, Symbol,Lesepunkt,*,*,*,*,、,、,、
......
EOS

Ergebnis der Verwendung von jcl_slim_mecab.dic:

echo "TIS Co., Ltd. von der TIS Intec Group hat JCLdic (japanisches Firmennamenwörterbuch) veröffentlicht, ein Wörterbuch zur kostenlosen Erkennung von Firmennamen in der Verarbeitung natürlicher Sprache." | mecab

TIS-Nomenklatur,Eigenname,Organisation,*,*,*,TIS Co., Ltd.,*,*
Intec Substantiv,Eigenname,Organisation,*,*,*,Intec Co., Ltd.,*,*
Gruppennomenklatur,Allgemeines,*,*,*,*,Gruppe,Gruppe,Gruppe
Hilfswörter,Union,*,*,*,*,von,Nein,Nein
TIS Co., Ltd.,Eigenname,Organisation,*,*,*,TIS Co., Ltd.,*,*
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
, Symbol,Lesepunkt,*,*,*,*,、,、,、
......
EOS

Sie können auch ein Benutzerwörterbuch angeben.

echo "TIS Co., Ltd. von der TIS Intec Group hat JCLdic (japanisches Firmennamenwörterbuch) veröffentlicht, ein Wörterbuch zur kostenlosen Erkennung von Firmennamen in der Verarbeitung natürlicher Sprache." | mecab -u /usr/local/lib/mecab/dic/user_dict/jcl_medium_mecab.dic

Verwenden Sie JCLdic mit Python

Erkennen Sie den Firmennamen.

Methode 1: parse Methode

import unicodedata
import MeCab

# 1 specify dictionary by option
# tagger = MeCab.Tagger('-u /usr/local/lib/mecab/dic/user_dict/jcl_slim_mecab.dic')

# 2 import multiple dictionaries by mecabrc
tagger = MeCab.Tagger('-r /usr/local/etc/mecabrc')

text = 'TIS Co., Ltd. von der TIS Intec Group hat JCLdic (japanisches Firmennamenwörterbuch) veröffentlicht, ein Wörterbuch zur kostenlosen Erkennung von Firmennamen in der Verarbeitung natürlicher Sprache.'

# convert zenkaku to hankaku
text = unicodedata.normalize('NFKC', text) 

# parse
print(tagger.parse(text))

Ergebnis:

TIS-Nomenklatur,Eigenname,Organisation,*,*,*,TIS Co., Ltd.,*,*
Intec Substantiv,Eigenname,Organisation,*,*,*,Intec Co., Ltd.,*,*
Gruppennomenklatur,Allgemeines,*,*,*,*,Gruppe,Gruppe,Gruppe
Hilfswörter,Union,*,*,*,*,von,Nein,Nein
TIS Co., Ltd.,Eigenname,Organisation,*,*,*,TIS Co., Ltd.,*,*
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
, Symbol,Lesepunkt,*,*,*,*,、,、,、
...
EOS

Methode 2: parseToNode Methode

Erkennen Sie die Entität des Firmennamens mit dem Schlüsselwort "Organisation".

import unicodedata
import MeCab

# 1 specify dictionary by option
# tagger = MeCab.Tagger('-u /usr/local/lib/mecab/dic/user_dict/jcl_slim_mecab.dic')

# 2 import multiple dictionaries by mecabrc
tagger = MeCab.Tagger('-r /usr/local/etc/mecabrc')

text = 'TIS Co., Ltd. von der TIS Intec Group hat JCLdic (japanisches Firmennamenwörterbuch) veröffentlicht, ein Wörterbuch zur kostenlosen Erkennung von Firmennamen in der Verarbeitung natürlicher Sprache.'

# convert zenkaku to hankaku
text = unicodedata.normalize('NFKC', text) 

# parse
node = tagger.parseToNode(text)
result = []

while node:
    # node feature map:Teil,Teiltexte Unterklassifizierung 1,Teil Teil Unterklassifizierung 2,Teiltexte Unterklassifizierung 3,Nutzungsart,Nutzungsart,Prototyp,lesen,Aussprache
    # example:   TIS: ['Substantiv', '固有Substantiv', 'Organisation', '*', '*', '*', 'TIS Co., Ltd.', '*', '*']
    if node.feature.split(",")[2] == 'Organisation':
        result.append(node.surface)
    node = node.next

print(result)
# ['TIS', 'Intec', 'TIS Co., Ltd.']

Referenz

Recommended Posts

Verwenden Sie für MeCab das Wörterbuch zur Erkennung von Firmennamen "JCLdic"
Verwenden Sie BMFont als Schriftart für Pyglet
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
So verwenden Sie MkDocs zum ersten Mal
Verwenden Sie vorerst Logger mit Python