Šķîþ ţö ḿàîñ çöñţéñţ

Šéĝḿéñţàţîöñ

Šéĝḿéñţàţîöñ îš à ḿéàñš: àüţĥöŕš đöñ'ţ šéţ öüţ "ţö šéĝḿéñţ," ţĥéý ŵàñţ ţĥéîŕ þàšţ ţŕàñšļàţîöñš ŕéüšéđ àñđ éàçĥ šéñţéñçé ţŕàñšļàţéđ àñđ çĥéçķéđ öñ îţš öŵñ. Šéĝḿéñţàţîöñ îš ŵĥàţ ḿàķéš ƃöţĥ þöššîƃļé: çöñţéñţ ḿéḿöŕý îš à šţöŕé öƒ šéĝḿéñţ þàîŕš, šö ƃöüñđàŕîéš àŕé ŵĥàţ ļéţ þŕîöŕ šéñţéñçéš ḿàţçĥ, àñđ þéŕ-šéĝḿéñţ ţŕàñšļàţîöñ àñđ çĥéçķš ķééþ éàçĥ üñîţ šḿàļļ àñđ à ƒîñđîñĝ þîññéđ ţö ţĥé šéñţéñçé ţĥàţ ƃŕöķé. Ţĥîš þàĝé îš ţĥé éñĝîñé ŕéƒéŕéñçé ƒöŕ ţĥé ƒŕàḿéŵöŕķ üšéŕš ŵĥö çöñƒîĝüŕé ţĥàţ ƃéĥàṽîöŕ.

Îţ đîṽîđéš à ƃļöçķ'š šöüŕçé îñţö ţĥé üñîţš à ţŕàñšļàţöŕ öŕ ḿöđéļ ŵöŕķš öñ, üšüàļļý šéñţéñçéš. Îñ neokapi šéĝḿéñţàţîöñ îš à ŕüñ-àñçĥöŕéđ šţàñđ-öƒƒ öṽéŕļàý ŕàţĥéŕ ţĥàñ à šţŕüçţüŕàļ šþļîţ: ţĥé ƃöüñđàŕîéš àŕé ŕéçöŕđéđ àš šþàñš öṽéŕ ţĥé éẋîšţîñĝ ŕüñš, àñđ ţĥé šöüŕçé ŕüñš ţĥéḿšéļṽéš àŕé ñéṽéŕ ŕéŵŕîţţéñ (Ƒ-02: Çöñţéñţ Ḿöđéļ). À ƃļöçķ çàñ çàŕŕý šéṽéŕàļ šéĝḿéñţàţîöñ ļàýéŕš àţ öñçé, àñđ ŕéḿöṽîñĝ ţĥé öṽéŕļàý ŕéšţöŕéš ţĥé üñšéĝḿéñţéđ ƃļöçķ éẋàçţļý.

šéĝḿéñţ (öṽéŕļàý öñļý; šöüŕçé ŕüñš üñçĥàñĝéđ)Block source"Dr. Smith arrived. He was late."segmentation overlayanchored to run-index rangessegment[0, 18) · "Dr. Smith arrived."segment[19, 31) · "He was late."

Ƃéçàüšé šéĝḿéñţàţîöñ îš àñ öṽéŕļàý ŕàţĥéŕ ţĥàñ àñ éđîţ, îţ îš à çĥéçķ-ļîķé àññöţàţîöñ: îţ îš þŕöđüçéđ àƒţéŕ àñý ţŕàñšƒöŕḿéŕš ĥàṽé šéţţļéđ ţĥé šöüŕçé, šö éṽéŕý ƃöüñđàŕý îš àñçĥöŕéđ ţö ţĥé çàñöñîçàļ ŕüñš ţĥàţ ţŕàñšļàţîöñ àñđ çöñţéñţ ḿéḿöŕý ŵîļļ àļšö šéé. ΃ à ļàţéŕ ţŕàñšƒöŕḿéŕ đöéš ŕéŵŕîţé ţĥé šöüŕçé, ţĥé ƒŕàḿéŵöŕķ àþþļîéŕ ŕéƃàšéš ţĥé ƃöüñđàŕîéš öñţö ţĥé ñéŵ ŕüñš.

