変形の第2弾。
成果物
準備
カタカナをひらがなに変換するため。
pip3 install jaconv
- 実行パスに辞書ファイルが存在すること
- 以前作成したヤツ
コード
Renyou.py
連用形の一例に変形する。
import re import jaconv # 連用形。動詞の前に来る class Renyou: def __init__(self): self.__re_conj_conn = re.compile(r'^連用(.+)接続$') # 「方」 def get_howto(self, row): if '連用形' == row[9]: return row[0] + '方' else: return None # 「様」 def get_state(self, row): if '連用形' == row[9]: return row[0] + '様' else: return None # 「始める」 def get_start(self, row): if '連用形' == row[9]: return row[0] + '始める' else: return None # 「終わる」 def get_end(self, row): if '連用形' == row[9]: return row[0] + '終わる' else: return None # 「連用タ接続」など def get_conn(self, row): m = self.__re_conj_conn.match(row[9]) if m: return row[0] + jaconv.kata2hira(m.group(1)) else: return None
run.py
いくつかの語を変形する。
#!/usr/bin/env python3 # coding: utf8 import Precaution import Renyou def prints(words): for word in words: if word is not None: print(word) def get_renyous(row): return (renyo.get_howto(row), renyo.get_state(row), renyo.get_start(row), renyo.get_end(row), renyo.get_conn(row)) p = Precaution.Precaution() renyo = Renyou.Renyou() words = ['走る','押す','愛する','見る','食べる','来る','悲しい','ござる'] for word in words: print('===== {} ====='.format(word)) rows = p.get(word) for row in rows: prints(get_renyous(row))
実行結果
./run.sh
===== 走る ===== 走り方 走り様 走り始める 走り終わる 走った ===== 押す ===== 押し方 押し様 押し始める 押し終わる ===== 愛する ===== ===== 見る ===== 見方 見様 見始める 見終わる ===== 食べる ===== 食べ方 食べ様 食べ始める 食べ終わる ===== 来る ===== 来方 来様 来始める 来終わる 来り方 来り様 来り始める 来り終わる 来った 来方 来様 来始める 来終わる ===== 悲しい ===== 悲しかった 悲しくて 悲しくって 悲しゅうござい 悲しゅぅござい ===== ござる ===== ござい方 ござい様 ござい始める ござい終わる ござった
愛する
系がない。愛し方
とか出て欲しかったのに来る
系も変なのが混ざってる。来り始める
とかおかしい- 助動詞
ござる
がおかしい。末尾に付与するのは動詞のみにすべきか
所感
これで「走る」と入力したら「走り方」が出せる。ハウツー本のタイトルみたいなのを作れそう。「運動会で絶対に1位をとれる走り方」みたいな。それができれば、売れるタイトルBOTとか作れそう。でも「運動会で絶対に1位をとれる方法」にして「相手の弁当に下剤を仕込む」みたいな答えを出すゲスBOTのほうが欲しい。もはや形態素解析の領域ではないか。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
- Python 3.5.3
- SQLite 3.29.0 ※
- MeCab 0.996ユーザ辞書
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux