#  anco (azooKey CLI)

`anco`コマンドにより、AzooKeyKanaKanjiConverterをコマンドライン上で利用することができます。`anco`はデバッグ用ツールの位置付けです。

`anco`を利用するには、最初にinstallが必要です。`/usr/local/bin/`に`anco`が追加されます。

```bash
./install_cli.sh
```

Zenzaiを利用する場合は、`--zenzai`オプションを付けてください。

```bash
./install_cli.sh --zenzai
```

デフォルトでは、ほとんどの情報は出力されません。デバッグモードで実行するには`--debug`オプションを付けてください。

```bash
./install_cli.sh --debug
```

例えば以下のように利用できます。

```bash
your@pc Desktop % anco にほんごにゅうりょく --disable_prediction -n 10
日本語入力
にほんご入力
2本ご入力
2本後入力
2本語入力
日本語
2本
日本
にほんご
2本後
```

## 変換API

`anco run`コマンドを利用して変換を行うことが出来ます。`run`はデフォルトコマンドなので、`anco`だけでも`run`相当の動作をします。

## 評価API

`anco evaluate`コマンドを利用して変換器の評価を行うことが出来ます。

以下のようなフォーマットの`.tsv`ファイルを用意します。
```tsv
しかくとさんかく	四角と三角
かんたんなさんすう	簡単な算数
しけんにでないえいたんご	試験に出ない英単語
しごととごらくとべんきょう	仕事と娯楽と勉強
しかいをつとめる	司会を務める
```

これを入力し、変換器を評価します。

```bash
$ anco evaluate ./evaluation.tsv --config_n_best 1
```

出力はJSONフォーマットです。出力内容の安定が必要な場合`--stable`を指定することで比較的安定した出力を得られます。ただしスコアやエントロピーは辞書バージョンに依存します。

## 対話的実行API

少しずつ入力を進めるような実用的な場面を模した環境として`anco session`コマンドが用意されています。

```bash
$ anco session --roman2kana -n 10 --disable_prediction

== Type :q to end session, type :d to delete character, type :c to stop composition. For other commands, type :h ==
```

キーを入力してEnterを押すと変換候補が表示されます。`:`で始まる特殊コマンドを利用することで、削除、確定、文脈の設定などの諸操作を行うことが出来ます。

### リプレイ

`--replay`を用いると、セッションの中での一連の動作を再現することができます。

```yaml
anco session --roman2kana -n 10 --disable_prediction --replay history.txt
```

`history.txt`は例えば以下のような内容が含まれます。

```
a
i
u
e
e
:del
o
:0
```

現在実行中のセッションから`history.txt`を作成するには`:dump history.txt`と入力します。

### 学習機能のデバッグ
学習機能のデバッグのため、セッションコマンドには複数の機能が用意されています。`--enable_memory`の状態では、デフォルトで学習が有効になり、一時ディレクトリに学習データが蓄積されます。

```bash
$ anco session --roman2kana -n 10 --disable_prediction --enable_memory
```

セーブを実施するには以下のように`:save`を入力します。

```txt
rime
:h
:n
:14
:4
:save
```

すでに存在する学習データをread onlyで読み込むこともできます。

```bash
$ anco session --roman2kana -n 10 --disable_prediction --readonly_memory ./memory
```

この場合、`:save`コマンドは何も行いません。

## 辞書リーダ

`anco dict`コマンドを利用して辞書データを解析することが出来ます。

```bash
your@pc Desktop % anco dict read ア -d ./Sources/KanaKanjiConverterModuleWithDefaultDictionary/azooKey_dictionary_storage/Dictionary/                       
=== Summary for target ア ===
- directory: ./Sources/KanaKanjiConverterModuleWithDefaultDictionary/azooKey_dictionary_storage/Dictionary/
- target: ア
- memory?: false
- count of entry: 24189
- time for execute: 0.0378040075302124
```

`--ruby`および`--word`オプションを利用して、正規表現でフィルターをかけることが出来ます。

```bash
your@pc Desktop % anco dict read ア -d ./Sources/KanaKanjiConverterModuleWithDefaultDictionary/azooKey_dictionary_storage/Dictionary/ --word ".*全"
=== Summary for target ア ===
- directory: ./Sources/KanaKanjiConverterModuleWithDefaultDictionary/azooKey_dictionary_storage/Dictionary/
- target: ア
- memory?: false
- count of entry: 24189
- time for execute: 0.07062792778015137
=== Found Entries ===
- count of found entry: 3
Ruby: アキラ Word: 全 Value: -11.7107 CID: (1291, 1291) MID: 424
Ruby: アンゼン Word: 安全 Value: -7.241 CID: (1287, 1287) MID: 169
Ruby: アンシンアンゼン Word: 安心安全 Value: -11.7638 CID: (1283, 1287) MID: 17
```

`--sort`オプションを使うとエントリーの並び替えが可能です。
