理系のブログ

京大生がJARVISを作るまでの話(4)「janome-takenizerで品詞分解」

理系のブログ
理系さん
理系さん

前回はspeakerモジュールを使って喋れるようにしました。

しかし喋る内容がオウム返しのままでは面白くないので、オウム返し以外の返答をさせます。

今回はその前段階として、今回は「品詞分解」をさせてみます。

janome-takenizer

品詞分解をさせるのは超簡単。

janome-takenizerを使います。

janome-takenizerは文章を単語ごとに区切り、品詞も特定してくれる優れもの。

まずは毎度のごとくコマンドプロンプトでpipにてjanome-takenizerをインストール。

pip install janome

インストールできたら早速プログラムを組んでいきます。

analyzer.py

品詞分解をするモジュールとして、analyzer.pyというファイルを新たに作成します。

import re
from janome.tokenizer import Tokenizer


def parse(text):
    t = Tokenizer()
    tokens = t.tokenize(text)
    result = []
    for token in tokens:
        result.append(token.surface)
    return (result)

文章を単語ごとに区切る関数parse()を作りました。

まずは6行目でTokenizer()をインスタンス化。

7行目、「tokens = t.tokenize(text)」で引数の文章を品詞分解すると、tokensには分解した単語の情報が代入されます。

品詞解析をした結果をresultというリストにforループで追加していきます。

ここで、token.surfaceには単語そのものが格納されています。

(ちなみにtoken.part_of_speechにはその品詞名が格納されています。)

返り値はresultです。

main.py

そろそろオウム返しを卒業したいので前回までrepeat.pyとしていたものをmain.pyに改名し、中身を次のように編集します。

import voicein
import speaker
import analyzer



#text=voicein.voicein()
text="今日はいい天気ですね"

parse=analyzer.parse(text)

print(parse)


#speaker.jtalk(text)

これでmain.pyを実行して動作を確認してみると、

['今日', 'は', 'いい', '天気', 'です', 'ね']

ちゃんと品詞分解されていますね。

この記事の執筆者
理系さん

理系の現役京大生。
受験での失敗と成功の経験を生かした理系記事でブログ毎日更新中!Twitterもやっていますのでよかったらフォローよろしくお願いします。

理系のシモンをフォローする
スポンサーリンク
シェアお願いします
理系の地下室

コメント

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