Mettre la liaison MeCab pour Python sur Windows, Mac et Linux avec pip

introduction

Chao ... †

Personnellement, j'ai de plus en plus d'opportunités d'utiliser MeCab avec Python sur Windows ces jours-ci. Cependant, pour inclure le wrapper Python de MeCab sur Windows, vous devez télécharger la source, réécrire setup.py et installer le compilateur, ce qui est très gênant.

Nous avons donc publié quelque chose qui facilite l'utilisation du wrapper Python de MeCab avec pip sur Windows, Mac et Ubuntu! https://pypi.org/project/mecab/

Qu'est-ce que c'est?

Il s'agit d'un wrapper MeCab qui prend en charge différents systèmes d'exploitation dans un seul package en modifiant le comportement en fonction du système d'exploitation au moment de l'installation. Par exemple, dans le cas de Windows, le compilateur C ++ de Microsoft Visual Studio est utilisé pour construire mecab-python et le mettre au format wheel. D'autre part, dans le cas de mac et Linux, le code C ++ pour la liaison est compilé, il ne peut donc pas être installé à moins que l'ordinateur cible ne dispose d'un compilateur C ++.

Il prend actuellement en charge Python 2.7, 3.6, 3.7, 3.8. Toutes les versions prennent en charge à la fois 32 bits et 64 bits. Il a été testé sur Windows 10, macOS 10.14 et Ubuntu 18.04.

Cependant, il est supposé que la version 64 bits de Python pour Windows a la version 64 bits de MeCab de la version parasite suivante installée. https://github.com/ikegami-yukino/mecab/releases