Ŵĥý šţàñđ-öƒƒ

À šţŕüçţüŕàļ šþļîţ ƒöŕçéš à çĥöîçé àţ þàŕšé ţîḿé àñđ îš ļöššý: ŕé-ĵöîñîñĝ šéĝḿéñţš ţö ŕéçöṽéŕ ţĥé öŕîĝîñàļ þàŕàĝŕàþĥ îš ƒîđđļý, àñđ îñļîñé ḿàŕķüþ ţĥàţ šţŕàđđļéš à ƃöüñđàŕý ĥàš ţö ƃé đüþļîçàţéđ. Àñ öṽéŕļàý àṽöîđš ƃöţĥ. Ţĥé šàḿé ƃļöçķ çàñ ĥöļđ:

  • à šéñţéñçé ļàýéŕ ƒöŕ ţŕàñšļàţîöñ àñđ ḿéḿöŕý ļööķüþ,
  • à çöàŕšéŕ çļàüšé öŕ çĥüñķ ļàýéŕ ƒöŕ àñ ĻĻḾ ţĥàţ þŕéƒéŕš ļàŕĝéŕ üñîţš,

àñđ à ţööļ ţĥàţ îĝñöŕéš šéĝḿéñţàţîöñ šţîļļ šééš à çļéàñ, ŵĥöļé ƃļöçķ. Ƃîļîñĝüàļ ƒöŕḿàţš ţĥàţ ñééđ šţàñđàļöñé šéĝḿéñţš (ẊĻÎƑƑ <mrk>, ŢḾẊ-šţýļé þàîŕš) ḿàţéŕîàļîžé ţĥéḿ ƒŕöḿ ţĥé þŕîḿàŕý ļàýéŕ àţ þŕöĵéçţîöñ ţîḿé; ţĥé îñ-ḿéḿöŕý ḿöđéļ ķééþš ţĥé ŕüñš îñţàçţ.

Éñĝîñéš

Ţĥé segmentation ţööļ šéļéçţš à šéĝḿéñţéŕ ƃàçķéñđ ƃý ñàḿé ţĥŕöüĝĥ --engine. Éàçĥ éñĝîñé ŵŕîţéš ţĥé šàḿé öṽéŕļàý; ţĥéý đéŕ îñ ĥöŵ ţĥéý ƒîñđ ƃöüñđàŕîéš àñđ ŵĥàţ ţĥéý çöšţ ţö ŕüñ.

ÉñĝîñéƂöüñđàŕý šöüŕçéÑééđšÜšé îţ ŵĥéñ
srx (đéƒàüļţ)ŠŔẊ 2.0 ŕüļéš: ţĥé ƒüļļ ŕüļéšéţ öṽéŕ à ÜÀẊ-29 ƃàšé ŵĥéŕé ÎÇÜ îš ļîñķéđ, à ŕéđüçéđ þüŕé-Ĝö ŕüļéšéţ öţĥéŕŵîšéñöţĥîñĝ (þüŕé Ĝö); üšéš ÎÇÜ ŵĥéñ þŕéšéñţÝöü ŵàñţ đéţéŕḿîñîšţîç, ļàñĝüàĝé-ţüñàƃļé šéñţéñçé ƃöüñđàŕîéš, ţĥé îñđüšţŕý-šţàñđàŕđ ŕüļé ƒöŕḿàţ.
uax29Üñîçöđé ÜÀẊ-29 šéñţéñçé ŕüļéš (ÎÇÜ)çĝö + ÎÇÜÝöü ŵàñţ ţĥé ƃàŕé Üñîçöđé ƃàšéļîñé ŵîţĥ ñö éẋçéþţîöñ ŕüļéš àñđ ÎÇÜ îš àṽàîļàƃļé.
llmÀñ ĻĻḾ àšķéđ ţö çĥüñķ šéḿàñţîçàļļýàñ ĻĻḾ þŕöṽîđéŕÝöü ŵàñţ ḿéàñîñĝ-àŵàŕé çĥüñķš (ļöñĝ-ƒöŕḿ þŕöšé, ḿîẋéđ çöñţéñţ) ŕàţĥéŕ ţĥàñ šéñţéñçé ƃöüñđàŕîéš.
satŢĥé ŵţþšþļîţ Šéĝḿéñţ àñý Ţéẋţ ÖÑÑẊ ḿöđéļţĥé kapi-sat þļüĝîñÝöü ñééđ ŕöƃüšţ ḿüļţîļîñĝüàļ öŕ üñþüñçţüàţéđ-ţéẋţ šéĝḿéñţàţîöñ ţĥàţ ŕüļéš ĥàñđļé þööŕļý.

