Création d'une bibliothèque pour python capable de gérer facilement la division morphologique

Contenu de cet article

Que pouvez-vous faire avec cette bibliothèque

Installation

Mecab et Mecab-neologd

Vous devez installer MeCab en premier lieu.

Mais je pense que les artisans du prétraitement sont déjà prêts, je vais donc l'omettre.

Il prend également en charge l'appel du dictionnaire Mecab-neologd, c'est donc une bonne idée de l'installer.

Installation du corps principal

Faites git clone [email protected]: Kensuke-Mitsuzawa / JapaneseTokenizers.git et vous pouvez l'utiliser avec python setup.py install.

Ou vous pouvez le faire avec pip install git + https: // github.com / Kensuke-Mitsuzawa / JapaneseTokenizers.

Comment utiliser

Le même contenu est écrit dans exemple, je vais donc l'écrire brièvement.

Division morphologique

Préparez l'instruction d'entrée

`phrase = u'Teheran (persan: تهران; Tehrān Tehran.ogg prononciation [help / file] / teɦˈrɔːn /, anglais: Téhéran) est la capitale de l'Asie occidentale, l'Iran et la capitale de Téhéran. Population 12 223 598 habitants. La population urbaine atteint 13 413 348 habitants. ''

python2x n'a qu'une entrée ʻunicode`.

Peu importe celui que vous utilisez pour python3x.

Spécifie le type d'os. Autre que centOS, ʻos Type =" generic "convient. Seul centOS doit avoir ʻos Type = "centsos". (C'est parce que les commandes système de Mecab ne sont différentes que pour centOS. Il peut y avoir d'autres systèmes d'exploitation comme ça ... J'ai confirmé que cela fonctionne sur Ubuntu et Mac.)

Spécifie le type de dictionnaire.

Initialiser l'instance mecab_wrapper = MecabWrapper(dictType=dictType, osType=osType)

Mots divisés. tokenized_obj = mecab_wrapper.tokenize(sentence=sentence)

Par défaut, les mots et les parties sont renvoyés dans une paire de tapple.

tokenized_obj = mecab_wrapper.tokenize(sentence=sentence, return_list=False)

Ensuite, cet objet de classe est renvoyé, donc si vous souhaitez l'utiliser pour d'autres traitements, ce Il est préférable de spécifier le drapeau.

filtration

Filtration

Le mot d'arrêt est

stopwords = [u'Teheran ']

Mettez une chaîne dans la liste comme ceci. («Str» et «unicode» sont tous deux acceptables)

Pour spécifier par partie, spécifiez comme [(partie du tuple de partie)].

Les mots de partie peuvent être spécifiés jusqu'à 3 niveaux. Par exemple, dans IPADIC part-of-speech system, si vous voulez nom-nomenclature propriétaire-nom personnel,` (u'noun ', Écrivez u'nomenclature propriétaire ', u'nom personnel') '.

Si vous voulez spécifier jusqu'à nom-propriétaire, utilisez (u'noun ', u'proprietary nom).

Encore une fois, vous pouvez saisir à la fois «str» et «unicode».

Placez la bande de paroles de partie que vous souhaitez acquérir dans la liste.

pos_condition = [(u'noun ', u'proprietary nom'), (u'verb ', u'independence')]

Effectuez un filtrage.

filtered_obj = mecab_wrapper.filter(
    parsed_sentence=tokenized_obj,
    pos_condition=pos_condition
)

La valeur de retour est cet objet de classe

Pourquoi avez-vous fait une telle chose?

Pour résumer brièvement

C'est une motivation.

Je suis un pré-traitement du traitement du langage naturel depuis longtemps ... Je suis un saint qui fait du prétraitement jour après jour, et parfois même du prétraitement des recherches d'autres personnes. .. .. ..

Cependant, à un moment donné, j'ai soudainement remarqué __ "La partie de la division morphologique n'écrit-elle pas le même processus à chaque fois?" __

Donc, tout en faisant la même chose encore et encore, je n'ai empaqueté que les processus que j'ai utilisés (et utiliserai probablement) le plus souvent.

Un paquet qui peut faire quelque chose de similaire en Python est natto.

Cependant, je ne me sentais pas pratique car je devais écrire le processus de filtrage en natto et je ne pouvais pas ajouter le dictionnaire, alors j'en ai créé un nouveau.

Que vous soyez un artisan du prétraitement ou un artisan du prétraitement actif! J'espère que vous pourrez réduire votre travail autant que possible et profiter de la PNL.

Recommended Posts

Création d'une bibliothèque pour python capable de gérer facilement la division morphologique
Création d'une bibliothèque Python DateTimeRange qui gère les plages horaires
À propos de psd-tools, une bibliothèque capable de traiter des fichiers psd en Python
Un outil pour saisir facilement du code Python
Essayez d'utiliser APSW, une bibliothèque Python que SQLite peut prendre au sérieux
Création de Simple SQLite, une bibliothèque Python qui simplifie la création de table SQLite / l'insertion de données
Création d'un wrapper Python pour l'API Qiita
Création d'un outil de gestion de bibliothèque d'en-tête uniquement pour C / C ++
Vous pouvez facilement créer une interface graphique même avec Python
Classe pour PYTHON qui peut être utilisée sans connaître LDAP
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
J'ai enregistré PyQCheck, une bibliothèque qui peut effectuer QuickCheck avec Python, dans PyPI.
Comment installer la bibliothèque Python qui peut être utilisée par les sociétés pharmaceutiques
J'ai créé une VM qui exécute OpenCV pour Python
D'un livre que les programmeurs peuvent apprendre ... (Python): Pointer
[Python] Une bibliothèque pratique qui convertit les kanji en hiragana
Publier / télécharger une bibliothèque créée en Python vers PyPI
Une bibliothèque "apywrapper" qui développe facilement un wrapper pour l'API RESTful
[Python] Création d'une application de transformation pour le champion du monde "Mr. Satan"
À partir d'un livre que les programmeurs peuvent apprendre ... (Python): À propos du tri
À partir d'un livre que les programmeurs peuvent apprendre (Python): Décoder les messages
Un exemple pour dessiner des points avec PIL (Python Imaging Library).
Bibliothèque pour spécifier un serveur de noms en python et dig
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
[Python] Créez un graphique qui peut être déplacé avec Plotly
J'ai créé une bibliothèque qui lit facilement les fichiers de configuration avec Python
[Python] J'ai créé ma propre bibliothèque qui peut être importée dynamiquement
J'ai fait un package qui peut comparer des analyseurs morphologiques avec Python
Made Gomi, un outil de corbeille pour RM en langue Go
Utilisez networkx, une bibliothèque qui gère les graphiques en python (Partie 2: Tutoriel)
J'ai créé une bibliothèque Python pour appeler l'API de LINE WORKS
Essayez d'utiliser virtualenv qui peut créer un environnement virtuel de Python
À partir d'un livre que le programmeur peut apprendre ... (Python): trouver la valeur la plus fréquente
À partir d'un livre que les programmeurs peuvent apprendre ... (Python): examen des tableaux
J'ai fait un shuffle qui peut être réinitialisé (inversé) avec Python
[python] J'ai créé un diagramme de corrélation de suivi pour Twitter (édition Gremlin)
Un script python qui supprime les fichiers ._DS_Store et ._ * créés sur Mac
[python] J'ai créé une classe qui peut écrire rapidement une arborescence de fichiers
J'ai créé une bibliothèque de wrapper Python pour l'API de reconnaissance d'images docomo.
À partir d'un livre que les programmeurs peuvent apprendre (Python): valeur de l'écart de traitement statistique
J'ai écrit un tri-arbre qui peut être utilisé pour l'implémentation de dictionnaire à grande vitesse en langage D et Python
Introduction de "scikit-mobility", une bibliothèque qui vous permet d'analyser facilement les données de flux humain avec Python (Partie 1)
Gérez facilement les listes avec python + sqlite3
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Création d'un outil de test AtCoder pour Python
Développez facilement les URL courtes pour Python
Générer un badge d'affichage du nombre de téléchargements de la bibliothèque Python
Une note sur mock (bibliothèque fictive Python)
[Python] Un programme qui trouve une paire qui peut être divisée par une valeur spécifiée
Présentation d'une bibliothèque qui n'était pas incluse dans pip sur Python / Windows
Création de la bibliothèque Go nzargv qui organise bien les arguments de ligne de commande
[Python] J'ai créé un bot Twitter qui génère des tweets semblables à des amis avec des règles de chaîne de Markov.
Comment créer un bot Janken qui peut être facilement déplacé (commentaire)
Créez une application Web qui peut être facilement visualisée avec Plotly Dash
Créez un Discord Bot qui peut rechercher et coller des images
Optimisation mathématique pour un travail gratuit avec Python + PuLP