This is a Python wrapper for the MeCab morphological analyzer for Japanese text. It works with Python 3.6 and greater; if you need to use Python 2.7, use v1.0.2.
Note: If using MacOS Big Sur, you'll need to upgrade pip to version 20.3 or higher to use wheels due to a pip issue.
Note that Windows wheels require a Microsoft Visual C++ Redistributable, so be sure to install that.
>>> import MeCab >>> wakati = MeCab.Tagger("-Owakati") >>> wakati.parse("pythonが大好きです").split() ['python', 'が', '大好き', 'です'] >>> tagger = MeCab.Tagger() >>> print(tagger.parse("pythonが大好きです")) python python python python 名詞-普通名詞-一般 が ガ ガ が 助詞-格助詞 大好き ダイスキ ダイスキ 大好き 形状詞-一般 です デス デス です 助動詞 助動詞-デス 終止形-一般 EOS
The API for
mecab-python3 closely follows the API for MeCab itself,
even when this makes it not very “Pythonic.” Please consult the official MeCab
documentation for more information.
Binary wheels are available for MacOS X, Linux, and Windows (64bit) are
installed by default when you use
pip install mecab-python3
These wheels include an internal (statically linked) copy of the MeCab library,
but not dictionary. In order to use MeCab you'll need to install a dictionary.
unidic-lite is a good one to start with:
pip install unidic-lite
To build from source using pip,
pip install --no-binary :all: mecab-python3
There are many different dictionaries available for MeCab. These UniDic packages, which include slight modifications for ease of use, are recommended:
- unidic: The full UniDic 2.3.0.
- unidic-lite: The older, much smaller, but not much less useful 2.1.2.
The dictionaries below are not recommended due to being unmaintained for many years, but they are available for use with legacy applications.
For more details on the differences between dictionaries see here.
If you get a
RuntimeError when you try to run MeCab, here are some things to check:
You have to install this to use this package on Windows.
Installing a Dictionary
pip install unidic-lite and confirm that works. If that fixes your
problem, you either don't have a dictionary installed, or you need to specify
your dictionary path like this:
tagger = MeCab.Tagger('-r /dev/null -d /usr/local/lib/mecab/dic/mydic')
Note: on Windows, use
nul instead of
/dev/null. Alternately, if you have a
mecabrc you can use the path after
Specifying a mecabrc
If you get this error:
error message: [ifs] no such file or directory: /usr/local/etc/mecabrc
You need to specify a
mecabrc file. It's OK to specify an empty file, it just
has to exist. You can specify a
-r. This may be necessary on
Debian or Ubuntu, where the
mecabrc is in
You can specify an empty
mecabrc like this:
tagger = MeCab.Tagger('-r/dev/null -d/home/hoge/mydic')
Using Unsupported Output Modes like
Chasen output is not a built-in feature of MeCab, you must specify it in your
mecabrc. Notably, Unidic does not include Chasen output format.
Please see the MeCab documentation.
- fugashi is a Cython wrapper for MeCab with a Pythonic interface, by the current maintainer of this library
- SudachiPy is a modern tokenizer with a maintained dictionary, though it's slower than MeCab
- KoNLPy is a library for Korean NLP that includes a MeCab wrapper
Like MeCab itself,
mecab-python3 is copyrighted free software by
Taku Kudo firstname.lastname@example.org and Nippon Telegraph and Telephone Corporation,
and is distributed under a 3-clause BSD license (see the file
Alternatively, it may be redistributed under the terms of the
GNU General Public License, version 2 (see the file
GPL) or the
GNU Lesser General Public License, version 2.1 (see the file