srx, uax29 àñđ sat þŕöđüçé à šéñţéñçé ļàýéŕ; llm þŕöđüçéš àñ llm-chunk ļàýéŕ. Ļéàṽé --layer éḿþţý ţö àççéþţ ţĥé éñĝîñé'š ñàţüŕàļ ļàýéŕ, öŕ šéţ îţ ţö ķééþ šéṽéŕàļ ļàýéŕš šîđé ƃý šîđé.

ŠŔẊ: ţĥé đéƒàüļţ

ŠŔẊ (Šéĝḿéñţàţîöñ Ŕüļéš éẊçĥàñĝé) îš ţĥé ĜÀĻÀ/ĻΊÀ šţàñđàŕđ ƒöŕ šéñţéñçé šéĝḿéñţàţîöñ: àñ öŕđéŕéđ ļîšţ öƒ ƃŕéàķ àñđ ñö-ƃŕéàķ ŕüļéš, šçöþéđ ƃý ļàñĝüàĝé. neokapi šĥîþš à ƒàîţĥƒüļ þüŕé-Ĝö ŠŔẊ 2.0 ŕüļé éñĝîñé, šö îţ ŕüñš éṽéŕýŵĥéŕé ŵîţĥ ñö ñàţîṽé đéþéñđéñçîéš, îñçļüđîñĝ îñ ţĥé ƃŕöŵšéŕ.

Ĥýƃŕîđ ƃý đéƒàüļţ, þüŕé-Ĝö éṽéŕýŵĥéŕé

ŠŔẊ šéĝḿéñţàţîöñ îñ þŕàçţîçé îš à ĥýƃŕîđ: ÎÇÜ'š ÜÀẊ-29 ƃŕéàķéŕ þŕöþöšéš ţĥé šéñţéñçé ƃöüñđàŕîéš àñđ ţĥé ŠŔẊ ŕüļéšéţ îš àþþļîéđ öñ ţöþ àš éẋçéþţîöñš: ţĥé đéƒàüļţ ŕüļéšéţ îš öṽéŕŵĥéļḿîñĝļý ñö-ƃŕéàķ ŕüļéš, šçöþéđ þéŕ ļàñĝüàĝé, ŵîţĥ öñļý à ĥàñđƒüļ öƒ ƃŕéàķ ŕüļéš. neokapi îḿþļéḿéñţš ţĥîš ĥýƃŕîđ đîŕéçţļý:

  • Ŵĥéŕé ÎÇÜ îš ļîñķéđ (éṽéŕý šĥîþþéđ ñàţîṽé ƃîñàŕý: ÇĻÎ, đéšķţöþ, šéŕṽéŕ), ţĥé srx đéƒàüļţ ļöàđš ţĥé ƒüļļ đéƒàüļţ ŕüļéšéţ àñđ ŕüñš ţĥé ÎÇÜ-ƃàšé + ŠŔẊ-éẋçéþţîöñ ĥýƃŕîđ, ṽéŕîƒîéđ àĝàîñšţ à þéŕ-ļàñĝüàĝé ĝöļđéñ çöŕþüš.
  • Ŵĥéŕé ÎÇÜ îš ñöţ ļîñķéđ (ţĥé ƃŕöŵšéŕ/ŴÀŠḾ ƃüîļđ, þüŕé-Ĝö šöüŕçé ƃüîļđš), ţĥé šàḿé srx éñĝîñé ƒàļļš ƃàçķ ţö à ŕéđüçéđ, šéļƒ-çöñţàîñéđ ŕüļéšéţ ŵîţĥ éẋþļîçîţ ƃŕéàķ ŕüļéš, ŵîţĥ ñö ÎÇÜ ñééđéđ. Îţ îš ļîĝĥţéŕ ţĥàñ ţĥé ƒüļļ šéţ ƃüţ šţîļļ ĥàñđļéš ţĥé çöḿḿöñ àƃƃŕéṽîàţîöñš, đéçîḿàļš, àñđ îñîţîàļš, àñđ îţ îš ţĥé öñļý šéĝḿéñţéŕ ţĥàţ ŕüñš îñ ţĥé ƃŕöŵšéŕ.

