[PYTHON] Utilisez le dictionnaire de reconnaissance de nom d'entreprise "JCLdic" pour MeCab

À propos de cet article

Cet article explique comment utiliser le dictionnaire des noms de société (JCLdic).

Introduction au dictionnaire

JCLdic contient plus de 8 millions de noms de sociétés et leurs alias. Ce dictionnaire a été créé pour résoudre le problème que la couverture des noms de sociétés est faible dans les dictionnaires conventionnels et qu'il est difficile à reconnaître en raison des fluctuations de notation.

Obtenez un dictionnaire

Téléchargez MeCab Dic en utilisant JCL_slim comme exemple.

Préparer l'environnement

Veuillez d'abord installer MeCab et mecab-python3.

Déplacez le fichier téléchargé jcl_slim_mecab.dic vers le dossier spécifié.

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

Mettez à jour le fichier de configuration MeCab mecabrc et écrivez le chemin vers le dictionnaire.

$ vim /usr/local/etc/mecabrc

Dans mecabrc, le chemin du dictionnaire système dicdir, ʻuserdic est le chemin du dictionnaire utilisateur. Écrivez le chemin JCLdic dans ʻ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

Vous pouvez également spécifier des chemins pour plusieurs dictionnaires utilisateur.

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

Vous êtes maintenant prêt à partir.

Utilisez JCLdic sur la ligne de commande

Résultat de la non-utilisation de jcl_slim_mecab.dic:

echo "TIS Co., Ltd. du groupe TIS Intec a publié gratuitement JCLdic (dictionnaire japonais des noms de sociétés), un dictionnaire permettant de reconnaître les noms de sociétés dans le traitement du langage naturel." | mecab

Nomenclature TIS,Général,*,*,*,*,*
Intec substantif,Nomenclature propriétaire,Organisation,*,*,*,Intec,Intec,Intec
Nomenclature de groupe,Général,*,*,*,*,groupe,groupe,groupe
Mots auxiliaires,syndicat,*,*,*,*,de,Non,Non
Nomenclature TIS,Général,*,*,*,*,*
Noun Co., Ltd.,Général,*,*,*,*,Co., Ltd.,Kabushiki Gaisha,Kabushiki Gaisha
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
, Symbole,Point de lecture,*,*,*,*,、,、,、
......
EOS

Résultat de l'utilisation de jcl_slim_mecab.dic:

echo "TIS Co., Ltd. du groupe TIS Intec a publié gratuitement JCLdic (dictionnaire japonais des noms de sociétés), un dictionnaire permettant de reconnaître les noms de sociétés dans le traitement du langage naturel." | mecab

Nomenclature TIS,Nomenclature propriétaire,Organisation,*,*,*,TIS Co., Ltd.,*,*
Intec substantif,Nomenclature propriétaire,Organisation,*,*,*,Intec Co., Ltd.,*,*
Nomenclature de groupe,Général,*,*,*,*,groupe,groupe,groupe
Mots auxiliaires,syndicat,*,*,*,*,de,Non,Non
TIS Co., Ltd.,Nomenclature propriétaire,Organisation,*,*,*,TIS Co., Ltd.,*,*
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
, Symbole,Point de lecture,*,*,*,*,、,、,、
......
EOS

Vous pouvez également spécifier un dictionnaire utilisateur.

echo "TIS Co., Ltd. du groupe TIS Intec a publié gratuitement JCLdic (dictionnaire japonais des noms de sociétés), un dictionnaire permettant de reconnaître les noms de sociétés dans le traitement du langage naturel." | mecab -u /usr/local/lib/mecab/dic/user_dict/jcl_medium_mecab.dic

Utiliser JCLdic avec Python

Reconnaissez le nom de l'entreprise.

Méthode 1: méthode parse

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. du groupe TIS Intec a publié gratuitement JCLdic (dictionnaire japonais des noms de sociétés), un dictionnaire permettant de reconnaître les noms de sociétés dans le traitement du langage naturel.'

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

# parse
print(tagger.parse(text))

résultat:

Nomenclature TIS,Nomenclature propriétaire,Organisation,*,*,*,TIS Co., Ltd.,*,*
Intec substantif,Nomenclature propriétaire,Organisation,*,*,*,Intec Co., Ltd.,*,*
Nomenclature de groupe,Général,*,*,*,*,groupe,groupe,groupe
Mots auxiliaires,syndicat,*,*,*,*,de,Non,Non
TIS Co., Ltd.,Nomenclature propriétaire,Organisation,*,*,*,TIS Co., Ltd.,*,*
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
, Symbole,Point de lecture,*,*,*,*,、,、,、
...
EOS

Méthode 2: méthode parseToNode

Reconnaissez l'entité du nom de la société avec le mot-clé ʻ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. du groupe TIS Intec a publié gratuitement JCLdic (dictionnaire japonais des noms de sociétés), un dictionnaire permettant de reconnaître les noms de sociétés dans le traitement du langage naturel.'

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

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

while node:
    # node feature map:Partie,Sous-classification des paroles des parties 1,Sous-classification des pièces détachées 2,Sous-classification des paroles des parties 3,Type d'utilisation,Type d'utilisation,Prototype,en train de lire,prononciation
    # example:   TIS: ['nom', '固有nom', 'Organisation', '*', '*', '*', 'TIS Co., Ltd.', '*', '*']
    if node.feature.split(",")[2] == 'Organisation':
        result.append(node.surface)
    node = node.next

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

référence

Recommended Posts

Utilisez le dictionnaire de reconnaissance de nom d'entreprise "JCLdic" pour MeCab
Utilisez BMFont comme police pour pyglet
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
Comment utiliser MkDocs pour la première fois
Utilisez Logger avec Python pour le moment