Traitement du langage 100 coups 2015 ["Chapitre 4: Analyse morphologique"](http: //www.cl.ecei.tohoku) .ac.jp / nlp100 / # ch4) 37e "Top 10 des mots les plus fréquents" record.
Cette fois, nous utiliserons matplotlib
pour l'affichage des graphiques. Il semble que tout le monde tombera dans matplotlib
" Tofu problem " (japonais Correspond au phénomène selon lequel les caractères de type tofu affichés sont affichés sur le graphique).
Lien | Remarques |
---|---|
037.Top 10 des mots les plus fréquents.ipynb | Lien GitHub du programme de réponse |
100 coups de traitement du langage amateur:37 | 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" Analysez la morphologie 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.
Affichez les 10 mots les plus fréquents et leur fréquence d'apparition dans un graphique (par exemple, un graphique à barres).
import pandas as pd
import matplotlib.pyplot as plt
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()
df['surface'].value_counts()[:10].plot.bar()
#Exclure les mots auxiliaires et les verbes auxiliaires
df[~df['pos'].str.startswith('Aider')]['surface'].value_counts()[:10].plot.bar()
Reportez-vous à l'article suivant pour prendre en charge le tofu (correspondant aux caractères graphiques déformés). Veuillez noter que la méthode de support dépend fortement de l'environnement OS et Python (comme l'utilisation de pyenv).
Installer les polices avec ʻapt-get`
apt-get install fonts-ipaexfont
Supprimez physiquement les fichiers suivants qui sont le cache de polices de matplotlib
. Je ne connais pas la différence entre les deux, mais je l'ai supprimé avec le sentiment que "le cache peut être effacé".
Spécifiez la police pour générer le graphique avec les paramètres suivants sur Python. Ceci complète le support "tofu".
python
plt.rcParams['font.family'] = 'IPAexGothic'
pandas
est très pratique car il peut être affiché comme il utilise plot
.
python
df['surface'].value_counts()[:10].plot.bar()
#Exclure les mots auxiliaires et les verbes auxiliaires
df[~df['pos'].str.startswith('Aider')]['surface'].value_counts()[:10].plot.bar()
Lorsque le programme est exécuté, les résultats suivants sont affichés. Après tout, il est plus facile de comprendre si vous le graphez plutôt que de simplement regarder les chiffres.
Recommended Posts