HOME >>  Pythonをさわってみよう >  機械学習の実感 文章の自動生成

機械学習の実感 文章の自動生成

 今、機械学習の実感をつかむため、教本のChapter4 「日本語の文章を生成しよう」に挑戦しています。今回はその後半であるマルコフ連鎖用の辞書データを使って文章を自動生成する方法について、まとめておきます。

 

■ 文章の自動生成方法

 今回も、自分なりに理解したロジックをイラストにまとめてみました。

 文章の作成は、単語をつなげた文字列を作ればよいのです。 この時、単語をつなげていく指針は単語の状態遷移図を使います。そして、分岐点では先回の報告にて作成したマルコフ連鎖用の辞書のデータにもとずいた選択確率に従って、ランダムに単語を選択しながら文字列をつなげていけば良いのです。文章の分解作業の逆を実施していくのである。

 

■ 実際のプログラムの内容

 ここでは、Pythonの学習のために、教本に示された内容を追って行こう。 内容は、「Lesson 32 マルコフ連鎖で文章自動生成しましょう」を実施していきます。この本では、各ステップでのプログラムの記述の後に、その結果としての出力をプリントアウトしているので、プログラムの実行内容を理解することが出来ます。わかりやすいですね。

 

●ステップ4:

 文章の自動生成の前に、最初の単語をランダムに選択するため、単語の出現回数のデータを作成する。

 

●ステップ5:

 最初の単語の出現回数のデータをランダムチョイスで処理できるようにデータを変換する。

●ステップ6:

 最後に文章の生成関数を作成し、文章の生成を実行します。

 

■ まとめ

 目的とする「文章の自動生成」のプログラムを理解することが出来ました。そのロジックも、なるほどと感心する内容であった。

 また、最初のイラストに示した出力例では、20個の文章を出力させましたが、元となる文章が、ほぼ同じ割合で生成されていることが分かります。さらに、元となる文章とは異なるようなものが一つも出現していないことにも注目をしたい。

突然 ”生ビールは一番搾りだ!” との文章は出てこないのである。                

 これは、機械学習、即ち AI の限界のような気がします。 発想の転換を図るようなことは起こらないのである。ロジックを振り返っても、そのようなことが起こりえないことが理解できますが、最近のディープラーニングの世界ではどうなんでしょうか?

 いろいろな元データを数多く覚え込ませれば、ガチャガチャ・ポン!で意外な組み合わせができるかも知れません。その組み合わせの意外さに気が付き、新しい発想のもとになれば効果的ですが、そこにはやはり人間の判断力が必要となりますね。

 

   ***********************************************************

 そして、次なるステップとして、機械学習の元となる文章を増やしたりして、マルコフ連鎖用の辞書のデータがどのように変化するのか、生成される文章はどのように変わるかを簡単な実験を実施して理解を深めたいと思います。実験屋の悪いクセ(?)ですが・・・・・・・・。