Ýöü đöñ'ţ çĥööšé ƃéţŵééñ ţĥéšé: ţĥé srx éñĝîñé þîçķš ţĥé ŕîĝĥţ þàţĥ ƒöŕ ţĥé ƃüîļđ. Ţĥé ŕéšüļţ îš ƒüļļ-ƒîđéļîţý ŠŔẊ šéĝḿéñţàţîöñ ŵĥéŕé ÎÇÜ îš àṽàîļàƃļé, àñđ à þüŕé-Ĝö àþþŕöẋîḿàţîöñ éṽéŕýŵĥéŕé éļšé.

Ţö ţüñé ƃöüñđàŕîéš (þŕöţéçţ à đöḿàîñ àƃƃŕéṽîàţîöñ, šþļîţ öñ à çüšţöḿ ḿàŕķéŕ), þöîñţ ţĥé éñĝîñé àţ ýöüŕ öŵñ ŠŔẊ ƒîļé (àñ éẋþļîçîţ --rules-path öṽéŕŕîđéš ţĥé àđàþţîṽé đéƒàüļţ îñ éîţĥéŕ ḿöđé):

kapi exec segmentation src/locales/en.json --engine srx \
--rules-path .kapi/rules.srx

Öñé ƒîļé šéŕṽéš ƃöţĥ šîđéš: ŠŔẊ ŕüļéš àŕé ķéýéđ ƃý ļàñĝüàĝé, šö ţĥé šàḿé ŕüļéšéţ šüþþļîéš ţĥé šöüŕçé ŕüļéš àñđ, ŵĥéñ --segment-target îš šéţ, ţĥé ţàŕĝéţ ŕüļéš.

Ƒöŕ à ǫüîçķ, ƒîļé-ƒŕéé ţŵéàķ ţĥé ţööļ àļšö àççéþţš àñ îñļîñé rules: ļîšţ îñ îţš çöñƒîĝ (ƃŕéàķ / ñö-ƃŕéàķ ŕéĝéẋ þàîŕš); àñ îñļîñé ļîšţ öṽéŕŕîđéš ţĥé éñĝîñé šéļéçţîöñ. Ƒöŕ àñýţĥîñĝ ƃéýöñđ à ŕüļé öŕ ţŵö, þŕéƒéŕ à ŕéàļ ŠŔẊ ƒîļé ŵîţĥ --rules-path, šö ţĥé ŕüļéš àŕé þöŕţàƃļé àñđ šĥàŕéàƃļé.

ŠàŢ: ţĥé ḾĻ šéĝḿéñţéŕ

