A MoonBit-native bilingual paragraph and sentence alignment toolkit with dynamic-programming based matching and a practical CLI.
moon check
moon test
moon run cmd/main -- \
--source-text "MoonBit favors stable tooling. MoonAlign builds corpora." \
--target-text "MoonBit 强调稳定工具链。MoonAlign 用来构建语料。" \
--mode sentence \
--format jsonmoon run cmd/main -- \
--source-text "MoonAlign builds bilingual corpora." \
--target-text "MoonAlign 用来构建双语语料。" \
--format tsvmoon run --target wasm-gc cmd/main -- --benchmark///|
test "basic alignment" {
let report = @moonalign.align(
"MoonBit favors maintainable tooling.\n", "MoonBit 强调可维护的工具链。\n",
)
inspect(report.pairs.length(), content="1")
inspect(report.pairs[0].move_kind, content="1-1")
}pub struct AlignOptions {
segment_mode : SegmentMode
max_fan_out : Int
join_penalty : Double
deviation_penalty : Double
min_sentence_chars : Int
preserve_paragraphs : Bool
} derive(Debug)pub struct BenchmarkResult {
name : String
metrics : AlignmentMetrics
warnings : Array[String]
} derive(ToJson, Debug)fn align_texts(source_text : String, target_text : String, options? : AlignOptions) -> AlignmentReportfn align_units(source_units : Array[TextUnit], target_units : Array[TextUnit], options? : AlignOptions) -> AlignmentReportfn align_with_mode(source_text : String, target_text : String, mode? : SegmentMode) -> AlignmentReportfn gold_pair(source_start~ : Int, source_end~ : Int, target_start~ : Int, target_end~ : Int) -> GoldPairA MoonBit-native bilingual paragraph and sentence alignment toolkit with dynamic-programming based matching and a practical CLI.