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.
-> Traitement du langage naturel japonais par Python
LinuxMint13(Ubuntu12.04)
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'])
(Voir les commentaires dans la source)
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]
[Modifié]
-> À propos du japonais dans Matplotlib -> Comment sortir le japonais avec plot () de nltk.FreqDist et nltk.ConditionalFreqDist- (principalement) Notes de programmation
Recommended Posts