Setzen Sie die MeCab-Bindung für Python unter Windows, Mac und Linux mit pip ein

Einführung

Chao ... †

Persönlich habe ich in diesen Tagen immer mehr Möglichkeiten, MeCab mit Python unter Windows zu verwenden. Um den Python-Wrapper von MeCab unter Windows einzuschließen, müssen Sie jedoch die Quelle herunterladen, setup.py neu schreiben und den Compiler installieren, was sehr problematisch ist.

Wir haben also etwas veröffentlicht, das es einfach macht, den Python-Wrapper von MeCab mit pip unter Windows, Mac und Ubuntu zu verwenden! https://pypi.org/project/mecab/

Was ist das?

Es handelt sich um einen MeCab-Wrapper, der verschiedene Betriebssysteme in einem Paket unterstützt, indem das Verhalten je nach Betriebssystem zum Zeitpunkt der Installation geändert wird. Im Fall von Windows wird beispielsweise der C ++ - Compiler von Microsoft Visual Studio verwendet, um Mecab-Python zu erstellen und in das Radformat zu bringen. Auf der anderen Seite wird bei Mac und Linux der C ++ - Code zum Binden kompiliert, sodass er nur installiert werden kann, wenn der Zielcomputer über einen C ++ - Compiler verfügt.

Derzeit werden Python 2.7, 3.6, 3.7, 3.8 unterstützt. Alle Versionen unterstützen sowohl 32-Bit als auch 64-Bit. Es wurde unter Windows 10, MacOS 10.14 und Ubuntu 18.04 getestet.

Es wird jedoch davon ausgegangen, dass in der 64-Bit-Version von Python für Windows die 64-Bit-Version von MeCab des folgenden Streu-Builds installiert ist. https://github.com/ikegami-yukino/mecab/releases

Da die Windows-Version von Cabocha nur in 32-Bit-Binärdateien verteilt ist, ** Wenn Sie sie in Kombination mit Cabocha unter Windows verwenden möchten, verwenden Sie bitte die 32-Bit-Version von Python. ** (Entschuldigung für die Kompliziertheit)

Vorteile von Mecab

Installation

$ pip install mecab

Oder

$ python -m pip install mecab

Sie können es mit setzen.

Wenn Sie altes Python 2.7 haben und kein Pip haben, laden Sie get-pip.py herunter und führen Sie es in Python aus, um pip zu erhalten.

Wenn Sie eine Fehlermeldung wie "MeCab_wrap.cxx: 178: 11: Schwerwiegender Fehler: Datei" Python.h "nicht gefunden" erhalten

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

Bitte versuche.

Wie benutzt man

Basic


>>> import MeCab
>>> t = MeCab.Tagger()
>>> sentence = "Taro gab dieses Buch einer Frau."
>>> print(t.parse(sentence))
Taro Substantiv,Proprietäre Nomenklatur,Name der Person,Name,*,*,Taro,Taro,Taro
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
Dieser Zusatz,*,*,*,*,*,Dies,Dies,Dies
Diese Nomenklatur,Allgemeines,*,*,*,*,Buch,Hong,Hong
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,Wo,Wo
Weibliche Nomenklatur,Allgemeines,*,*,*,*,Weiblich,Josei,Josei
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Verb übergeben,Unabhängigkeit,*,*,Godan / Sa Linie,Kontinuierlicher Typ,aushändigen,ich,ich
Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta
.. Symbol,Phrase,*,*,*,*,。,。,。
EOS
>>> n = t.parseToNode(sentence)
>>> while n:
>>>     print(n.surface, "\t", n.feature)
>>>     n = n.next
           BOS/EOS,*,*,*,*,*,*,*,*
Taro Substantiv,Proprietäre Nomenklatur,Name der Person,Name,*,*,Taro,Taro,Taro
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
Dieser Zusatz,*,*,*,*,*,Dies,Dies,Dies
Diese Nomenklatur,Allgemeines,*,*,*,*,Buch,Hong,Hong
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,Wo,Wo
Weibliche Nomenklatur,Allgemeines,*,*,*,*,Weiblich,Josei,Josei
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Verb übergeben,Unabhängigkeit,*,*,Godan / Sa Linie,Kontinuierlicher Typ,aushändigen,ich,ich
Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta
.. Symbol,Phrase,*,*,*,*,。,。,。
         BOS/EOS,*,*,*,*,*,*,*,*

