Traitement du langage 100 coups 2015 ["Chapitre 4: Analyse morphologique"](http: //www.cl.ecei.tohoku) .ac.jp / nlp100 / # ch4) 38ème "Hydrosis" enregistrement. C'est facile tant que vous surmontez le "tofu" du coup précédent. Si vous ne mettez pas d'étiquette, vous n'avez pas à vous occuper du "tofu".
Lien | Remarques |
---|---|
038.histogramme.ipynb | Lien GitHub du programme de réponse |
100 coups de traitement du langage amateur:38 | Copiez et collez la source de nombreuses pièces source |
Officiel MeCab | Page MeCab à regarder en premier |
type | version | Contenu |
---|---|---|
OS | Ubuntu18.04.01 LTS | Il fonctionne virtuellement |
pyenv | 1.2.16 | J'utilise pyenv car j'utilise parfois plusieurs environnements Python |
Python | 3.8.1 | python3 sur pyenv.8.J'utilise 1 Les packages sont gérés à l'aide de venv |
Mecab | 0.996-5 | apt-Installer avec get |
Dans l'environnement ci-dessus, j'utilise les packages Python supplémentaires suivants. Installez simplement avec pip ordinaire.
type | version |
---|---|
matplotlib | 3.1.3 |
pandas | 1.0.1 |
Appliquer l'analyseur morphologique MeCab au roman "Je suis un chat" de Natsume Soseki et obtenir les statistiques des mots du roman.
Analyse morphologique, MeCab, paroles de partie, fréquence d'occurrence, loi de Zipf, matplotlib, Gnuplot
Utilisation de MeCab pour le texte (neko.txt) du roman de Natsume Soseki "Je suis un chat" Effectuez une analyse morphologique et enregistrez le résultat dans un fichier appelé neko.txt.mecab. Utilisez ce fichier pour implémenter un programme qui répond aux questions suivantes.
Pour les problèmes 37, 38, 39, utilisez matplotlib ou Gnuplot.
Tracez un histogramme de la fréquence d'occurrence des mots (l'axe horizontal représente la fréquence d'occurrence et l'axe vertical représente le nombre de types de mots qui prennent la fréquence d'occurrence sous forme de graphique à barres).
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.family'] = 'IPAexGothic'
def read_text():
# 0:Type de surface(surface)
# 1:Partie(pos)
# 2:Sous-classification des paroles des parties 1(pos1)
# 7:Forme basique(base)
df = pd.read_table('./neko.txt.mecab', sep='\t|,', header=None,
usecols=[0, 1, 2, 7], names=['surface', 'pos', 'pos1', 'base'],
skiprows=4, skipfooter=1 ,engine='python')
return df[(df['pos'] != 'Vide') & (df['surface'] != 'EOS') & (df['pos'] != 'symbole')]
df = read_text()
hist = df['surface'].value_counts().plot.hist(bins=20, range=(1, 20))
hist.set_xlabel('Fréquence d'apparition')
hist.set_ylabel('Nombre de types de mots')
Utilisez simplement plot
from pandas
. J'ai également ajouté une étiquette.
python
hist = df['surface'].value_counts().plot.hist(bins=20, range=(1, 20))
hist.set_xlabel('Fréquence d'apparition')
hist.set_ylabel('Nombre de types de mots')
Lorsque le programme est exécuté, les résultats suivants sont affichés. Eh bien, ça ressemble à ça.
Recommended Posts