形態素解析:わかち書き

日本語処理のためには、文章を単語に分解する必要があります。単語に分解することをわかち書きといいます。

本パートでは、janomeという形態素(けいたいそ)解析のライブラリーを使います。

※「通常の文章を形態素に分解して品詞等を判別すること」を形態素解析といいます。形態素とは「言葉として意味のある最小の単位」です。

写経して文章をわかち書きしてみましょう。わかち書きにはjanome.tokenizerのTokenizerを使います

from janome.tokenizer import Tokenizer
text = 'オリンピックを日本でします'
tokenizer = Tokenizer()
tokens = tokenizer.tokenize(text)
for token in tokens:
    print(token)
オリンピック	名詞,一般,*,*,*,*,オリンピック,オリンピック,オリンピック
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
日本	名詞,固有名詞,地域,国,*,*,日本,ニッポン,ニッポン
で	助詞,格助詞,一般,*,*,*,で,デ,デ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
ます	助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス

janomeのTokenizerを使ってわかち書きしましょう。

  • tokenizer = Tokenizer() で、Tokenizerを作成します。
  • tokenizer.tokenize(文章)で、Tokenのリストを取得します。

TokenをprintするとTokenのメンバーが出力されます。

名前説明「し(ます)」の例
surface表層形
base_form基本形する
part_of_speech品詞動詞,自立,*,*
reading読み

「し(ます)」の「し」で確認しましょう。

  • 表層形は、表示通りの表現です。
  • 基本形は、未活用時の表現です。「する・ます」が「し・ます」に活用したので、基本形は「する」です。
  • 品詞は、「品詞、品詞細分類1、品詞細分類2、品詞細分類3」になります。未定義は「*」です。
  • 読みは、カタカナで示されます。

形態素解析(品詞などの取得)が不要で、単にわかち書きしたいのであれば、以下のようにできます。

tokenizer = Tokenizer(wakati=True)

形態素解析のライブラリーでは MeCabもよく使われています。

janomeはpip install janomeだけでインストールでき、MeCabよりインストールが簡単という特徴があります。
しかし、実行速度はMeCabの方が早いので、大量データを処理するときはMeCabなどの方が良いでしょう。

janomeには、Analyzerという分析用のクラスもあります。Analyzerは、形態素解析の前処理・後処理をテンプレ化するためのフレームワークです。品詞によるフィルタリングなどができます。

from janome.tokenizer import Tokenizer
text = 'オリンピックを日本でします'
tokenizer = Tokenizer(wakati=True)
result = list(tokenizer.tokenize(text))
result
['オリンピック', 'を', '日本', 'で', 'し', 'ます']

以下のコードでもOK

tokenizer = Tokenizer()
tokens = tokenizer.tokenize(text)
result = [token.surface for token in tokens]

コメント

タイトルとURLをコピーしました