De plus, la version Windows de Cabocha n'est distribuée que dans des binaires 32 bits, donc si vous souhaitez l'utiliser en combinaison avec Cabocha sur ** Windows, veuillez utiliser la version 32 bits de Python. ** (Désolé d'être compliqué)

Avantages de mecab

Installation

$ pip install mecab

Ou

$ python -m pip install mecab

Vous pouvez le mettre avec.

Si vous avez l'ancien Python 2.7 et que vous n'avez pas de pip, téléchargez get-pip.py et exécutez-le en Python pour obtenir pip.

Si vous obtenez une erreur comme MeCab_wrap.cxx: 178: 11: erreur fatale: fichier 'Python.h' introuvable

$ CPLUS_INCLUDE_PATH=`python-config --prefix`/Headers:$CPLUS_INCLUDE_PATH pip install mecab

S'il vous plaît essayez.

Comment utiliser

De base


>>> import MeCab
>>> t = MeCab.Tagger()
>>> sentence = "Taro a donné ce livre à une femme."
>>> print(t.parse(sentence))
Taro substantif,Nomenclature propriétaire,Nom d'une personne,Nom,*,*,Taro,Taro,Taro
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
Cet accessoire,*,*,*,*,*,cette,cette,cette
Cette nomenclature,Général,*,*,*,*,Livre,Hong,Hong
Auxiliaire,Assistant de cas,Général,*,*,*,À,Wo,Wo
Nomenclature féminine,Général,*,*,*,*,Femme,Josei,Josei
Auxiliaire,Assistant de cas,Général,*,*,*,À,ré,ré
Verbe passant,Indépendance,*,*,Ligne Godan / Sa,Type continu,remettre,je,je
Verbe auxiliaire,*,*,*,Spécial,Forme basique,Ta,Ta,Ta
.. symbole,Phrase,*,*,*,*,。,。,。
EOS
>>> n = t.parseToNode(sentence)
>>> while n:
>>>     print(n.surface, "\t", n.feature)
>>>     n = n.next
           BOS/EOS,*,*,*,*,*,*,*,*
Taro substantif,Nomenclature propriétaire,Nom d'une personne,Nom,*,*,Taro,Taro,Taro
Est un assistant,Assistance,*,*,*,*,Est,C,sensationnel
Cet accessoire,*,*,*,*,*,cette,cette,cette
Cette nomenclature,Général,*,*,*,*,Livre,Hong,Hong
Auxiliaire,Assistant de cas,Général,*,*,*,À,Wo,Wo
Nomenclature féminine,Général,*,*,*,*,Femme,Josei,Josei
Auxiliaire,Assistant de cas,Général,*,*,*,À,ré,ré
Verbe passant,Indépendance,*,*,Ligne Godan / Sa,Type continu,remettre,je,je
Verbe auxiliaire,*,*,*,Spécial,Forme basique,Ta,Ta,Ta
.. symbole,Phrase,*,*,*,*,。,。,。
         BOS/EOS,*,*,*,*,*,*,*,*

application

Voici un exemple de code pour le dictionnaire IPA et le dictionnaire mecab-ipadic-neologd.

Spécifier un dictionnaire

#Lors de l'utilisation d'un dictionnaire tel que NEologd"-d"Spécifiez le répertoire du dictionnaire avec
t = MeCab.Tagger("-d /path/to/dic/mecab-ipadic-neologd")

Partage

t = MeCab.Tagger("-O wakati")
print(t.parse(sentence).rstrip())
#=>Taro a remis ce livre à une femme.

Écriture séparée correspondant à la nomenclature appropriée mélangée avec des espaces de demi-largeur

NEologd est recommandé comme dictionnaire car il possède une nomenclature appropriée abondante.

t = MeCab.Tagger("-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd -F%m\\t -E\\n")
print(t.parse("Je veux aller vivre avec DIR EN GREY").rstrip().split("\t"))
#=>['DIR EN GREY', 'de', 'vivre', 'Aller', 'Vouloir']

Obtenez la lecture


#Pour obtenir la lecture"-O yomi"
t = MeCab.Tagger("-O yomi")
print(t.parse(sentence).rstrip())
#=>Taro Hakonohonwo Josei Niwatashita.

Obtenez une lecture mot par mot

t = MeCab.Tagger("-F%f[7]\\t -E\\n -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd")
print(t.parse(sentence).rstrip().split("\t"))
#=>['Taro', 'C', 'cette', 'Hong', 'Wo', 'Josei', 'ré', 'je', 'Ta', '。']

Extraction de mots contenus et de mots fonctionnels

CONTENT_WORD_POS = ("nom", "verbe", "adjectif", "adverbe")
IGNORE = ("suffixe", "Non indépendant", "Synonyme")


def is_content_word(feature):
    return feature.startswith(CONTENT_WORD_POS) and all(f not in IGNORE for f in feature.split(",")[:6])

t = MeCab.Tagger()
n = t.parseToNode(sentence)
content_words = []
function_words = []
while n:
    if is_content_word(n.feature):
        content_words.append((n.surface, n.feature))
    elif not n.feature.startswith("BOS/EOS,"):
        function_words.append((n.surface, n.feature))
    n = n.next

print(content_words)  #Mot de contenu
#=> [('Taro', 'nom,固有nom,Nom d'une personne,Nom,*,*,Taro,Taro,Taro'), ('Livre', 'nom,Général,*,*,*,*,Livre,Hong,Hong'), ('Femme', 'nom,Général,*,*,*,*,Femme,Josei,Josei'), ('Passer', 'verbe,Indépendance,*,*,Ligne Godan / Sa,Type continu,remettre,je,je')]

print(function_words)  #Mot fonctionnel
#=> [('Est', 'Particule,係Particule,*,*,*,*,Est,C,sensationnel'), ('cette', 'Coalm,*,*,*,*,*,cette,cette,cette'), ('À', 'Particule,格Particule,Général,*,*,*,À,Wo,Wo'), ('À', 'Particule,格Particule,Général,*,*,*,À,ré,ré'), ('Ta', 'Verbe auxiliaire,*,*,*,Spécial,Forme basique,Ta,Ta,Ta'), ('。', 'symbole,Phrase,*,*,*,*,。,。,。')]

Restaurer sa forme d'origine

t = MeCab.Tagger()
n = t.parseToNode("J'ai remis un très bon livre")
lemma = []
while n:
    if not n.feature.startswith("BOS/EOS,"):
        lemma.append(n.feature.split(",")[6])
    n = n.next
print(lemma)
#=> ['sensationnel', 'Bien', 'Livre', 'À', 'remettre', 'Ta']

Consultez les articles précédents pour une analyse contrainte. https://qiita.com/yukinoi/items/4e7afb5e72b3a46da0f2

Une grosse demande

Si vous l'aimez, veuillez donner une étoile au référentiel GitHub de mecab. En un seul clic, ma motivation de développement est en place.

Recommended Posts

Mettre la liaison MeCab pour Python sur Windows, Mac et Linux avec pip
Mettez Cabocha 0.68 dans Windows et essayez d'analyser la dépendance avec Python
(Windows) Causes et solutions de contournement pour UnicodeEncodeError dans Python 3
Remarques sur l'installation de Python3 et l'utilisation de pip sous Windows7
Installez OpenCV 4.0 et Python 3.7 sur Windows 10 avec Anaconda
Mettez Python 2.7.x dans pyenv sur Mac OSX 10.15.5
Installez la version ZIP Python et pip sur Windows 10
Paramètres initiaux pour l'utilisation de Python3.8 et pip sur CentOS8
Installez le sélénium sur votre Mac et essayez-le avec python
PIL en Python sur Windows8 (pour Google App Engine)
Compilez et installez MySQL-python pour python2.7 sur Amazon Linux
Installez procs, un outil alternatif pour ps, sur Linux (également disponible sur Mac et Windows)
Tester Python avec Miniconda dans un environnement OS X et Linux avec travis-ci
Créer Python3 pour Windows 10 sur ARM avec Visual Studio 2019 (x86) sur Windows 10 sur ARM
LaTeX confortable avec sous-système Windows pour Linux et VS Code
Python 3.6 sous Windows ... et vers Xamarin.
Installez Python 2.7.9 et Python 3.4.x avec pip.
Mettez MeCab dans "Windows 10; Python3.5 (64 bits)"
Installez Python sur Windows + pip + virtualenv
Lier Modelica et Python sous Windows
Mecab / Cabocha / KNP sur Python + Windows
Maîtriser le pip et la roue dans Windows
Premiers pas avec Python 3.8 sous Windows
pykintone sur le sous-système Windows pour Linux
Installez easy_install et pip sur Windows
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Erreur et solution lors de l'installation de python3 avec homebrew sur mac (catalina 10.15)
Introduction de la liaison de MeCab (Wafubu) et Python à Windows 7 64 bits (2016/08/18)
Installez lp_solve sur Mac OSX et appelez-le avec python.
Remarques sur l'utilisation d'OpenCV avec Windows10 Python 3.8.3.
[UE4] Construire DedicatedServer sous Windows et Linux
Solution pour l'erreur d'installation de pip [Python] [Mac]
Installez wsl2 et master linux sous Windows
Installation de Python et gestion des packages avec pip
Utilisation de Python et MeCab avec Azure Databricks
Un mémo contenant Python2.7 et Python3 dans CentOS
Chase des applications actives sur Mac avec Python
[C] [python] Lire avec AquesTalk sous Linux
Si scipy est python 2.7.8, l'installation de pip trébuche
Remarques sur la construction de Python et pyenv sur Mac
Créer un environnement Python avec Anaconda sur Mac
Analyse des tweets avec Python, Mecab et CaboCha
Installez Python 3.8, Pip 3.8 sur EC2 (Amazon Linux 2)
Utiliser Python et MeCab avec Azure Functions
Un script python pour Mac qui zippe sans caractères déformés sous Windows
Envoyer et recevoir des données binaires via une communication série avec python3 (sur Mac)
Créez un environnement Python 3 avec pyenv sur Mac et affichez des graphiques Network X
Janken Poi avec Python Exécutons sur un serveur local Windows pour les débutants
Mettez Docker dans Windows Home et exécutez un serveur Web simple avec Python
Comment démarrer le projet Python en 2020 (Windows WSL et Mac commun)
Mettez MicroPython sur Windows pour exécuter ESP32 sur Python
Raisonnement causal et recherche causale par Python (pour les débutants)
Python sur Windows
Code de caractères pour la lecture et l'écriture de fichiers csv avec python
Traitement d'image avec la configuration de l'environnement Python pour Windows
python sur mac