in my 雑記

プログラミング bump 日々のことなど

python3で文章を単語単位に分割する

f:id:inmyzakki:20170902164248p:plain

今回は文章を単語単位に分割する形態素解析をpython3で行います。
と言っても、超便利なライブラリがあるので、それを使うだけです。

準備

今回は「Janome」と言うライブラリを使用します。
他にも形態素解析のライブラリは多くあるみたいだけど(MeCab、Juman、Cabocha等)
一番手軽にできる 「Janome」を使います。

まずは、ライブラリを入れます

pip install janome

プログラム

wordに言葉を設定すれば、あとはjanomeが形態素解析をしてくれます。
恐ろしいくらい簡単に形態素解析ができます。

# -*- coding: utf-8 -*-
from janome.tokenizer import Tokenizer
import sys
import io

word = u'明日が僕らを呼んだって返事もろくにしなかった 「 イマ」という ほうき星 君と二人追いかけていた'

# デフォルト文字コードをutf8に変更
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

t = Tokenizer()
tokens = t.tokenize(word)

print('形態素解析文章:' + word)

for token in tokens:
    print('-----------------------------------------')
    print('表層形:' + token.surface)                 # 表層形
    print('品詞:' + token.part_of_speech.split(',')[0])   # 品詞
    print('品詞細分類1:' + token.part_of_speech.split(',')[1])   # 品詞細分類1
    print('品詞細分類2:' + token.part_of_speech.split(',')[2])   # 品詞細分類2
    print('品詞細分類3:' + token.part_of_speech.split(',')[3])   # 品詞細分類3
    print('活用型:' + token.infl_type)                      # 活用型
    print('活用形:' + token.infl_form)                      # 活用形
    print('原形:' + token.base_form)                      # 原形
    print('読み:' + token.reading)                        # 読み
    print('発音:' + token.phonetic)                       # 発音
    print('-----------------------------------------')

おわり

文章解析には必要な形態素解析を今回は行いました。
pythonは機械学習が盛んな言語なので、文章系の機械学習をしたいときはJanomeが便利でオススメです。