[PYTHON] Verwendung von Japanisch mit NLTK-Plot

Ausgabeergebnis

figure_1.gif

Überblick

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.

Vorausgesetztes Wissen

-> Verarbeitung natürlicher japanischer Sprache durch Python

Umgebung

LinuxMint13(Ubuntu12.04)

Code

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'])

Kommentar

(Siehe Kommentare in der Quelle)

Aufgabe

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] figure_2.jpeg

[Überarbeitet] figure_3.jpg

Referenzseite

-> Über Japanisch in Matplotlib -> So geben Sie Japanisch mit plot () von nltk.FreqDist und nltk.ConditionalFreqDist- (hauptsächlich) Programmierhinweise aus

Recommended Posts

Verwendung von Japanisch mit NLTK-Plot
Python: So verwenden Sie Async mit
So verwenden Sie virtualenv mit PowerShell
Verwendung von ManyToManyField mit Djangos Admin
Verwendung von OpenVPN mit Ubuntu 18.04.3 LTS
Verwendung von Cmder mit PyCharm (Windows)
Wie man Ass / Alembic mit HtoA benutzt
So zeigen Sie Python-Japanisch mit Lolipop an
Verwendung des Jupyter-Notebooks mit ABCI
Verwendung des CUT-Befehls (mit Beispiel)
Wie man mit Python-Flüchen Japanisch eingibt
Verwendung von SQLAlchemy / Connect mit aiomysql
Verwendung des JDBC-Treibers mit Redash
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
Verwendung der GCP-Ablaufverfolgung mit offener Telemetrie
Wie man tkinter mit Python in Pyenv benutzt
[Python] Umgang mit japanischen Zeichen mit openCV
Verwendung von Qt Designer
Verwendung der Suche sortiert
Verwendung von xgboost: Mehrklassenklassifizierung mit Irisdaten
[gensim] Verwendung von Doc2Vec
python3: Verwendung der Flasche (2)
Verstehen Sie, wie man Django-Filter verwendet
Verwendung des Generators
[Python] Verwendung von Liste 1
Verwendung von FastAPI ③ OpenAPI
Verwendung des interaktiven Python-Modus mit Git Bash
Wie benutzt man Python Argparse?