日本語テキスト正規化のための軽量なRustライブラリ
- ✨ 全角⇔半角変換 - ASCII文字の相互変換
- ✨ カタカナ⇔ひらがな変換 - 日本語文字の相互変換
- ✨ 半角カタカナ→全角カタカナ変換 - 濁点・半濁点も正しく処理
- ✨ 文字種判定 - ひらがな、カタカナ、漢字、全角文字の判定
- ✨ 文字種カウント - 文字列内の各文字種をカウント
- ✨ 空白正規化 - 全角スペース、タブなどを統一
- ✨ 長音記号正規化 - 〜、~をーに統一
- ✨ 繰り返し記号展開 - ゝ、ゞ、ヽ、ヾを展開
- ✨ ゼロ依存 - 純粋なRust実装、外部依存なし
- ✨ シンプルなAPI - 使いやすい関数群
- ✨ 充実したテスト - 包括的なテストカバレッジ(32個のテスト)
Cargo.tomlに以下を追加してください:
[dependencies]
japanese-text = "0.1.0"use japanese_text::*;
fn main() {
// 全角→半角変換
let half = to_half_width("ABC123");
assert_eq!(half, "ABC123");
// 半角→全角変換
let full = to_full_width("ABC123");
assert_eq!(full, "ABC123");
// カタカナ→ひらがな変換
let hiragana = to_hiragana("カタカナ");
assert_eq!(hiragana, "かたかな");
// ひらがな→カタカナ変換
let katakana = to_katakana("ひらがな");
assert_eq!(katakana, "ヒラガナ");
// 半角カタカナ→全角カタカナ変換
let full_kana = half_width_katakana_to_full_width("カタカナ");
assert_eq!(full_kana, "カタカナ");
// 文字種判定
assert_eq!(is_hiragana('あ'), true);
assert_eq!(is_katakana('ア'), true);
assert_eq!(is_kanji('漢'), true);
}全角ASCII文字を半角に変換します。
assert_eq!(to_half_width("ABC"), "ABC");
assert_eq!(to_half_width("123"), "123");
assert_eq!(to_half_width("!@#"), "!@#");半角ASCII文字を全角に変換します。
assert_eq!(to_full_width("ABC"), "ABC");
assert_eq!(to_full_width("123"), "123");カタカナをひらがなに変換します。
assert_eq!(to_hiragana("カタカナ"), "かたかな");ひらがなをカタカナに変換します。
assert_eq!(to_katakana("ひらがな"), "ヒラガナ");半角カタカナを全角カタカナに変換します。濁点(゛)と半濁点(゜)も正しく結合されます。
assert_eq!(half_width_katakana_to_full_width("カタカナ"), "カタカナ");
assert_eq!(half_width_katakana_to_full_width("ガギグ"), "ガギグ");
assert_eq!(half_width_katakana_to_full_width("パピプ"), "パピプ");文字がひらがなかどうかを判定します。
assert_eq!(is_hiragana('あ'), true);
assert_eq!(is_hiragana('ア'), false);文字がカタカナかどうかを判定します。
assert_eq!(is_katakana('ア'), true);
assert_eq!(is_katakana('あ'), false);文字が半角カタカナかどうかを判定します。
assert_eq!(is_half_width_katakana('ア'), true);文字が漢字(CJK統合漢字)かどうかを判定します。
assert_eq!(is_kanji('漢'), true);
assert_eq!(is_kanji('字'), true);文字が全角文字かどうかを判定します。
assert_eq!(is_full_width('A'), true);
assert_eq!(is_full_width('1'), true);文字列内の各文字種の数をカウントします。
let counts = count_character_types("あア漢ABC123");
println!("ひらがな: {}", counts.hiragana); // 1
println!("カタカナ: {}", counts.katakana); // 1
println!("漢字: {}", counts.kanji); // 1
println!("ASCII: {}", counts.ascii); // 6文字列内の空白文字を正規化します(全角スペース、タブなどを半角スペースに統一)。
assert_eq!(normalize_whitespace("Hello World"), "Hello World");
assert_eq!(normalize_whitespace("A\t\tB"), "A B");長音記号を正規化します(〜、~をーに統一)。
assert_eq!(normalize_prolonged_sound("コ〜ヒ〜"), "コーヒー");繰り返し記号を展開します。
assert_eq!(expand_iteration_marks("いろゝ"), "いろろ");
assert_eq!(expand_iteration_marks("かゞ"), "かが");- ユーザー入力の正規化
- 検索用のテキスト前処理
- データクリーニング
- レガシーシステムとの連携(半角カタカナ変換)
- 表示用のフォーマット変換
- 日本語テキスト分析
# サンプルプログラムを実行
cargo run --example basic
# テストを実行
cargo test
# ドキュメントを生成
cargo doc --openこのライブラリは、外部依存や複雑なロジックなしにシンプルな文字マッピングを使用しているため、非常に高速でオーバーヘッドが最小限です。
プルリクエストを歓迎します!気軽にご投稿ください。
このプロジェクトは、以下のいずれかのライセンスでデュアルライセンスされています:
- MITライセンス (LICENSE-MIT または http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE または http://www.apache.org/licenses/LICENSE-2.0)
お好みのライセンスをお選びください。
このライブラリは、大規模な日本語テキスト処理ライブラリの軽量な代替として、最も一般的なテキスト正規化のニーズに焦点を当てて作成されました。
A lightweight Rust library for Japanese text normalization, supporting:
- Full-width ⇔ Half-width conversion for ASCII characters
- Katakana ⇔ Hiragana conversion
- Half-width Katakana → Full-width Katakana conversion (with dakuten/handakuten support)
- Character type detection (hiragana, katakana, kanji, etc.)
- Character type counting
- Whitespace normalization
- Prolonged sound mark normalization
- Iteration mark expansion
- Zero dependencies, pure Rust implementation