Ţĥé sat éñĝîñé ŕüñš ŵţþšþļîţ Šéĝḿéñţ àñý Ţéẋţ ḿöđéļš (ẊĻḾ-ŔöƂÉŔŢà-ƃàšéđ ÖÑÑẊ) ţĥŕöüĝĥ ţĥé öüţ-öƒ-þŕöçéšš kapi-sat þļüĝîñ, šö îţš ñàţîṽé ḾĻ šţàçķ ñéṽéŕ éñţéŕš ţĥé kapi ƃîñàŕý. Îţ îš ţĥé ŕîĝĥţ çĥöîçé ƒöŕ ţéẋţ ţĥàţ ŕüļé éñĝîñéš šéĝḿéñţ þööŕļý: ļàñĝüàĝéš ŵîţĥöüţ ŕéļîàƃļé šéñţéñçé þüñçţüàţîöñ, üšéŕ-ĝéñéŕàţéđ öŕ ţŕàñšçŕîƃéđ ţéẋţ, àñđ ḿîẋéđ-šçŕîþţ çöñţéñţ. Ţĥé þļüĝîñ ḿüšţ ƃé îñšţàļļéđ (kapi plugin install kapi-sat) ƃéƒöŕé ţĥé éñĝîñé îš àṽàîļàƃļé; öñçé îţ îš, ţĥé þļüĝîñ'š öŵñ öþţîöñš àþþéàŕ öñ kapi exec segmentation: --sat-model šéļéçţš à ḿöđéļ (é.ĝ. sat-3l-sm ƒöŕ šþééđ, sat-12l-sm ƒöŕ àççüŕàçý) àñđ --threshold ḿàķéš ƃöüñđàŕîéš ḿöŕé öŕ ļéšš éàĝéŕ. Šéé Ḿ-02: ŠàŢ Šéĝḿéñţéŕ Þļüĝîñ ƒöŕ ţĥé þŕöţöçöļ àñđ îšöļàţîöñ đéšîĝñ.

ÇĻÎ üšàĝé

kapi exec segmentation àññöţàţéš ƒîļéš îñ þļàçé ŵîţĥ à šéĝḿéñţàţîöñ öṽéŕļàý:

# Sentence-segment the source with the default SRX engine
kapi exec segmentation src/locales/en.json

# Use a custom SRX rule file
kapi exec segmentation README.md --engine srx --rules-path .kapi/rules.srx

# Semantic chunks via an LLM provider
kapi exec segmentation docs/guide.md --engine llm --provider anthropic

# ML segmentation with SaT (options supplied by the kapi-sat plugin)
kapi exec segmentation transcript.txt --engine sat --sat-model sat-3l-sm

Üšéƒüļ ƒļàĝš: --segment-source (đéƒàüļţ ţŕüé) / --segment-target ţö çĥööšé ŵĥîçĥ šîđé ţö šéĝḿéñţ, àñđ --overwrite-segmentation ţö ŕé-šéĝḿéñţ ƃļöçķš ţĥàţ àļŕéàđý çàŕŕý àñ öṽéŕļàý. Éàçĥ šéĝḿéñţ îš ţŕîḿḿéđ öƒ ļéàđîñĝ/ţŕàîļîñĝ ŵĥîţéšþàçé ƃý đéƒàüļţ, šö à šéĝḿéñţ îš ţĥé çļéàñ šéñţéñçé àñđ ţĥé îñţéŕ-šéñţéñçé ŵĥîţéšþàçé îš ļéƒţ üñçöṽéŕéđ (ķééþîñĝ ḿéḿöŕý ķéýš šţàƃļé, ŕéĝàŕđļéšš öƒ ŵĥîçĥ éñĝîñé ŕàñ); þàšš --trim-leading-whitespace=false / --trim-trailing-whitespace=false ţö ķééþ ţĥé ŕàŵ šüŕŕöüñđîñĝ ŵĥîţéšþàçé. kapi stats ŕéþöŕţš šéĝḿéñţ ţöţàļš ŵîţĥöüţ çĥàñĝîñĝ ţĥé çöñţéñţ; ƒöŕ þéŕ-ƃļöçķ šéĝḿéñţ đéţàîļ, üšé kapi inspect. Ƒöŕ éṽéŕý ƒļàĝ, šéé ţĥé çöḿḿàñđ ŕéƒéŕéñçé.

Îñ à ƒļöŵ àñđ à ŕéçîþé

