Utiliser l'analyse contrainte MeCab (analyse partielle) en Python via natto-py

Analyse des contraintes (analyse partielle)

La fonction d'analyse contrainte (analyse partielle) de MeCab est une fonction utilisée lorsque certaines informations morphologiques d'une phrase sont connues ou que la limite est connue. La liaison Python et MeCab natto-py fournit trois méthodes d'analyse contraintes.

  1. Option --partial / -p
  2. Spécification d'une contrainte de limite
  3. Spécification des contraintes d'objet

Analyse partielle avec l'option --partial

Spécifiez l'option --partial ou -p lors de la récupération d'une instance MeCab. L'instruction d'entrée passée à parse décrit la contrainte dans le format suivant.

from natto import MeCab

text = """jardin\t Hoge
À
Haniwa\t Hoge
Niwatori\t Hoge
Il y a.
"""

with MeCab("--partial") as nm:
    print(nm.parse(text))
 
Niwahoge
Auxiliaire,Assistant de cas,Général,*,*,*,À,ré,ré
Haniwa Hoge
Niwatori Hoge
Est un assistant,Assistant de cas,Général,*,*,*,Mais,Géorgie,Géorgie
Le verbe qui est,Indépendance,*,*,Un pas,Forme basique,Est,Il,Il
.. symbole,Phrase,*,*,*,*,。,。,。
EOS
    

L'exemple ci-dessus envoie le résultat de l'analyse à la sortie standard, mais pour des contraintes plus fines, utilisez les fonctions de frontière ou d'entité.

Contraintes aux limites

Si vous connaissez à l'avance les limites des mots, vous pouvez utiliser l'argument de mot clé boundary_constraints pour spécifier une expression régulière ou une chaîne dont les limites ont été compilées. Ceux qui correspondent à la limite d'élément morphologique spécifiée seront traités comme un élément morphologique et analysés.

text = "Il y a un écureuil dans l'écureuil."

patt = "Niwatori|Haniwa|jardin"

with MeCab() as nm:
    #Obtenez des informations pour chaque MeCabNode en spécifiant une contrainte de limite morphologique
    for n in nm.parse(text, boundary_constraints=patt, as_nodes=True):
        if not (n.is_bos() or n.is_eos()):
            print("{}:\t{}". format(n.surface, n.feature))

# BOS/Omettre le nœud EOS
jardin:nom,Général,*,*,*,*,*
À:Particule,Assistant de cas,Général,*,*,*,À,ré,ré
Haniwa:nom,Général,*,*,*,*,Haniwa,Haniwa,Haniwa
Niwatori:nom,Général,*,*,*,*,Niwatori,poulet,poulet
Mais:Particule,Assistant de cas,Général,*,*,*,Mais,Géorgie,Géorgie
Est:verbe,Indépendance,*,*,Un pas,Forme basique,Est,Il,Il
。:symbole,Phrase,*,*,*,*,。,。,。  

Pour plus de détails, voir 6.2. Re - Opération des expressions régulières et re.finditer /re.html#re.finditer).

Contraintes de fonctionnalité

L'argument de mot clé feature_constraints vous permet de spécifier une classification de mot partiel pour chaque élément de formulaire particulier. Tuple (tuple) qui a des mots de partie pour les éléments morphologiques en tant que paire, et ces éléments morphologiques et les mappages de mots de partie sont en outre stockés dans le taple. Puis transmettez-le à la méthode parse comme suit:

feat = (("Niwatori","Hoge"), ("Haniwa","HogeHoge"), ("jardin","更にHoge"))

with MeCab() as nm:
    #Obtenez des informations pour chaque MeCabNode en spécifiant des contraintes de mot partiel pour certains éléments de formulaire
    for n in nm.parse(text, feature_constraints=feat, as_nodes=True):
        if not (n.is_bos() or n.is_eos()):
            print("{}:\t{}". format(n.surface, n.feature))

# BOS/Omettre le nœud EOS
jardin:Plus de relâchement
À:Particule,Assistant de cas,Général,*,*,*,À,ré,ré
Haniwa:Hogehoge
Niwatori:Hoge
Mais:Particule,Assistant de cas,Général,*,*,*,Mais,Géorgie,Géorgie
Est:verbe,Indépendance,*,*,Un pas,Forme basique,Est,Il,Il
。:symbole,Phrase,*,*,*,*,。,。,。

c'est tout

référence

Recommended Posts

Utiliser l'analyse contrainte MeCab (analyse partielle) en Python via natto-py
Utilisez config.ini avec Python
Utiliser Valgrind avec Python
Utiliser mecab avec Python 3
Utiliser le profileur en Python
Voyons comment utiliser def en python
Utiliser l'expression let en Python
Utiliser le protocole de mesure avec Python
Utiliser la fonction de rappel en Python
Utiliser le magasin de paramètres en Python
Utiliser le cache HTTP en Python
Utilisez l'ODM de MongoDB avec Python
Utiliser un dict clé de liste en Python
Utiliser Random Forest avec Python
Utilisez Spyder de Python IDE
Utiliser la liaison MeCab de Python natto-py
Mettez MeCab dans "Windows 10; Python3.5 (64 bits)"
Analyse CSS avec cssutils en Python
Comment utiliser SQLite en Python
Windows10: Installation de la bibliothèque MeCab pour python
Utiliser rospy avec virtualenv dans Python3
Analyser le journal des validations de Subversion en Python
Comment utiliser Mysql avec python
Utiliser Python mis en pyenv avec NeoVim
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Analyser le journal de validation Git en Python
Utiliser OpenCV avec Python 3 dans Window
Un mémorandum parce que j'ai trébuché en essayant d'utiliser MeCab avec Python
[Introduction à Python] Comment utiliser la classe en Python?
Utiliser l'impression dans l'expression lambda Python2
Python3> dans le mot clé> Vrai avec une correspondance partielle?
Utilisez facilement vos propres fonctions en Python
Un moyen simple d'utiliser Wikipedia avec Python
N'utilisez pas \ d dans les expressions régulières Python 3!
Comment utiliser __slots__ dans la classe Python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
Comment utiliser les expressions régulières en Python
Comment utiliser is et == en Python
Utiliser Python et MeCab avec Azure Functions
Comment utiliser la bibliothèque C en Python
Comment utiliser la bibliothèque d'images Python dans la série python3
3 étapes pour mettre Python + mecab dans yum uniquement
Résumé de l'utilisation de MNIST avec Python
Utilisez un module de cryptographie qui gère OpenSSL en Python
Utilisez Python dans votre environnement depuis Win Automation
Utilisez diverses fonctionnalités de rabbimq avec python pika
Bibliothèque d'analyse de phrases / syntaxe Python (première enquête 2014.11, ajout partiel 2019.10)
N'utilisez pas readlines () dans votre instruction Python for!
Comment utiliser tkinter avec python dans pyenv
Utiliser jupyter-lab installé dans l'environnement virtuel python (venv)
Utiliser Python dans un environnement Anaconda avec VS Code
Utilisez une page d'erreur personnalisée avec python / tornado
Utiliser python dans le conteneur Docker comme interpréteur Pycharm
[Question] Que se passe-t-il si vous utilisez% en python?
Utilisez l'application LibreOffice en Python (3) Ajouter une bibliothèque
Utilisez pydantic lors de la lecture des variables d'environnement en Python
Comment tracer l'autocorrélation et l'autocorrélation partielle avec Python
Utilisez Search Tweets: Archive complète / Sandbox en Python
Utilisez os.getenv pour obtenir des variables d'environnement en Python