Anwendung

Dies ist ein Beispiel für Code für das IPA-Wörterbuch und das mecab-ipadic-neologd-Wörterbuch.

Angeben eines Wörterbuchs

#Bei Verwendung eines Wörterbuchs wie NEologd"-d"Geben Sie das Verzeichnis des Wörterbuchs mit an
t = MeCab.Tagger("-d /path/to/dic/mecab-ipadic-neologd")

Teilen

t = MeCab.Tagger("-O wakati")
print(t.parse(sentence).rstrip())
#=>Taro gab dieses Buch einer Frau.

Getrennte Schrift entsprechend der richtigen Nomenklatur gemischt mit Leerzeichen halber Breite

NEologd wird als Wörterbuch empfohlen, da es eine reichhaltige richtige Nomenklatur enthält.

t = MeCab.Tagger("-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd -F%m\\t -E\\n")
print(t.parse("Ich möchte mit DIR EN GREY live gehen").rstrip().split("\t"))
#=>['DIR EN GREY', 'von', 'Leben', 'Gehen', 'Wollen']

Lesen Sie


#Um die Lesung zu bekommen"-O yomi"
t = MeCab.Tagger("-O yomi")
print(t.parse(sentence).rstrip())
#=>Taro Hakonohonwo Josei Niwatashita.

Lesen Sie Wort für Wort

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.', 'Dies', 'Hong', 'Wo', 'Josei', 'D.', 'ich', 'Ta', '。']

Extraktion von Inhaltswörtern und Funktionswörtern

CONTENT_WORD_POS = ("Substantiv", "Verb", "Adjektiv", "Adverb")
IGNORE = ("Suffix", "Nicht unabhängig", "Gleichbedeutend")


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)  #Inhaltswort
#=> [('Taro', 'Substantiv,固有Substantiv,Name der Person,Name,*,*,Taro,Taro,Taro'), ('Buch', 'Substantiv,Allgemeines,*,*,*,*,Buch,Hong,Hong'), ('Weiblich', 'Substantiv,Allgemeines,*,*,*,*,Weiblich,Josei,Josei'), ('Bestehen', 'Verb,Unabhängigkeit,*,*,Godan / Sa Linie,Kontinuierlicher Typ,aushändigen,ich,ich')]

print(function_words)  #Funktionswort
#=> [('Ist', 'Partikel,係Partikel,*,*,*,*,Ist,C.,Beeindruckend'), ('Dies', 'Coalm,*,*,*,*,*,Dies,Dies,Dies'), ('Zu', 'Partikel,格Partikel,Allgemeines,*,*,*,Zu,Wo,Wo'), ('Zu', 'Partikel,格Partikel,Allgemeines,*,*,*,Zu,D.,D.'), ('Ta', 'Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta'), ('。', 'Symbol,Phrase,*,*,*,*,。,。,。')]

Stellen Sie die ursprüngliche Form wieder her

t = MeCab.Tagger()
n = t.parseToNode("Ich habe ein sehr gutes Buch übergeben")
lemma = []
while n:
    if not n.feature.startswith("BOS/EOS,"):
        lemma.append(n.feature.split(",")[6])
    n = n.next
print(lemma)
#=> ['Beeindruckend', 'Gut', 'Buch', 'Zu', 'aushändigen', 'Ta']

In früheren Artikeln finden Sie Informationen zur eingeschränkten Analyse. https://qiita.com/yukinoi/items/4e7afb5e72b3a46da0f2

Eine große Anfrage

Wenn es Ihnen gefällt, geben Sie bitte einen Stern an das GitHub-Repository von mecab. Mit nur einem Klick ist meine Entwicklungsmotivation gestiegen.

Recommended Posts

