ぬゅぼうのPython日記【sentence_generator関数①】
↓前回↓
前回はsentence_analysis関数を完成させました。
単語を『品詞の複合体』として分類し、
(記事内では『単語カテゴリ』と呼称しています)
各カテゴリの前後にどんなカテゴリの単語がどんな頻度で出てくるのかをdict型にまとめて返す関数になっております。
と言ってもフワッとしとりますので、例として
('名詞', '一般', '*', '*', '*', '*')
この項目のデータを抜粋して引用しますね。
('名詞', '一般', '*', '*', '*', '*'): {-1: [(('助詞', '連体化', '*', '*', '*', '*'), 8.928571428571429), (('助動詞', '*', '*', '*', '特殊・タ', '基本形'), 1.7857142857142858), (('動詞', '自立', '*', '*', '一段', '連用形'), 1.7857142857142858), (('sentence_front',), 26.785714285714285), (('助詞', '接続助詞', '*', '*', '*', '*'), 8.928571428571429), (('動詞', '自立', '*', '*', '五段・カ行イ音便', '基本形'), 1.7857142857142858), (('形容詞', '自立', '*', '*', '形容詞・イ段', '基本形'), 5.357142857142857), (('助詞', '係助詞', '*', '*', '*', '*'), 10.714285714285714), (('助詞', '格助詞', '一般', '*', '*', '*'), 10.714285714285714), (('記号', '読点', '*', '*', '*', '*'), 5.357142857142857), (('助詞', '並立助詞', '*', '*', '*', '*'), 1.7857142857142858), (('助詞', '終助詞', '*', '*', '*', '*'), 1.7857142857142858), (('接続詞', '*', '*', '*', '*', '*'), 1.7857142857142858), (('動詞', '非自立', '*', '*', '五段・ワ行促音便', '命令e'), 1.7857142857142858), (('助動詞', '*', '*', '*', '不変化型', '基本形'), 3.5714285714285716), (('名詞', '一般', '*', '*', '*', '*'), 1.7857142857142858), (('動詞', '自立', '*', '*', '一段', '基本形'), 1.7857142857142858), (('接頭詞', '名詞接続', '*', '*', '*', '*'), 3.5714285714285716)], 1: [(('助詞', '連体化', '*', '*', '*', '*'), 1.7857142857142858), (('助動詞', '*', '*', '*', '特殊・デス', '基本形'), 7.142857142857143), (('助動詞', '*', '*', '*', '特殊・ダ', '連用形'), 3.5714285714285716), (('助詞', '係助詞', '*', '*', '*', '*'), 19.642857142857142), (('助詞', '格助詞', '一般', '*', '*', '*'), 44.642857142857146), (('助詞', '終助詞', '*', '*', '*', '*'), 1.7857142857142858), (('助詞', '並立助詞', '*', '*', '*', '*'), 1.7857142857142858), (('名詞', '接尾', '一般', '*', '*', '*'), 3.5714285714285716), (('名詞', '接尾', '形容動詞語幹', '*', '*', '*'), 1.7857142857142858), (('sentence_behind',), 8.928571428571429), (('名詞', '一般', '*', '*', '*', '*'), 1.7857142857142858), (('動詞', '自立', '*', '*', '一段', '基本形'), 1.7857142857142858), (('動詞', '自立', '*', '*', '五段・ワ行促音便', '仮定形'), 1.7857142857142858)]}
この辺の説明は昨日書いたので割愛。
さっそくsentence_generator関数の作業に移っていきます。
いつもはある程度書いてからまとめて載せてるのですが今回はリアルタイムで考えながら記事も書いていきたいと思いマーーーウ。
def sentence_generator(word):
まず引数について。
可変長引数にしようかなとも思ってたんですが、
後々この関数を使う時のこと考えると引数自体を増やすより
「いくつかの要素を含んだlist型など」一つを引数として渡す方が
良さそうだと思ったのでそっちにしました。
想定しているのは
[('トマト', '名詞', '一般', '*', '*', '*', '*', 'トマト', 'トマト', 'トマト'), ('ナス', '名詞', '一般', '*', '*', '*', '*', 'ナス', 'ナス', 'ナス')]
こんな感じ。別にtupleでもいいけど。
今後実装する擬似的な知識システムのkeyとしてjanomeかけたオブジェクトを使おうと思っているので、
出力処理もそれに倣った形式にしようかなと。
sentence_data=sentence_analysis()
そして昨日作ったばかりのsentence_analysis関数で出したdict型にsentence_dataと変数名をつけます。
_list=[('sentence_front',)]
出力にする予定のlist。
文頭を表す('sentence_front',)という要素だけ先に入れてあります。
今までlist型を作るときは変数名をたいがい l 一文字にしてたんですが
さすがに雑すぎるし、シンプルに list とかにしちゃうと
type('hoge') is list
みたいな処理をしたい時正常に動かなくなるので…(経験談)
アンダーバーを追加して_listにしております。
…ここまではいいんだ、ここまでは。
こっからが難しくてなあ…
ぼちぼち書いていくか。
ともあれ今日はここまでにしときます。
眠いので。
それではまた次回は続きを書いていこうと思いマウ!!
この記事が気に入ったらサポートをしてみませんか?