【文章の認識】MeCabの形態素解析で使うTagger、Nodeオブジェクトのプロパティとメソッド

▼この記事をSNSでシェアする▼

スポンサーリンク

スポンサーリンク

文章の単語分割を行い、Pythonで分析をするためにMeCabのライブラリを利用していて、ネットの情報があまり多くないなと感じたので今回備忘録として残しておきます。

いわゆる形態素解析ってやつです。

MeCabのオブジェクトについて

MeCabはPythonだけでなく、Java,C#などでも利用可能な言語解析ライブラリです。

以下の二つは文章の中の単語の分析をする上でキーとなるオブジェクトです。

Taggerオブジェクト

文章を単語に分割するのに便利なオブジェクトです。

MeCab.Tagger(“形式名”)

の形でコンストラクタを使い、分割に使用する辞書の形式を指定します。

  1. mecabrc:(引数なし)
  2. -Ochasen: (ChaSen 互換形式)
  3. -Owakati: (分かち書きのみを出力)
  4. -Oyomi: (読みのみを出力)

またmecab-ipadic-neologdという新しい単語に対応した辞書を別途ダウンロードし、設定をしておくと

  1. -d /var/lib/mecab/dic/mecab-ipadic-neologd:システム辞書に沿った出力
  2. -u /var/lib/mecab/dic/mecab-ipadic-neologd:ユーザー辞書に沿った出力

これらが可能になります。

下の記事の4番の項目でmecab-ipadic-NEologdのインストール方法を紹介しています。

Taggerのインスタンスのメソッドで

(Taggerインスタンス).parse(“文字列”)

と記述すると上でしてした形式に沿って、指定した文字列の単語の特徴リストを生成してくれます。

下記の情報が

品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音

こうした分割データの生成にはparseToNode(“文字列”)というメソッドがあり、こちらはNodeというオブジェクトを返してくれます。

(Taggerインスタンス).parseToNode(“文字列”)

Nodeオブジェクト

(Taggerインスタンス).parseToNode(“文字列”)

で返されるNodeというオブジェクトには、featureとsurfaceというプロパティがあります。

  • feature:単語の情報がカンマ区切りで、「品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用形,活用型,原形,読み,発音」という形で入っています。
  • surface:文字列データ(表層形)

Nodeには先頭から分割された単語ごとにfeatureとsurfaceのキーと値を持っています。

parseToNode(“文字列”)

を使うと、繰り返し表示される助詞や助動詞を除外したり、データを扱うのに便利です。

サンプルコードと実行結果

パターン1(MeCab標準辞書,parseメソッド)

パターン2(システム辞書,parseメソッド)

パターン1、2の実行結果

パターン3(システム辞書,parseToNodeメソッド)

パターン3の実行結果

パターン1と2と違い、助詞助動詞が除外され、単語が終始形(辞書の形)で出力されています。

スポンサーリンク

▼この記事をSNSでシェアする▼

フォローする

メニュー・主な記事カテゴリ

おすすめ特集!




「ゆとり鳥日記」について
ITを中心に関心の赴くままに好きなように書いていく雑記ブログ!管理人が二人います。
◆フクロウ(19卒就活生)
◆トンビ(社会人1年目SE)

詳しいプロフィール
お仕事の依頼・ご要望

ゆとり鳥日記をBTCで応援する