はじめに
"NeXov Enables eXtensible Observation of Vertices"
「NeXov」という汎用マルコフ連鎖ライブラリを開発してみました。ぜひこの記事を読んで使ってみてください!
NeXovの特徴
- 有向グラフを用いて実装、モデルのインポートエクスポートも容易 (NetworkX)
- NLPを用いた高精度なトークン化機能 (MeCab)
- 自動整形された可視化グラフ (Graphviz)
NeXovは、これらを 「オールインワンで」 提供するライブラリとなっています。
インストール
いくつか前提ソフトがあるので先にインストールします。
MeCab
形態素解析を行うMeCab
はNeXovのデータ前処理に使われています。MeCab
をインストールするには、以下のサイトからインストーラーをダウンロードし、インストーラーの指示に従います。
Debian系ディストリは以下のコマンドを実行します。
$ sudo apt install mecab libmecab-dev mecab-ipadic-utf8
NEologd
NEologd
は、MeCab
を固有名詞に強くするためのシステム辞書です。
Windowsであれば、以下のサイトを参考にインストールしてください。
また、Debian系ディストリであれば以下のサイトが参考になります。
Graphviz
Graphviz
は、グラフの可視化を行うライブラリです。以下のサイトを参考にインストールしてください。
Install
NeXovをインストールするには、以下のコマンドを実行します。
$ pip install nexov
使い方
NeXovには以下のような機能があり、それぞれ対応するコマンドがあります。
Command | Feature |
---|---|
tokenize |
テキストのトークン化 |
generate |
モデルの構築・生成...etc |
visualize |
モデルの可視化 |
usage: nexov [-h] {tokenize,generate,visualize} ...
NeXov Enables eXtensible Observation of Vertices
positional arguments:
{tokenize,generate,visualize}
tokenize テキストをトークンに分割
generate モデルまたはテキストを生成
visualize モデルを画像として可視化
options:
-h, --help show this help message and exit
tokenize
tokenize
は、自動でテキストをトークン化するコマンドです。
オプション
usage: nexov tokenize [-h] -i INPUT [-o OUTPUT] [--method {mecab,char}]
options:
-h, --help show this help message and exit
-i INPUT, --input INPUT
入力ファイル
-o OUTPUT, --output OUTPUT
出力ファイル
--method {mecab,char}
分割方法
例
$ cat input.txt
ぐっもーにん!
もにもに!
もーにん!!
もにもに!!!!
おはですー!!
おはですー!
おはようです!!!!!!
$ nexov tokenize -i input.txt -o tokens.txt
[+] Wrote tokenized data to tokens.txt
$ cat tokens.txt
ぐっも ー に ん !
も に も に !
も ー に ん ! !
も に も に ! ! ! !
お は です ー ! !
お は です ー !
おはよう です ! ! ! ! ! !
generate
generate
は、モデルの構築と生成、またインポート・エクスポートも行うコマンドです。
オプション
usage: nexov generate [-h] -i INPUT [-s START] [-l LENGTH] [-e EXPORT] [-v VISUALIZE]
options:
-h, --help show this help message and exit
-i INPUT, --input INPUT
モデルまたはトークン済みデータファイル
-s START, --start START
開始トークン
-l LENGTH, --length LENGTH
生成するトークン数
-e EXPORT, --export EXPORT
生成後のモデルをファイルにエクスポート
-v VISUALIZE, --visualize VISUALIZE
生成と同時に可視化を実行(拡張子を除く出力ファイル名を指定)
例
$ cat tokens.txt
ぐっも ー に ん !
も に も に !
も ー に ん ! !
も に も に ! ! ! !
お は です ー ! !
お は です ー !
おはよう です ! ! ! ! ! !
$ nexov generate -i tokens.txt -s も -l 100
もにもにもにもーにもにん!おはです!おはですー!!!!もに!もにん!!もにん!おはですー!!!おはですー!!もー!おはようです!!!おはようです!!おはですーにもにもー!もに!!!!もにもーにん!!!おは です!!おはようですー!もにん!!
$ nexov generate -i tokens.txt -e model.json
[+] The model was exported to model.json
$ nexov generate -i model.json -s も -l 100
もーにん!おはですーにもにん!!!!おはですー!!!もにん!もにもにもー!もにん!!!!!もにもにん!!もーにもにん!!!!おはようですー!おはです!!!!!!おはようですーに!おはですーに!!!!おはよ うですー!もにもにもにん!おは
visualize
visualize
は、モデルを画像で可視化するコマンドです。
オプション
usage: nexov visualize [-h] -i INPUT -o OUTPUT [--font FONT]
options:
-h, --help show this help message and exit
-i INPUT, --input INPUT
モデルファイル
-o OUTPUT, --output OUTPUT
出力ファイル(拡張子を除くファイル名を指定)
--font FONT 使用するフォント
例
$ nexov visualize -i model.json -o output
[+] The model visualization was saved to output.png
生成例
-
猫語生成器(データ: ゆ~さんのポスト)
-
しかのこのこのここしたんたん