Skip to content

Saqoosha/BudouX-CSharp

Repository files navigation

BudouX C# Implementation

BudouX C#は、Google BudouXの.NET実装です。日本語や中国語などのCJK言語のテキストを適切な位置で改行するためのライブラリです。

特徴

  • スタンドアロン: サードパーティの単語分割器に依存しません
  • 軽量: 機械学習モデルを含めて約15KBのサイズです
  • 言語に依存しない: データセットを与えることで任意の言語のモデルをトレーニングできます

ビルド・テスト環境のセットアップ

必要な環境

  • .NET SDK 6.0以上
  • Mono(Unityでの利用やテスト実行時に必要)
  • Python 3.8以上(比較テスト用)

ビルド手順

# リポジトリのクローン
git clone https://github.com/Saqoosha/BudouX-CSharp.git
cd BudouX-CSharp

# ライブラリのビルド
dotnet build -c Release

# または、Monoを使用してビルド
mcs -target:library -out:BudouX.dll Runtime/BudouX/Parser.cs

UPMパッケージとしての使用方法

Unityプロジェクトで利用する場合はPackage Managerから以下のURLを追加してください:

https://github.com/Saqoosha/BudouX-CSharp.git

テスト実行手順

# Python版BudouXのインストール(比較テスト用)
pip install budoux

# テストコードのコンパイル
mcs -r:BudouX.dll TestComparison.cs -out:TestComparison.exe

# テストの実行
mono TestComparison.exe > csharp_results.txt
python test_comparison.py > python_results.txt

# 結果の比較
diff -y csharp_results.txt python_results.txt

Unityでの利用

  1. UPMパッケージとして追加する場合は「UPMパッケージとしての使用方法」セクションを参照
  2. 手動でインストールする場合はRuntime/BudouXのファイルをプロジェクトにコピー
  3. モデルファイル(ja.json)をAssets/Resourcesフォルダにコピー
  4. 後は「使用方法」セクションの手順に従って利用

使用方法

基本的な使い方

using BudouX;
using System.Collections.Generic;

// モデルファイルからParserを初期化
var parser = Parser.LoadDefaultJapaneseParser("path/to/ja.json");

// 文を意味のある単位で区切る
List<string> chunks = parser.Parse("今日は天気です。");
// 結果: ["今日は", "天気です。"]

Unity向けの使い方

using BudouX;
using System.Collections.Generic;
using UnityEngine;

// モデルファイルからParserを初期化
TextAsset jaModel = Resources.Load<TextAsset>("ja");
string tempPath = System.IO.Path.GetTempFileName();
System.IO.File.WriteAllText(tempPath, jaModel.text);
var parser = Parser.LoadDefaultJapaneseParser(tempPath);

// 文を意味のある単位で区切る
List<string> chunks = parser.Parse("今日は天気です。");
// 結果: ["今日は", "天気です。"]

// ゼロ幅スペースで区切って結合する場合
string processedText = string.Join("\u200b", chunks);

パフォーマンス

C#実装のパフォーマンス測定結果:

  • 1000文の処理時間: 約57ms
  • 1文あたりの平均処理時間: 約0.057ms
  • 1秒あたりの処理可能文数: 約17,544文

これはUnityでのリアルタイム処理に十分な速度です。100文字以内の短い文章を処理する場合、1秒間に数千の文章を処理できるため、パフォーマンスの問題はありません。

ライセンス

このプロジェクトはApache License 2.0の下でライセンスされています。詳細についてはLICENSEファイルを参照してください。

謝辞

このプロジェクトはGoogle BudouXをベースにしています。

About

No description, website, or topics provided.

Resources

License

Apache-2.0, Unknown licenses found

Licenses found

Apache-2.0
LICENSE
Unknown
LICENSE.meta

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published