Mecabは、比較的簡単に使えるソフトウェアです。
Mecabは、ツールとして単体でも利用できます。
また、プログラムからもMecabを呼び出すことが可能です。
そのため、Mecabは多くの場所で利用されています。
そして、そのMecabの利用方法も多くサイトで紹介されています。
しかし、それらサイトをよくよく見ていくと浅いのですよね。
何が浅いかというと、Mecabの使い方がです。
それは、私のサイトを含めてです。
私自身もMecabに関しては、何個か記事を書いています。
でも、やっぱり使い方が浅いのです。
まあ、その浅い使い方でも十分にやりたいことはできています。
それは、Mecabがスゴイということの証明なのですけど。
そこで、今回はもっとMecabの使い方を知ろうと考えました。
そのことで、さらにMecabの便利な使い方を知ることができるかもしれません。
その手始めに、「Tagger」について調べました。
本記事の内容
- MecabをPythonで使う環境を整える
- Taggerクラスとは?
それでは、上記に沿って解説していきます。
MecabをPythonで使う環境を整える
Mecabは、基本的にはどんなOSでも動きます。
Mecabのインストールに関しては、本ブログでもまとめています。
Windowsの場合は、次の記事となります。
Linux(Ubuntu)の場合は、次の記事です。
Windowsの場合は、若干面倒です。
WindowsへのMecabのインストール自体は、簡単です。
しかし、辞書を作成するのが面倒なことになります。
もともとMecabは、Linux系のOSで動くことが前提なのでしょう。
そのことが、Windowsにおける辞書作成の手間に影響しています。
では、以降からTaggerについて見ていきます。
Taggerクラスとは?
PythonにおけるMecab利用の際、よく見るコードです。
import MeCab mecab = MeCab.Tagger()
まず、このTaggerがクラスということを理解しましょう。
また、Taggerの意味はタグです。
「タグ付けする」という意味になるのでしょうか。
Mecab本体にタグ付け(関連付け)すると言えば、納得ですね。
Mecabの公式には、Taggerに関して次のように記載されています。
Mecabの引数は、以下です。
$ mecab -h MeCab: Yet Another Part-of-Speech and Morphological Analyzer Copyright(C) 2001-2012 Taku Kudo Copyright(C) 2004-2008 Nippon Telegraph and Telephone Corporation Usage: mecab [options] files -r, --rcfile=FILE use FILE as resource file -d, --dicdir=DIR set DIR as a system dicdir -u, --userdic=FILE use FILE as a user dictionary -l, --lattice-level=INT lattice information level (DEPRECATED) -D, --dictionary-info show dictionary information and exit -O, --output-format-type=TYPE set output format type (wakati,none,...) -a, --all-morphs output all morphs(default false) -N, --nbest=INT output N best results (default 1) -p, --partial partial parsing mode (default false) -m, --marginal output marginal probability (default false) -M, --max-grouping-size=INT maximum grouping size for unknown words (default 24) -F, --node-format=STR use STR as the user-defined node format -U, --unk-format=STR use STR as the user-defined unknown node format -B, --bos-format=STR use STR as the user-defined beginning-of-sentence format -E, --eos-format=STR use STR as the user-defined end-of-sentence format -S, --eon-format=STR use STR as the user-defined end-of-NBest format -x, --unk-feature=STR use STR as the feature for unknown word -b, --input-buffer-size=INT set input buffer size (default 8192) -P, --dump-config dump MeCab parameters -C, --allocate-sentence allocate new memory for input sentence -t, --theta=FLOAT set temparature parameter theta (default 0.75) -c, --cost-factor=INT set cost factor (default 700) -o, --output=FILE set the output file name -v, --version show the version and exit. -h, --help show this help and exit.
この中で「mecab の実行形式に与えるパラメータ」とは、どれのことなのでしょうか?
私がTaggerクラスの引数として使ったことがあるのは、「-d」と「-u」ぐらいです。
以下は、引数「-d」利用時のPythonコードです。
import MeCab mecab = MeCab.Tagger('-d C:\soft\MeCab\dic\ipadic-neologd')
あと、「-Ochasen」という引数をMecabで調べている最中に見ますね。
以上より、「set」や「use」と引数の説明に書かれているモノが、「mecab の実行形式に与えるパラメータ」になる可能性が高いです。
ここでTaggerクラスのコードを確認しましょう。
class Tagger(object): thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") __repr__ = _swig_repr def parse(self, *args): return _MeCab.Tagger_parse(self, *args) def parseToNode(self, str): return _MeCab.Tagger_parseToNode(self, str) def parseNBest(self, N, str): return _MeCab.Tagger_parseNBest(self, N, str) def parseNBestInit(self, str): return _MeCab.Tagger_parseNBestInit(self, str) def nextNode(self): return _MeCab.Tagger_nextNode(self) def next(self): return _MeCab.Tagger_next(self) def formatNode(self, node): return _MeCab.Tagger_formatNode(self, node) def set_request_type(self, request_type): return _MeCab.Tagger_set_request_type(self, request_type) def request_type(self): return _MeCab.Tagger_request_type(self) def partial(self): return _MeCab.Tagger_partial(self) def set_partial(self, partial): return _MeCab.Tagger_set_partial(self, partial) def lattice_level(self): return _MeCab.Tagger_lattice_level(self) def set_lattice_level(self, level): return _MeCab.Tagger_set_lattice_level(self, level) def all_morphs(self): return _MeCab.Tagger_all_morphs(self) def set_all_morphs(self, all_morphs): return _MeCab.Tagger_set_all_morphs(self, all_morphs) def set_theta(self, theta): return _MeCab.Tagger_set_theta(self, theta) def theta(self): return _MeCab.Tagger_theta(self) def dictionary_info(self): return _MeCab.Tagger_dictionary_info(self) def what(self): return _MeCab.Tagger_what(self) __swig_destroy__ = _MeCab.delete_Tagger @staticmethod def version(): return _MeCab.Tagger_version() def __init__(self, *args): _MeCab.Tagger_swiginit(self, _MeCab.new_Tagger(*args)) def parseToString(self, str, length=0): return _MeCab.Tagger_parseToString(self, str, length)
mecabの引数説明に「show」とあるモノは、関数が用意されているようです。
例えば、dictionary_info関数やversion関数ですね。
私の調べた限り、Taggerの引数に渡せるモノ(-dとか-O)を明確に記載している情報はありませんでした。
でも、Taggerクラスのコードからある程度は推測できますね。
乗りかかった船なので、一つずつ検証していきます。
しかし、今回はこれまで。
別途、時間のあるときにやってみようと思います。