ぬゅぼうの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_[0for l_ in l])

inp=input()
print(sentence(inp))

今回は前回までのコードとやってること被ったりするので一行ずつの説明は割愛しますね。

では完成したコードの出来栄えを試してみましょう!

入力 キノコは美味しい

出力 自動車は大きい

完璧やん…???


試しにもう一回試してみましょう。

入力 イカとタコを食べる

出力はケチラ

出力 ウモや読み方から? 

該当する単語カテゴリがなかったらそこに?をねじ込む仕様なので
なんか謎に疑問系になっちゃいました

入力 人間は歩く生き物だ。

出力 会社は?連山??

会社連山じゃないです。。

やや馴れ馴れしいおっちゃんみたいな文章になってしまった…

やっぱりまだ単語のサンプル数が少ないようですね。

辞書の語彙だからか、動詞が少ないような気がする…

そこでちょっぴりズルをしてみようかと。

合間に…

l=[]
func.word_group(word)
file=ast.literal_eval(func.txtfile('word_data.txt'))

一行挟んじゃいます
コレで新たに文章が入力された際そこからも単語を収集できるようになりマウ!

入力 鹿に蹴られる

出力 類語が蹴られる

類語何しとるん??

ともかく、入力したばかりの『蹴られる』という単語を使用していますね。

面白いし単語学習にもなるのでもう少し遊んでみましょう。

入力  煮物を食べる人間

出力  )」を食べる対義語

こら対義語変なもの食べちゃいけません

入力 ナスは美味しい夏野菜です。

出力 フリーは美味しいぴはアプリです。

ぴはアプリとは。

入力 それは素晴らしい経験でした。

出力 それは美味しい:『でした。

:『って何…料理なん…??

入力 明日は雨が降る。

出力 明日は百科にてなる。

百科にてなる…日本語としては結構成立してるかギリギリなラインですね。

入力 ミミズと一緒に住んでいます。

出力 呂から総称で住んばいます。

住んばいます九州弁かな??

入力 畑を耕すのは大切な作業です。

出力 用語にてさすものは公式な確認です。

これはまあ割とアリな気がする。自然とは言えませんが…

入力 明日は遊園地に行きます。

出力 すべては言葉元にて行きます。

『全ては言葉元にて行きます。』

なんだろう、何かの真理っぽい。

入力 ボールを蹴るのは私です。

出力 ページで蹴るんは私です。

バリエーションが少ない単語カテゴリだとややオウム返しになりがちですね。

入力 あなたは魚を食べます。

出力 あなたは古語をできます。

お…!?

割と日本語文として自然な感じになってきました!

入力 私はロボットを作っています。

出力 私は使い方があざけっでいます。

ふんふん…『ロボット』『使い方』
同じカテゴリではあれど全然系統の違う言葉ですね…この辺も分類できたらなあ。

入力 餅を焼いて食べます。

出力 フリーに焼いば食べます。

『焼いて』『焼いば』
ここの『て』『ば』、品詞的には同じかもしれないけど
明確に使い所が違う単語ですね。この辺も使い分けられたら完璧です。

入力 私の趣味は山登りです。

出力 私の古語は(です。

『山登り』って内部的には名詞のカテゴリに入ってるのかな…?
それと同じカテゴリに『 ( 』という記号が入ってるのはやや違和感ですね…

入力 あなたの得意な教科は国語です。

出力 それのやぼな業界はウモです。

ウモならしょうがねぇな!!!!!(諦め)



…と、ここまでやってきましたが。
コードとしてやりたいこと自体はできてるけど、
保存した単語データの方に改良の余地ありですね…

もういっそ今まで学習したデータをクリアして
スクレイピングに頼らず自力で文章打ちまくるのもいい気がしてきました。(今更)

あと僕の中でちょっと面白いかなってアイデアが出てきたので、
そっちの方も実現可能か検討していきマウ!!

じゃあとりあえず次回は、
単語データをまっさらにしてゼロから単語を覚えさせる回
にしましょうか!

うーん我ながら楽しみ!

最近は本当にPythonやるモチベが上がってて捗りまくってます

これもひとえに記事を読んでいただいてる皆さんのおかげですね。

今後ともぜひチラチラとでも覗いていただければ嬉しいです!!

それでは!!

この記事が気に入ったらサポートをしてみませんか?