自然言語処理100本ノックの続きと、 先日製作したデスクパネルの塗装。
昨日と今日やったこと
実装の続き
前回まででメインの Morph クラスはだいたいできた。
ちょっと気になるところ
*
から始まる文のうち、*
(アスタリスク)の形態素解析結果を除く場合分けをした。split()の要素数で場合分けする。
(けど、Qiitaにある作例を見ると、正規表現で係り受け解析結果かどうかを判定するほうがスマートかもと思う)
文の終わりはEOS
でマークされるが、元ファイルの行には文じゃないものがあることに気づいた。章番号と 」
(とじかっこ)が一行になっているところ。
章番号は置いておくとして、なぜか」
(とじかっこ)の前に改行があるところがある。」
(とじかっこ)が1文として扱われるのは気持ち悪いので、元ファイルを編集して\n」
を」
に置き換えた。
ひとまず完成
「文」には空白行や章番号の行は含まれないという認識。 (「文」に空白行や章番号の行を含むとする場合もある)
3文目の形態素列の表示
記号 空白 どこ どこ 名詞 代名詞 で で 助詞 格助詞 生れ 生れる 動詞 自立 た た 助動詞 * か か 助詞 副助詞/並立助詞/終助詞 とんと とんと 副詞 一般 見当 見当 名詞 サ変接続 が が 助詞 格助詞 つか つく 動詞 自立 ぬ ぬ 助動詞 * 。 。 記号 句点
答え合わせ
Qiitaセンパイの作例を見ながら、改善する。
クラスの特殊メソッドを定義する def __str__(self):
クラスで作ったインスタンスをprint()で表示すると、<__main__.Morph object at 0x10ナントカナントカ>
って番地みたいなやつ(?)が表示されてしまうんですが、代わりに表示したい文字列を def __str__(self):
に書いておくという手があるんですね。
各文をMorphオブジェクトのリストとして表現する
表現したあとにどうすればいいのか、後回しにしたまま忘れていた。
yield文を使って都度戻り値を戻しておくということにしました。yield文、便利ね。
DIY:デスクパネルを塗った
先日製作したデスクパネルを塗装した。
はい(塗装完了して再設置)(デスクの背面を隠すパネル) pic.twitter.com/t8VtLHivBO
— ピージェイ 𐀠𐀋𐀂 (@xiPJ) October 27, 2019
つや消しニスなのでテカりすぎず、手触りもすべすべで、焼桐の色もそのまま、良い感じやと思います。