[PYTHON] Comment utiliser le japonais avec le tracé NLTK

Résultat de sortie

figure_1.gif

Aperçu

Activez l'utilisation du japonais avec la fonction de tracé (sortie graphique) de NLTK (bibliothèque pour le traitement du langage naturel). Livre O'Reilly "Introduction to Natural Language Processing" ([-> version anglaise [gratuite]](http: / /www.nltk.org/book/)) dans le chapitre Traitement du langage naturel japonais par Python "Cependant, notez que les caractères japonais sont brouillés par défaut dans matplotlib." Je n'ai pas pu trouver de solution, alors je m'en suis occupé moi-même.

Connaissances préalables

-> Traitement du langage naturel japonais par Python

environnement

LinuxMint13(Ubuntu12.04)

code

Terrain japonais NLTK.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding('UTF-8')

import MeCab
import nltk
from numpy import *
from nltk.corpus.reader import *
from nltk.corpus.reader.util import *
from nltk.text import Text
import jptokenizer

###matplotlib Spécifier la police par défaut###← Point 1: spécifier explicitement la police japonaise
import matplotlib
import matplotlib.font_manager as font_manager
#Fichier TTF(Police de caractère)Précisez l'adresse de
font_path = '/usr/share/fonts/truetype/fonts-japanese-gothic.ttf'
#Obtenez des informations détaillées sur les polices
font_prop = font_manager.FontProperties(fname = font_path)
#Utilisez le nom de la police et spécifiez-la comme police par défaut pour matplot
matplotlib.rcParams['font.family'] = font_prop.get_name()

###Corpus japonais(unicode)Création###← Point 2: les mots sont gérés par unicode
#Chargez le corpus
jp_sent_tokenizer = nltk.RegexpTokenizer(u'[^ 「」!?。]*[!?。]')
reader = PlaintextCorpusReader("/home/Utilisateur/bureau", r'NKMK.txt',
                                encoding='utf-8',
                                para_block_reader=read_line_block,
                                sent_tokenizer=jp_sent_tokenizer,
                                word_tokenizer=jptokenizer.JPMeCabTokenizer())
#Obtenez un groupe de mots en spécifiant unicode à partir du corpus
nkmk = Text(unicode(w) for w in reader.words())

###dessin###← Point 3: Spécifiez l'argument avec unicode
nkmk.dispersion_plot([u'Nico',u'Maki',u'Ici',u'Cœur'])

Commentaire

(Voir les commentaires dans la source)

Tâche

L'étiquette de ConditionalFreqDist.plot () ne peut pas être traduite en japonais. Si vous lisez /usr/local/lib/python2.7/dist-packages/nltk/probability.py, "kwargs ['label'] = str (condition)" (ligne 1790). En d'autres termes, la chaîne de caractères d'étiquette est sortie via la fonction str (), donc le japonais est définitivement brouillé. La méthode de correction consiste à changer la ligne précédente en "kwargs ['label'] = unicode (condition)". S'il y a un cas similaire, il semble que la bibliothèque doit également être modifiée.

[Avant correction] figure_2.jpeg

[Modifié] figure_3.jpg

Site de référence

-> À propos du japonais dans Matplotlib -> Comment sortir le japonais avec plot () de nltk.FreqDist et nltk.ConditionalFreqDist- (principalement) Notes de programmation

Recommended Posts

Comment utiliser le japonais avec le tracé NLTK
Python: comment utiliser async avec
Pour utiliser virtualenv avec PowerShell
Comment utiliser ManyToManyField avec l'administrateur de Django
Comment utiliser OpenVPN avec Ubuntu 18.04.3 LTS
Comment utiliser Cmder avec PyCharm (Windows)
Comment utiliser Ass / Alembic avec HtoA
Comment afficher le japonais python avec lolipop
Comment utiliser le notebook Jupyter avec ABCI
Comment utiliser la commande CUT (avec exemple)
Comment entrer le japonais avec les malédictions Python
Comment utiliser SQLAlchemy / Connect avec aiomysql
Comment utiliser le pilote JDBC avec Redash
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
Comment utiliser la trace GCP avec la télémétrie ouverte
Comment utiliser tkinter avec python dans pyenv
[Python] Comment gérer les caractères japonais avec openCV
Comment utiliser Qt Designer
Comment utiliser la recherche triée
Comment utiliser xgboost: classification multi-classes avec des données d'iris
[gensim] Comment utiliser Doc2Vec
python3: Comment utiliser la bouteille (2)
Comprendre comment utiliser django-filter
Comment utiliser le générateur
[Python] Comment utiliser la liste 1
Comment utiliser FastAPI ③ OpenAPI
Comment utiliser le mode interactif python avec git bash
Comment utiliser Python Argparse