Traitement du langage 100 coups 2015 ["Chapitre 4: Analyse morphologique"](http: //www.cl.ecei.tohoku) Il s'agit de l'enregistrement du 32ème "Prototype du verbe" de .ac.jp / nlp100 / # ch4). En continuant de la fois précédente, cette fois j'utilise des pandas, donc je peux le traiter en une phrase, et c'est tellement facile que je ne peux pas le battre. Il n'est pas nécessaire que ce soit un article indépendant ...
Lien | Remarques |
---|---|
032.Prototype de verbe.ipynb | Lien GitHub du programme de réponse |
100 coups de traitement du langage amateur:32 | 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 |
---|---|
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 et 39, utilisez matplotlib ou Gnuplot.
Extraire toutes les formes originales du verbe.
import pandas as pd
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[df['pos'] == 'verbe']['base']
La précédente «forme de surface du verbe» vient de passer à la «forme originale du verbe». Avec les pandas, réécrivez simplement les conditions.
python
df[df['pos'] == 'verbe']['base']
Lorsque le programme est exécuté, les résultats suivants sont affichés.
Résultat de sortie
13 nés
19
31 pleurer
37
39
...
212527 meurent
212532 obtenir
212537 mourir
212540 obtenir
212541
Name: base, Length: 28119, dtype: object