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度のメシより技術大好き /
(株)ライトコードは、WEB・アプリ・ゲーム開発に強い「好きを仕事にするエンジニア集団」です。
pythonでのシステム開発依頼・お見積もりはこちらまでお願いします。
また、WEB・スマホ系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

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


書いた人はこんな人

ライトコード社員ブログ
ライトコード社員ブログ
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡本社、東京オフィスの2拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

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

バックエンドエンジニア

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

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

\ 世界を変える…! /

Androidエンジニア

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

iOSエンジニア