Open5

日本語文境界判定ツールのメモ

syoyosyoyo

bunkai

https://zenn.dev/syoyo/articles/99c7528863ed5f

https://qiita.com/t-yamamura/items/69e3a7b81c18804a27ec#chitra-と文分割

ただし遅い(BERT ベースのため)... CUDA で動かしてもみたが, GPU で高速化もそんなにされない感じであった

pySBD

https://spacy.io/universe/project/python-sentence-boundary-disambiguation

ルールベース? 未検証だが bunkai よりは速いと思う. 上記 chiTra の記事によれば入力文が長いと O(n^2)? くらいで処理時間がかかる模様

GiNZA

https://qiita.com/purple_jp/items/f0dc6cdbba81a5013ecb

ぺろっと使えるのはよい.
BERT(Transformer)版は遅いので, LLM 向けコーパス構築などの大量処理には向かない.

wtpsplit(旧 nnsplit?)

これが 2023/12 時点技術的には最新っぽい

https://github.com/bminixhofer/wtpsplit

https://www.reddit.com/r/MachineLearning/comments/jmnsnu/p_nnsplit_a_library_for_fast_robust_sentence/

すくなくとも bunkai よりは速そう?

syoyosyoyo

wtpslit

ただ wtpslit の pretrain モデルでは, 日本語は全然だめでした...
日本語データセットで train し直しが必要かもしれません.

syoyosyoyo

CommonCrawl などの web 文章を扱う場合,
途中で切れている文章の結合しなおしも考えると, 現状は

  • GiNZA 従来版
  • sengiri
  • ja_sentence_segmenter
    • 結合ルールは自前でいろいろ書く必要あり

の組み合わせがよいか.

wtpslit も一応論文 reproduce 手順はあるようなので, 日本語で再学習させるといいかもはしれません...