Lorem ipsumっていうやつがあるじゃないですか。あるんですよ。
日本語では言語としての諸々の特性からこういった「一見それっぽい」ダミーテキストを用意するのが難しいですよね。大抵の場合、青空文庫とかから著作権フリーの文章をもらってくるか、「あああ……」みたいな単純な繰り返しでお茶を濁すことが多いと思います。
というわけで、日本語のダミーテキストを生成するモジュールを作ってみました。node.jsで。
dummy-jpと言います。デフォルトでは以下のような文章を生成します。
これと同じような訳になります。私がこうやっていないのであります。一般の慣例として偉へ手伝いに行ったというのがあるが、あなたがたは正しく妨害し得る至極重宝なものでしょう。
使い方
インストール
npmにはアップロードしていないので、githubのレポジトリからインストールしてください。
> npm install stsysd/dummy-jp.git
# モジュールとして使う場合
> npm install -g stsysd/dummy-jp.git
# コマンドとして利用する場合
モジュールとして使う
const Dummy = require('dummy-jp');
// 設定なしで使えます
let dummy = new Dummy();
console.log(dummy.generate());
// モデルを指定して読み込む
// 下の場合、"./model-name.json"、"./model/model-name.json"、このパッケージの"model/model-name.json"の順にファイルを探して読み込みます。
Dummy.load("model-name").then(dummy => {
console.log(dummy.generate());
});
// サンプルテキストから動的にモデルを生成する
Dummy.fromText("/path/to/text/file").then(dummy => {
console.log(dummy.generate());
// モデルの生成には時間がかかる場合があるので、事前に保存しておくことをおすすめします。
fromTextFile.save("/path/to/model.json");
});
コマンドとして使う
> dummy-jp --repeat 3 --copy
# 3つの文章を生成してクリップボードにコピーする
> dummy-jp build --src source.txt --out out.json
# source.txtを元にモデルを生成し、out.jsonに保存する
> dummy-jp --model out
# out.jsonに保存したモデルを使って文章を生成する
仕組み
実態は単純なマルコフ連鎖を使った文章生成です。もう何番煎じかわかりませんね。
必ず元となる文章が必要になるので、デフォルトでは「私の個人主義」を使っています。他に同梱しているものでは「蜘蛛の糸」や「走れメロス」が使えます。
「蜘蛛の糸」
こちらは地獄の底に当って居ります。何気なくカンダタの無慈悲な心が、そうしてそれだけの善い事をした報には、出来るなら、この一部始終をじっと見ていらっしゃいました。
「走れメロス」
「待て。その頃には、いまに、磔になった。一団の旅人と颯っとすれちがった。立ち上る事が出来たのだ。身代りの男を、三日目に殺して、説き伏せた。結婚式は、あれは夢だ。忘れている。もう、駄目でございます。」
もちろん他の文章も利用可能です。例えばmstdn.jpのローカルタイムラインを使うと次のような文字列が出力されます。
mstdn.jp
交通費でない感じしててってどこにも出たくはまらない(´・ω・`)そう考えると、はぁ?ってどこにも当てはまるがそれをぶら下げるための突っ張り棒が欲しい
なんとなく元の文章の雰囲気が出ていますね。
よかったら使ってみてください。
その他雑多なこと
- マルコフ連鎖を使っている関係上、出力される文章の長さのコントロールは難しいです
- 文章の長さは大体幾何分布に従っていて、平均は元の文章の平均と一致するっぽいです
- 元と文章と同じ文章を生成してしまうことが結構あります
- マストドンのトゥートから生成したダミーテキストを眺めてるだけでも結構楽しかったのでbotにしました
- TwitterじゃなくてマストドンなのはTwitterのAPIキーの取得が大変そうだからです