マルコフ連鎖ライブラリ for .net
はじめに
これは、マルコフ連鎖アルゴリズムによる機械的な文章作成機能を、.net Framework上で簡単に実装するためのライブラリです。
本ライブラリには、同アルゴリズムによる機械的な文章作成に必要な、一通りの機能(文章の形態素解析やN-gram化など)も含まれています。
このライブラリにより、各アルゴリズムの詳細をまったく気にすることなく、機械的な文章作成の機能を持ったWindowsアプリケーションを構築できます。
(例:TwitterやIRCのBOT)
ダウンロードはこちらよりどうぞ。(ソースコード同梱)
marcovlib.zip
このドキュメントの改訂履歴
2014/2/18 v1.1
2014/2/12 初版
使い方
C#での使用方法を前提に説明します。
すべてのdllを、プロジェクトのソースがあるディレクトリへコピーします。
MeCabSharp.dllとmarcovlib.dllをプロジェクトの参照設定に加えます。
コンソールアプリケーションの場合、最小限のサンプルコードは下記のとおりです。
using Marcovlib; class Program { static BasicMarcovActor bma; static void Main(string[] args) { bma = new BasicMarcovActor(4); //任意の数を指定可能ですが、通常は2〜4です //文字列を受ける処理をした後に、下記のコードを書きます bma.Learn_Sentence(str); //文字列strの内容を辞書へ登録させます //文章を作成し出力させる方法は二通りあります。 //戻り値の型は下記いずれの場合もSystem.Stringです。 result = bma.Get_Sentence(); // (1) 文字数制限なし result = bma.Get_Sentence(80); // (2) 80文字に収まるよう、文章を作成 //あとはしたい処理を書いてください //Twitterに投稿、IRCに送信、etc...
簡単なクラスライブラリドキュメント
クラス : Marcovlib.BasicMarcovActor
一般によく知られている方法で、文章の学習・作成のアルゴリズムを実装したものです。
Learn_Sentenceメソッドで文章を学習(辞書構築)→Get_Sentenceメソッドで文章作成の流れを繰り返すだけで、よくあるBOTと同じことができます。
コンストラクタ : BasicMarcovActor(int paramOfNgram)
コンストラクタです。
引数には、文章を分かち書きによりN-gram化させる際の、数字N(N > 0)を指定します。
(Nは通常2から4です。)
- パラメータ : System.Int32
注意点
辞書について
形態素解析に使用する辞書は同梱されていません。MeCabで使用できる辞書であれば何でも使えますので、各自で用意してください。
アーカイブには辞書作成に必要なツール(mecab-dict-gen, mecab-dict-index)を同梱していますので、ご活用ください。
一般的によく利用される辞書は、ipadicまたはnaist-jdicです。
当方では未確認ですが、google IME(mozc)の辞書も使えるようです。
mozc_01
また本ライブラリに同梱のMeCabは、辞書の設定ファイルである“mecabrc”が、MeCab.dllと同じディレクトリに存在すればそれを見るようにコンパイルされています。
その他
内部ではメルセンヌツイスターを使用しています。
メルセンヌツイスターの著作権表示等については、アーカイブ内ドキュメント等に明記しております。
このプログラムの、修正BSDライセンスの表記
Copyright (C) 2014, idinor All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.