かんちゃんの備忘録スマートフォン用の表示で見るかんちゃんの備忘録プログラミングや言語処理、ゲームなど知的好奇心のための備忘録(個人の感想)です。いつもお世話になっているMeCabについての備忘録です。Pythonやシェルでの取り扱いまで、使い方をまとめます。マニュアル読めば分かるよ!というかたは公式マニュアルが充実しているのでそちらを読むのがいいかと思います。辞書整備PythonバインディングおわりにMeCabとはMeCab(和布蕪)とは2006年から開発されているオープンソースの形態素解析器です。動作が非常に高速で、辞書の配布や辞書の作成ができるため広く利用されています。テキスト変換器として設計されているため、例えばひらがなからカタカナへの変換器のように、形態素解析以外の用途でも利用できます。オープンソースの形態素解析器を利用の観点からおおざっぱに比較します。×ざっくりと自分なりの選定基準を書きます。ような辞書を選ぶことが重要になってきます。とコンパイル済みの辞書が導入されるはずです。GCPのプリセットで選べるUbuntuのようにミニマムな構成だと、ビルドツールが入っていませんので、次のコマンドでインストールしておきます。makeまずは作業用ディレクトリを作成し、そこにダウンロードします。mecab-ipadic.tar.gzMeCabのビルドとインストールを行います。ldconfig辞書をインストールします。レポジトリには、mecabと辞書が登録されています。コマンドで簡単に導入できます。名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキEOSDocker後にPythonバインディングを利用するので、PythonのコンテナをベースにしてソースからMeCabを導入します。installビルドしてコンテナを実行します。標準入力されたテキストを解析します。コマンドにより入力する方法と、パイプにより標準入力する方法があります。名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキEOS標準入力での解析は、先ほどから実は使っています。名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキEOSファイルを引数で与えて解析もできますが、標準入力のほうが連携しやすいため、使ったことがありません。オプションで選べます。分かち書きフォーマットは標準であるため、使ってみます。自分でフォーマットを定義することができます。dicrcもしくは、オプションで与えることができます。オプションが手軽ですのでそちらを紹介します。次のKWICしやすいフォーマットがおすすめです。辞書MeCabで使える辞書でメジャーなものを簡単に紹介します。学習済みモデルの分割単位であることが多いJuman辞書Jumanの辞書。語彙素など情報が豊富mecab-ipadic-neologdIPA辞書をベースにしたもので、固有表現や新語を取り込み続けている辞書整備MeCabはシステム辞書とユーザ辞書を持っています。システム辞書のビルドには数十秒要しますが、内部実装の都合だとは思いますが解析速度が落ちません。ユーザ辞書は量によりますがビルドが直ぐにおわります。公式マニュアルに詳しく掲載されています。何か単語に対してタグを付与したい場合には、辞書に項目を増やすことができます。辞書のフォーマットは次のようになっています。うれしい,43,43,6762,形容詞,自立,*,*,形容詞・イ段,基本形,うれしい,ウレシイ,ウレシイこれに対して、例えば極性をあらかじめ辞書に組み込むとしましょう。次のように、一列追加することで解析結果に紐付けることができます。うれしい,43,43,6762,形容詞,自立,*,*,形容詞・イ段,基本形,うれしい,ウレシイ,ウレシイ,ポジ解析はあらかじめ学習されたスコアにより導出されているため、それに紐付く情報はいくら付与しても影響しないということです。新語を追加する場合のコストの話もあります。経験則で申し訳ないですが、例えば人名を追加する場合は、辞書に既に含まれている人名のコストを取得し、その平均を安直に付与します。他には文字数でコストを調整します。形態素解析器は、コストが最も小さくなるような系列を出力します。経験的に長い文字列の一致は固有表現であることが多いため、文字列が長いほどコストを低くすることで、正しい出力を得やすいです。短い文字列は、同じ表層形でそもそもの辞書に普通名詞として存在している場合が多いため、追加してもあまり意味がないかもしれません。コストについては、次のサイトが参考になるかと思います。モジュールを用います。mecab-python3==0.7使い方ですが、よくこのように使っています。node.nextイテレータが扱いづらければ、トークンのリストを返してもいいと思います。利用できるようにラッパーを書くのも、扱いやすくする一つのコツかと思います。github.comおわりに雑多になりましたが、MeCabを使っていてよく利用する機能についてまとめました。(途中ちょっと疲れて説明が雑になっている部分もあります。)本当に神様のようなツールだと思います。検索プロフィールid:kanjirz50プログラミングや言語処理、ガジェットなど個人の備忘録です。(1)はてなブログをはじめよう!kanjirz50さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。