[PYTHON] Gérez en quelque sorte le symbole Mecab / la connexion de service

Je n'ai pas pu trouver le même phénomène alors que je pensais qu'il se manifesterait si je cherchais. Alors mémo mémo. L'environnement PC est windows10.

Ce problème qui peut être compris en 3 secondes

#d'accord,*,*,*,*,*
Sumomo Fusesa-fu,*,*,*,*,*

Qu'est-ce que okke! Qu'est-ce que Fusesa!

Supplément: procédure d'installation Mecab

Je l'ai introduit dans un tel environnement. J'utilise juste mecab via github.

  1. Obtenez le Mecab construit à 64 bits à partir de la page suivante https://github.com/ikegami-yukino/mecab/releases

  2. Entrez les dictionnaires SHIFT-JIS et UTF-8 pour référence sur la page suivante. Utilisation de MeCab avec Python et R-Windows 10-64bit

  3. Compilez NEologd en SHIFT-JIS et UTF-8 en vous référant à la page suivante. Pour utiliser NEologd pour le dictionnaire RMeCab sous Windows 10 (sans Linux)

Ce que je voulais faire

Après avoir effectué une analyse morphologique et réduit aux "noms, verbes, adjectifs" pour supprimer les mots inutiles ... image.png ** Je ne pense pas qu'Igeta soit une nomenclature! ** ** (Les mots sont extraits pour vérification)

Après tout, je voulais que vous reconnaissiez le symbole qui est une nomenclature comme un symbole.

Après enquête, il semble que le symbole soit reconnu comme une connexion étrange dans le cadre de Mecab en premier lieu. On dit que le dictionnaire doit être converti, alors convertissons le dictionnaire en se référant à la page suivante. Référence: Ajouter une entrée au dictionnaire MeCab sous Windows

dic\ipadic\unk.def
dic\ipadic-UTF8\unk.def

Modifiez la 9ème ligne des deux dictionnaires ci-dessus comme ci-dessous. (Si vous n'utilisez pas à la fois R et Python, je pense que c'est seulement ipadic) Selon l'emplacement d'enregistrement, l'écrasement est interdit, donc lors de l'édition, copiez-le également sur le bureau.

SYMBOL,1283,1283,17585,symbole,Général,*,*,*,*,*   
↓
SYMBOL,1283,1283,17585,symbole,Général,*,*,*,*,*

Après cela, démarrez l'invite de commande en tant qu'administrateur. (Notez qu'une erreur d'autorisation se produira à une invite de commande normale) Accédez au dossier avec les modifications ci-dessus et exécutez respectivement les commandes suivantes.

# dic\Exécuter sur ipadic
..\..\bin\mecab-dict-index -f shift-jis

# dic\ipadic-Exécuter avec UTF8
..\..\bin\mecab-dict-index -f utf-8 

Ensuite, démarrez mecab à partir de l'invite de commande et entrez "#sumomo" ... image.png

** Qu'est-ce que okke! Qu'est-ce que Fusesa! ** **

Recherche de cause

Il semble que les personnages soient brouillés, mais c'est un type que je n'ai pas vu beaucoup. Si les caractères UTF sont déformés, c'est une marque de fin en losange.

J'ai cherché sur un site appelé testeur brouillé qui a intentionnellement créé des caractères brouillés ... image.png ** Ce gars! !! ** **

En d'autres termes, il semble que l'encodage ne fonctionne pas. Alors fais ça!

# dic\Exécuter sur ipadic
..\..\bin\mecab-dict-index -f euc-jp -f shift-jis

Allez "# Sumomo" image.png ** Doushite …… **

Cela ne fonctionnait pas même si je rentrais dans le dictionnaire et réessayais. De cette façon, entrez dans le labyrinthe. Si vous pensez positivement, ce n'est pas "Fusesa", donc le dictionnaire fonctionne, cependant ...

Je me suis perdu sur la route et j'ai fait quelque chose comme ça

# dic\Exécuter sur ipadic
..\..\bin\mecab-dict-index -f shift-jis -f euc-jp

Alors, "# Sumomo"

image.png ** Cette! !! !! ** ** Ça s'est bien passé.

Il semble que vous ayez mal compris car les arguments lors de la création d'un dictionnaire avec NEOlogd étaient dans l'ordre "-f Code de caractère original du dictionnaire -f Code de caractère du dictionnaire créé"? …… En premier lieu, je n'ai pas compris les détails des arguments même lorsque j'ai regardé la page officielle.

En d'autres termes, je pensais qu'une commande comme "mecab-dict-index -f code de caractère du dictionnaire à créer -f code de caractère du dictionnaire original" était la bonne réponse. Meibi.

Conversion de dictionnaire UTF-8 (inachevée)

Il semble que mecab fonctionne correctement sur l'invite de commande, mais UTF-8 est déjà affiché. À l'exception de SHIFT-JIS, les caractères doivent être tronqués à l'invite de commande, de sorte que le dictionnaire que vous souhaitez convertir en spécifiant UTF-8 est SHIFT-JIS.

Le dictionnaire doit également être UTF-8 pour pouvoir l'utiliser avec python, donc reconstruisez la version UTF en vous référant à ce qui suit. Référence: Comment insérer le dictionnaire NEologd relativement facilement dans le dictionnaire Windows-System

Avec un logiciel appelé EmEditor Enregistrer en spécifiant tout l'encodage → Code de caractère: utf-8 (avec bom) → Code de saut de ligne: lf uniquement Convertissez CSV à la fois comme. Puis exécutez la commande suivante

# dic\ipadic-Exécuter avec UTF8
mecab-dict-index -f utf-8 -t utf-8

Vous devriez maintenant avoir un dictionnaire UTF-8. Réécrivez temporairement mecabrc ci-dessous ...

;6ème ligne
dicdir =  $(rcpath)\..\dic\ipadic-UTF8
;8ème ligne
userdic = C:\Program Files (x86)\MeCab\dic\NEologd\NEologd.20200521-u.dic

mecab -dVérifiez le code de caractère avec. image.png C'est bon.

De python ... image.png Je ne peux pas faire ça ...? Une petite vérification requise.

Serpentin

C'est juste un désordre. Au début, je voulais utiliser mecab avec R, donc j'ai fait les mêmes contre-mesures contre les changements dans le dictionnaire téléchargé depuis site officiel de mecab. A cette époque, les personnages n'étaient pas déformés. ...... Je sens pourquoi. Ma mémoire est ambiguë. Je ne sais pas car je n'ai pas vérifié si 32 bits et 64 bits sont liés.

Si vous essayez d'utiliser mecab déposé sur le site officiel ci-dessus, vous obtiendrez une erreur du type "32 bits!" En python et il sera dispersé, il est donc plus sûr de mettre celui construit en 64 bits.

Recommended Posts

Gérez en quelque sorte le symbole Mecab / la connexion de service
À propos de la commande de service