ぬゅぼうのPython日記【文章を生成してみたいな~】
↓前回↓
前回はweblio辞書さんの記事をスクレイピングして単語を取得しました。
その数なんと293語!!
これだけあればいろんな文章が作れるぞということで、
入力された文章の文法をもとに新しい文章を生成するコードを書いていきたいと
思いマウ!!!!!(板についてきた)
いつもながら関数の形で書いていきます。
一旦関数名はsentenceとしておきますね。
def sentence(word):
import func
import ast
import random
l=[]
file=ast.literal_eval(func.txtfile('word_data.txt'))
janome=func.janome(word)
for word_ in janome:
get_=file.get(word_[1:7])
if type(get_)is list:
l.append(random.choice(get_))
else:
l.append('?')
return ''.join([l_[0] for l_ in l])
inp=input()
print(sentence(inp))
今回は前回までのコードとやってること被ったりするので一行ずつの説明は割愛しますね。
では完成したコードの出来栄えを試してみましょう!
完璧やん…???
試しにもう一回試してみましょう。
出力はケチラ。
該当する単語カテゴリがなかったらそこに?をねじ込む仕様なので
なんか謎に疑問系になっちゃいました。
会社は連山じゃないです。。
やや馴れ馴れしいおっちゃんみたいな文章になってしまった…
やっぱりまだ単語のサンプル数が少ないようですね。
辞書の語彙だからか、動詞が少ないような気がする…
そこでちょっぴりズルをしてみようかと。
合間に…
l=[]
func.word_group(word)
file=ast.literal_eval(func.txtfile('word_data.txt'))
一行挟んじゃいます。
コレで新たに文章が入力された際そこからも単語を収集できるようになりマウ!
類語何しとるん??
ともかく、入力したばかりの『蹴られる』という単語を使用していますね。
面白いし単語学習にもなるのでもう少し遊んでみましょう。
こら対義語、変なもの食べちゃいけません。
ぴはアプリとは。
:『って何…料理なん…??
百科にてなる…日本語としては結構成立してるかギリギリなラインですね。
住んばいます…九州弁かな??
これはまあ割とアリな気がする。自然とは言えませんが…
『全ては言葉元にて行きます。』
なんだろう、何かの真理っぽい。
バリエーションが少ない単語カテゴリだとややオウム返しになりがちですね。
お…!?
割と日本語文として自然な感じになってきました!
ふんふん…『ロボット』と『使い方』、
同じカテゴリではあれど全然系統の違う言葉ですね…この辺も分類できたらなあ。
『焼いて』『焼いば』…
ここの『て』と『ば』、品詞的には同じかもしれないけど
明確に使い所が違う単語ですね。この辺も使い分けられたら完璧です。
『山登り』って内部的には名詞のカテゴリに入ってるのかな…?
それと同じカテゴリに『 ( 』という記号が入ってるのはやや違和感ですね…
ウモならしょうがねぇな!!!!!(諦め)
…と、ここまでやってきましたが。
コードとしてやりたいこと自体はできてるけど、
保存した単語データの方に改良の余地ありですね…
もういっそ今まで学習したデータをクリアして
スクレイピングに頼らず自力で文章打ちまくるのもいい気がしてきました。(今更)
あと僕の中でちょっと面白いかなってアイデアが出てきたので、
そっちの方も実現可能か検討していきマウ!!
じゃあとりあえず次回は、
単語データをまっさらにしてゼロから単語を覚えさせる回
にしましょうか!
うーん我ながら楽しみ!
最近は本当にPythonやるモチベが上がってて捗りまくってます。
これもひとえに記事を読んでいただいてる皆さんのおかげですね。
今後ともぜひチラチラとでも覗いていただければ嬉しいです!!
それでは!!
この記事が気に入ったらサポートをしてみませんか?