1. HOME
  2. ブログ
  3. IT技術
  4. 【Python】Janomeを使ったマルコフ連鎖に触れてみた!

【Python】Janomeを使ったマルコフ連鎖に触れてみた!

Janomeを使ってマルコフ連鎖に挑戦!

後に紹介する「マルコフ連鎖」は、統計学でよく活用されていますが、言語処理の「文書生成」でも活用できます。

具体的には、ある言葉の次に来るであろう言葉を、確率をもとにつなぎ合わせて、文章にするようなイメージですね。

今回は、この「マルコフ連鎖」と「Janome」というライブラリを使って、文書作成をしていきたいと思います!

マルコフ連鎖とは

一般的な「マルコフ連鎖」の説明では、次のように表現されています。

マルコフ連鎖とは、確率過程に一種であるマルコフ過程の中で、有限であり可算集合であるもの。

これだと、ちょっと分かりづらいですね…

簡単に噛み砕いて説明すると、マルコフ連鎖とは、次の条件を満たしたものです。

  1. 今の確率から未来の挙動がわかる
  2. ある状態が独立してバラバラである(天気の晴れ曇り雨、サイコロの1~6など)

具体的な例を出すと、今日の天気が雨なら、明日晴れになる確率は「30%」、雨になる確率は「70%」といった具合です。

Janomeのインストール

Janomeとは、日本語の「形態素分解」や「単語分解(分かち書き)」を、Python でできるようにしたライブラリです。

日本語は、英語のように単語ごとに、文書にスペースなどが入っているわけではありません。

つまり、単語分解(分かち書き)をすることが、難しい言語なのです。

それを容易にしたのが、この「Janome」。

類似のライブラリには、「MeCab」もありますね!

Janomeのインストール

それでは、インストールしていきましょう!

Janome は、pip コマンドで、簡単にインストールすることができます。

難しいセットアップは要りません。

これだけで、Janome を利用することができます。

Janomeで「形態素分解」してみよう!

文章の「形態素分解」をしてみる

インストールした Janome を使って、文章の「形態素分解」をしてみましょう!

書くべきコードは、次のとおりです。

では、上のコードを実行してみましょう。

結果

すると、次のような結果が表示されます。

このように、Janome を使うことで、簡単に文章の「形態素分解」を行うことができました!

Janomeとマルコフ連鎖を使って「文章生成」もしてみた

今回のマルコフ連鎖では、「プレフィックスを2つ」「サフィックスを1つ」として、実施していきます。

全体のイメージとしては、プレフィックスに入った単語(今回の場合は2つ)をもとに、そこから予測される次の単語を入れて、予測を繰り返していくというイメージです。

まずは、下のマルコフ連鎖を実装した関数を見ていきましょう!

コード

今回は、このマルコフ連鎖の関数を使っていきます。

文章を読み込ませる

ではこの関数に、下記のような、適当な文書を読み込ませてみましょう。

この文書をもとに、新たな文章を生成するわけですね!

実行結果

実行してみた結果がこちら。

ちょっと不思議ではありますが、文章らしくなっていますね!

ちなみにこの関数は、ランダム関数を使用しているため、毎回同じ結果が出るわけではありません

何度か実行して、どんな文章が生成されるのか、試すのも楽しいですね!

文書をより大きいものにすれば、より多様な文章を出力することもできますよ。

さいごに

今回は、「Janome」と「マルコフ連鎖」を使用して、言語処理に触れてみました。

文章生成の精度を上げるには、

  1. プレフィックス数を増やす
  2. より長い文書を読み込ませた状態の辞書を準備する

など、パラメータの調整をすることも重要になってきます。

色々試して、「bot」を作成してみるのも面白そうですね!

こちらの記事もオススメ!


書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア