この記事は1年以上前の古い記事です。現状に即していない記述の場合があります。あらかじめご了承ください。

日本語の文章にMarkovifyを使うならreject_regを設定しろ

nogajun
Pythonの授業のネタでAIのとっかかりとしてマルコフ連鎖の文章生成をやろうとしてます。 対象が文系学生なのでマルコフ連鎖のライブラリMarkovifyを使ったけれど、オプションを設定せず日本語文章に使うとエラーで止まります。
それで調べていたけれど検索に引っかかるブログの記事がヘン。止まる原因は、使えない文字があって止まることは分かっているみたいだけど、使えない文字を前処理で消している。それって文字がなくなるんですよね? そんな対処方法でいいの? いや、ダメだろ。
しかも、誰かが考えた対処方法をコピペしているので同じ対処がボコボコひっかかって呆れてしまった。結局、それで1日無駄に潰してしまったので正しいことを書いておきます。
Markovifyを日本語文章に使う場合は、下のようにmarkovify.Text()
やmarkovify.NewlineText()
にwell_formed=True
を指定してreject_reg=
に無視させたい文字を指定しましょう。こんなふうにです。
markovify.NewlineText(wakati_text, well_formed=True, reject_reg="[〜・?!:;/@%()〔〕[]{}〈〉《》「」『』【】]")
reject_reg=
の無視する文字の指定方法は、正規表現のreと同じで列挙するだけです。
ていうか、ちゃんとREADMEにも書いてあるだろ!
しかも、7.2からってだいぶ前のバージョンから対応しているのにREADMEも読まず、Issueも見ず、他人の記事をコピペしてるヤツらってホント、クソだよ。