Ermöglichen Sie die Verwendung von Japanisch mit der Plotfunktion (Grafikausgabe) von NLTK (Bibliothek für die Verarbeitung natürlicher Sprache). O'Reilly-Buch "Einführung in die Verarbeitung natürlicher Sprache" ([-> Englische Version [kostenlos]](http: / /www.nltk.org/book/)) im Kapitel Japanische Verarbeitung natürlicher Sprache durch Python "Beachten Sie jedoch, dass japanische Zeichen in matplotlib standardmäßig verstümmelt sind." Ich konnte keine Lösung finden und habe mich selbst darum gekümmert.
-> Verarbeitung natürlicher japanischer Sprache durch Python
LinuxMint13(Ubuntu12.04)
NLTK japanische Handlung.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 Geben Sie die Standardschriftart an###← Punkt 1: Geben Sie die japanische Schriftart explizit an
import matplotlib
import matplotlib.font_manager as font_manager
#TTF-Datei(Schriftart)Geben Sie die Adresse von an
font_path = '/usr/share/fonts/truetype/fonts-japanese-gothic.ttf'
#Erhalten Sie detaillierte Informationen zu Schriftarten
font_prop = font_manager.FontProperties(fname = font_path)
#Verwenden Sie den Namen der Schriftart und geben Sie ihn als Standardschriftart für matplot an
matplotlib.rcParams['font.family'] = font_prop.get_name()
###Japanischer Korpus(unicode)Schaffung###← Punkt 2: Wörter werden per Unicode verwaltet
#Laden Sie den Korpus
jp_sent_tokenizer = nltk.RegexpTokenizer(u'[^ 「」!?。]*[!?。]')
reader = PlaintextCorpusReader("/home/Nutzer/Desktop", r'NKMK.txt',
encoding='utf-8',
para_block_reader=read_line_block,
sent_tokenizer=jp_sent_tokenizer,
word_tokenizer=jptokenizer.JPMeCabTokenizer())
#Holen Sie sich eine Wortgruppe, indem Sie Unicode aus dem Korpus angeben
nkmk = Text(unicode(w) for w in reader.words())
###Zeichnung###← Punkt 3: Geben Sie das Argument mit Unicode an
nkmk.dispersion_plot([u'Nico',u'Maki',u'Hier',u'Herz'])
(Siehe Kommentare in der Quelle)
Die Bezeichnung von ConditionalFreqDist.plot () kann nicht ins Japanische übersetzt werden. Wenn Sie /usr/local/lib/python2.7/dist-packages/nltk/probability.py lesen, "kwargs ['label'] = str (Bedingung)" (Zeile 1790). Mit anderen Worten, die Beschriftungszeichenfolge wird über die Funktion str () ausgegeben, sodass Japanisch definitiv verstümmelt ist. Die Korrekturmethode besteht darin, die vorherige Zeile in "kwargs ['label'] = Unicode (Bedingung)" zu ändern. Wenn es einen ähnlichen Fall gibt, muss anscheinend auch die Bibliothek geändert werden.
[Vor der Korrektur]
[Überarbeitet]
-> Über Japanisch in Matplotlib -> So geben Sie Japanisch mit plot () von nltk.FreqDist und nltk.ConditionalFreqDist- (hauptsächlich) Programmierhinweise aus
Recommended Posts