#前書き
Pythonでマルコフ連鎖人工無脳を実装しようと思いました。
さて、形態素解析はなにに投げますかなと調べたところ、
Janomeというのが他のライブラリとの依存関係もなく、
pip一発でさくっとインストールできるそうです。ためしちゃお!
#環境
Python 3.8.5
Janome 0.4.1
#使い方
from janome.tokenizer import Tokenizer
t = Tokenizer()
s = "草わかば色鉛筆の赤き粉の散るがいとしく寝てけずるなり"
for token in t.tokenize(s):
print(token)
Tokenizerクラスを使います。
t = Tokenizer()
Tokenizerインスタンスを作って、
for token in t.tokenize(s):
print(token)
解析したい文章をtokenizeメソッドに渡します。
上のように中身を一つ一つ表示させると、こんな感じです。
python analysis.py
草 名詞,一般,*,*,*,*,草,クサ,クサ
わかば 名詞,固有名詞,組織,*,*,*,わかば,ワカバ,ワカバ
色鉛筆 名詞,一般,*,*,*,*,色鉛筆,イロエンピツ,イロエンピツ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
赤き 形容詞,自立,*,*,形容詞・アウオ段,体言接続,赤い,アカキ,アカキ
粉 名詞,一般,*,*,*,*,粉,コナ,コナ
の 助詞,格助詞,一般,*,*,*,の,ノ,ノ
散る 動詞,自立,*,*,五段・ラ行,基本形,散る,チル,チル
が 助詞,接続助詞,*,*,*,*,が,ガ,ガ
いとしく 形容詞,自立,*,*,形容詞・イ段,連用テ接続,いとしい,イトシク,イトシク
寝 動詞,自立,*,*,一段,連用形,寝る,ネ,ネ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
けずる 動詞,自立,*,*,五段・ラ行,基本形,けずる,ケズル,ケズル
なり 助詞,接続助詞,*,*,*,*,なり,ナリ,ナリ
要素を一つ一つ取り出してやることもできます。
ためしに表層形と基本形、品詞を出力してみました。
from janome.tokenizer import Tokenizer
t = Tokenizer()
s = "寝てけずるなり"
for token in t.tokenize(s):
print("==========")
print(token.surface + " (表層形)")
print(token.base_form + " (基本形)")
print(token.part_of_speech + " (品詞)")
実行結果
python analysis.py
==========
寝 (表層形)
寝る (基本形)
動詞,自立,*,* (品詞)
==========
て (表層形)
て (基本形)
助詞,接続助詞,*,* (品詞)
==========
けずる (表層形)
けずる (基本形)
動詞,自立,*,* (品詞)
==========
なり (表層形)
なり (基本形)
助詞,接続助詞,*,* (品詞)
次章で文章生成を実装していきます。
Python + Janomeでマルコフ連鎖人工無脳(2)マルコフ連鎖入門