Šéĝḿéñţàţîöñ îš à ñöŕḿàļ àññöţàţîöñ šţàĝé. Þüţ îţ àĥéàđ öƒ ţŕàñšļàţîöñ šö éàçĥ šéĝḿéñţ ţŕàñšļàţéš àš îţš öŵñ üñîţ àñđ ḿéḿöŕý ļööķüþ ķéýš öñ šéñţéñçéš:

steps:
- tool: segmentation # mark sentence boundaries
config:
engine: srx
- tool: recycle # reuse prior sentence translations
- tool: translate # translate the remainder

Îñ à kapi.yaml þŕöĵéçţ ţĥé šàḿé šţàĝé ļîṽéš îñ à ñàḿéđ ƒļöŵ, šö éṽéŕý ŕüñ šéĝḿéñţš çöñšîšţéñţļý àñđ ţĥé ƃöüñđàŕîéš ƒééđ ţĥé þŕöĵéçţ'š çöñţéñţ ḿéḿöŕý.

Ĥöŵ šéĝḿéñţàţîöñ ƒééđš ţĥé ŕéšţ öƒ ţĥé þîþéļîñé

  • Çöñţéñţ ḿéḿöŕý: ḿéḿöŕý îš à šţöŕé öƒ šéĝḿéñţ þàîŕš, šö šéĝḿéñţàţîöñ îš ŵĥàţ ḿàķéš þŕîöŕ šéñţéñçé ţŕàñšļàţîöñš ŕéüšàƃļé. Šéĝḿéñţ, ţĥéñ recycle ḿàţçĥéš šéñţéñçé ƃý šéñţéñçé: ŵĥéñ à ƃļöçķ çàŕŕîéš à ḿüļţî-šéĝḿéñţ öṽéŕļàý, éàçĥ šéñţéñçé îš ļööķéđ üþ àĝàîñšţ ḿéḿöŕý àñđ ţĥé ƃļöçķ ţàŕĝéţ îš àššéḿƃļéđ ƒŕöḿ ţĥé þéŕ-šéĝḿéñţ ḿàţçĥéš, šö à þàŕàĝŕàþĥ ŵĥöšé šéñţéñçéš ŵéŕé ţŕàñšļàţéđ ƃéƒöŕé îš ļéṽéŕàĝéđ éṽéñ ţĥöüĝĥ ţĥé þàŕàĝŕàþĥ àš à ŵĥöļé ŵàš ñéṽéŕ à šîñĝļé éñţŕý.
  • ÀÎ ţŕàñšļàţîöñ: ţŕàñšļàţîñĝ þéŕ šéĝḿéñţ ķééþš éàçĥ üñîţ šḿàļļ àñđ šéļƒ-çöñţàîñéđ, ŵĥîçĥ îḿþŕöṽéš çöñšîšţéñçý àñđ ļéţš þàŕţîàļ ḿàţçĥéš àñđ ƒüļļ-šéĝḿéñţ ḿàţçĥéš çöéẋîšţ îñ öñé ƃļöçķ.
  • Çĥéçķš: ļéñĝţĥ, çöñšîšţéñçý, àñđ öţĥéŕ çĥéçķš öþéŕàţé þéŕ šéĝḿéñţ ŵĥéñ àñ öṽéŕļàý îš þŕéšéñţ, šö à ƒîñđîñĝ þöîñţš àţ ţĥé öƒƒéñđîñĝ šéñţéñçé ŕàţĥéŕ ţĥàñ ţĥé ŵĥöļé ƃļöçķ.

Šéĝḿéñţàţîöñ àñđ ţéŕḿîñöļöĝý àŕé ŕüñ-àñçĥöŕéđ öṽéŕļàýš ţĥàţ þŕéþàŕé à šöüŕçé ƒöŕ ţŕàñšļàţîöñ; šéé Çöñţéñţ þŕéþàŕàţîöñ ƒöŕ ĥöŵ ţĥéý çöḿþöšé îñţö öñé àüţĥöŕîñĝ þàšš.