Kristian Rickert created OPENNLP-1875:
-----------------------------------------

             Summary: UCD-back the whitespace predicates: migrate user-text 
call sites, freeze the documented exceptions
                 Key: OPENNLP-1875
                 URL: https://issues.apache.org/jira/browse/OPENNLP-1875
             Project: OpenNLP
          Issue Type: Improvement
    Affects Versions: 3.0.0-M4
            Reporter: Kristian Rickert
            Assignee: Kristian Rickert
             Fix For: 3.0.0-M5


h2. Summary

OPENNLP-1850 established standards-sourced character classes as a design goal 
(the {{CharClass}} engine reads the UCD {{White_Space}} and {{Dash}} sets, not 
{{Character.isWhitespace}} or a regex class), but the rest of the codebase has 
not caught up: {{StringUtil}} still uses the JVM {{Character.isWhitespace}} 
predicate, and several call sites split or scan user text with 
{{{}split("{}}}{{{}s+"){}}} or {{{}Character.isWhitespace{}}}.

This ticket migrates the whitespace predicate in {{StringUtil}} to the UCD 
{{White_Space}} set (or documents the intentional exception where JVM semantics 
are genuinely wanted), and audits and converts the remaining user-text call 
sites. This is a behavior change and carries an explicit release note, because 
the UCD {{White_Space}} set and {{Character.isWhitespace}} disagree on real 
code points: {{White_Space}} includes the no-break space U+00A0 and the figure 
and narrow spaces that {{Character.isWhitespace}} excludes, and excludes the 
U+001C to U+001F information separators that {{Character.isWhitespace}} 
includes. OPENNLP-205 already made exactly this correction in the 
sentence-detector mapping, so this generalizes that fix.
h2. Scope
 * Audit {{{}split("{}}}{{{}s+"){}}}, {{{}Character.isWhitespace{}}}, and 
{{Character.isSpaceChar}} call sites across the codebase outside the 
OPENNLP-1850 engine. Classify each as user text (migrate to the UCD set) or 
config and non-user-text (leave; regex and JVM predicates are acceptable there 
per the design goals).
 * Migrate the whitespace handling in {{StringUtil}} to the UCD-backed 
{{White_Space}} API delivered in OPENNLP-1850, or document the intentional JVM 
exception with a rationale where a caller genuinely needs JVM semantics (for 
example a format-fixed parser).
 * Add a release note in the 3.0 migration section describing the delta: NBSP 
and the Unicode space separators now count as whitespace; the U+001C to U+001F 
information separators no longer do.

h2. Acceptance criteria
 * The {{StringUtil}} whitespace predicate is UCD-backed, or the JVM exception 
is documented with a rationale.
 * The call-site audit is complete: user-text paths use the UCD set, and every 
retained regex or JVM predicate on a text path is justified in a comment.
 * A release note documents the behavior delta at the boundary code points 
(NBSP, the space separators, the information separators).
 * Tests pin the delta at those boundary code points.

h2. Out of scope
 * The OPENNLP-1850 engine itself, which is already UCD-backed.

 * Regex in config parsing and other non-user-text utilities, which the design 
goals permit.

 * The legacy {{CharSequenceNormalizer}} regex migration, which is a separate 
ticket.

 * Changing tokenizer or sentence-detector feature generation (model stability).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to