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/
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é)
setup.py
(la liaison Python officielle nécessite la réécriture de setup.py
pour prendre en charge Python 3)$ 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.
>>> 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,*,*,*,*,*,*,*,*
Voici un exemple de code pour le dictionnaire IPA et le dictionnaire mecab-ipadic-neologd.
#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")
t = MeCab.Tagger("-O wakati")
print(t.parse(sentence).rstrip())
#=>Taro a remis ce livre à une femme.
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']
#Pour obtenir la lecture"-O yomi"
t = MeCab.Tagger("-O yomi")
print(t.parse(sentence).rstrip())
#=>Taro Hakonohonwo Josei Niwatashita.
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', '。']
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,*,*,*,*,。,。,。')]
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
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