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・スマホ系エンジニアを積極採用中です!
※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

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


ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

書いた人はこんな人

ライトコードメディア編集部
ライトコードメディア編集部
「好きなことを仕事にするエンジニア集団」の(株)ライトコードのメディア編集部が書いている記事です。

関連記事

採用情報

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

バックエンドエンジニア

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

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

\ 世界はお前の手の中に・・・ /

モバイルエンジニア

\ サービスの守り神! /

インフラエンジニア