Setzen Sie die MeCab-Bindung für Python unter Windows, Mac und Linux mit pip ein
Setzen Sie Cabocha 0.68 in Windows ein und versuchen Sie, die Abhängigkeit mit Python zu analysieren
(Windows) Ursachen und Problemumgehungen für UnicodeEncodeError in Python 3
Hinweise zur Installation von Python3 und zur Verwendung von pip unter Windows7
Installieren Sie OpenCV 4.0 und Python 3.7 unter Windows 10 mit Anaconda
Fügen Sie Python 2.7.x in pyenv unter Mac OSX 10.15.5 ein
Installieren Sie die ZIP-Version Python und Pip unter Windows 10
Grundeinstellungen für die Verwendung von Python3.8 und pip unter CentOS8
Installieren Sie Selenium auf Ihrem Mac und probieren Sie es mit Python aus
PIL in Python unter Windows8 (für Google App Engine)
Kompilieren und installieren Sie MySQL-Python für Python2.7 unter Amazon Linux
Installieren Sie procs, ein alternatives Tool für ps, unter Linux (auch unter Mac und Windows verfügbar).
Testen Sie Python mit Miniconda unter OS X und Linux mit travis-ci
Erstellen Sie Python3 für Windows 10 unter ARM mit Visual Studio 2019 (x86) unter Windows 10 unter ARM
Komfortables LaTeX mit Windows-Subsystem für Linux und VS-Code
Python 3.6 unter Windows ... und zu Xamarin.
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Setzen Sie MeCab in "Windows 10; Python3.5 (64bit)"
Installieren Sie Python unter Windows + pip + virtualenv
Verknüpfen Sie Modelica und Python unter Windows
Mecab / Cabocha / KNP unter Python + Windows
Rohr und Rad in Fenstern beherrschen
Erste Schritte mit Python 3.8 unter Windows
pykintone unter Windows Subsystem für Linux
Installieren Sie easy_install und pip unter Windows
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
Fehler und Lösung bei der Installation von Python3 mit Homebrew auf einem Mac (Catalina 10.15)
Einführung der Bindung von MeCab (Wafubu) und Python an Windows 7 64bit (18.08.2016)
Installieren Sie lp_solve unter Mac OSX und rufen Sie es mit Python auf.
Hinweise zur Verwendung von OpenCV mit Windows 10 Python 3.8.3.
[UE4] Erstellen Sie DedicatedServer unter Windows und Linux
Lösung für Pip-Installationsfehler [Python] [Mac]
Installieren Sie wsl2 und Master Linux unter Windows
Python-Installation und Paketverwaltung mit pip
Verwenden von Python und MeCab mit Azure Databricks
Ein Memo mit Python2.7 und Python3 in CentOS
Verfolgen Sie aktive Anwendungen auf einem Mac mit Python
[C] [Python] Lesen mit AquesTalk unter Linux
Hinweise zum Erstellen von Python und Pyenv auf dem Mac
Erstellen Sie eine Python-Umgebung mit Anaconda auf einem Mac
Tweet-Analyse mit Python, Mecab und CaboCha
Installieren Sie Python 3.8, Pip 3.8 auf EC2 (Amazon Linux 2)
Verwenden Sie Python und MeCab mit Azure-Funktionen
Ein Python-Skript für Mac, das unter Windows ohne verstümmelte Zeichen komprimiert wird
Senden und Empfangen von Binärdaten über serielle Kommunikation mit Python3 (auf Mac)
Erstellen Sie eine Python3-Umgebung mit pyenv auf einem Mac und zeigen Sie NetworkX-Diagramme an
Janken Poi mit Python Lassen Sie uns für Anfänger auf einem lokalen Windows-Server laufen
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
So starten Sie das Python-Projekt im Jahr 2020 (Windows WSL und Mac Common)
Setzen Sie MicroPython unter Windows ein, um ESP32 unter Python auszuführen
Kausales Denken und kausale Suche von Python (für Anfänger)
Python unter Windows
Zeichencode zum Lesen und Schreiben von CSV-Dateien mit Python ~ Windows-Umgebung ver ~
Bildverarbeitung mit Python Environment Setup für Windows
Python auf Mac