Metadata-Version: 2.4
Name: NeXov
Version: 1.1.1
Summary: NeXov Enables eXtensible Observation of Vertices
Author-email: Kurimochi <kurimochi.sec@gmail.com>
License: MIT License
        
        Copyright (c) 2025 Kurimochi
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/kurimochi/NeXov
Project-URL: Bug Tracker, https://github.com/kurimochi/NeXov/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: networkx
Requires-Dist: mecab-python3
Requires-Dist: matplotlib
Requires-Dist: graphviz
Dynamic: license-file

# NeXov
**"NeXov Enables eXtensible Observation of Vertices"**

NeXovは、非常に高密度のマルコフ連鎖モデルの構築や生成、可視化、またそれをサポートするデータ処理をNetworkXで実現するツールです。

## Install
OSごとに一部操作が異なります。
### Windows
以下のサイトにあるインストーラーを実行します。

https://github.com/ikegami-yukino/mecab/releases/tag/v0.996.2  (MeCab)  
https://graphviz.org/download/#windows  (Graphviz)

### Linux
以下のコマンドを実行します。
```shell
$ sudo apt update
$ sudo apt install -y mecab libmecab-dev mecab-ipadic-utf8 graphviz
$ sudo cp /etc/mecabrc /usr/local/etc/mecabrc
```

### NEologd (推奨)
`MeCab`に固有名詞などを認識させるためのユーザー辞書です。これを使うだけでも精度はかなり上がるのでインストールをお勧めします。

Windows: https://qiita.com/xi_guisheng/items/40ee7da516de05e5894f  
Linux: https://blog.forestberrypi.com/tools-services/linux/mecab-in-ubuntu/#toc7

### NeXovのインストール (共通)
`pip`でNeXovをインストールできます。
```shell
$ pip install nexov
```

## Usage
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}
                        分割方法
```
#### 例
```shell
$ 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
                        最大生成トークン長 (デフォルト値は500)
  -e EXPORT, --export EXPORT
                        生成後のモデルをファイルにエクスポート
  -v VISUALIZE, --visualize VISUALIZE
                        生成と同時に可視化を実行(拡張子を除く出力ファイルパスを指定)
```
#### 例
```shell
$ 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           使用するフォント
```
#### 例
```shell
$ nexov visualize -i model.json -o output
[+] The model visualization was saved to output.png
```
![output.png](tests/output.png)

## Use in external code
外部コード内で`NeXov.core`の`generate`メソッドを使用する際は、`The node None is not in the digraph.`エラーが発生するおそれがありますので、  
**必ず`current != None`という条件分岐を含めてください。**  
(`NeXov/cli.py`の65行目あたりを参考にするとわかりやすいと思います)

## LICENSE
NeXovはMITライセンスで配布されています。

ただし、以下の外部ソフト・ライブラリを利用しています。これらはNeXovに含まれていませんが、別途インストールが必要です。

- MeCab (形態素解析器) : BSD License
- NEologd (日本語辞書) : Apache License 2.0
- Graphviz (グラフ描画ツール) : Eclipse Public License 1.0
- mecab-python3 (Pythonバインディング) : MIT License
- networkx : BSD License
- graphviz (Pythonラッパー) : MIT License
- matplotlib : Matplotlib License (BSDスタイル)

それぞれのライセンス条件に従ってご利用ください。
