krickert commented on PR #1155:
URL: https://github.com/apache/opennlp/pull/1155#issuecomment-4940250726

   Thanks, every finding is addressed in 69ead686. Point by point:
   
   - SynsetRelation relType="other": now skipped exactly like the SenseRelation 
case (documented skip, not rejection), applied at parse time. A test covers the 
SynsetRelation case alongside the existing SenseRelation one.
   - posFromTag over-matching: the WordNet letter codes a and s match only when 
tag.length() == 1, so AUX, ADP, SCONJ, and SYM map to no part of speech and 
yield the unknown marker. The tag-mapping test pins all four, lemmatizer-level 
cases pin that AUX "was" is unknown and AUX "taller" no longer detaches to 
"tall", and the javadoc matches the implementation.
   - Root pom and distribution wiring: opennlp-wordnet is in the root 
dependencyManagement, in opennlp-distr's dependencies, and in the bin 
assembly's apidocs fileSets, mirroring opennlp-spellcheck.
   - Exception contract: all three loading entry points (WndbReader.read, 
WnLmfReader.read, MorphyExceptions.load) declare IOException; malformed content 
raises InvalidFormatException, matching DictionaryLemmatizer and the model 
loaders, while null and argument validation stays IllegalArgumentException. A 
failing-stream test pins that an underlying I/O error surfaces as IOException 
rather than a malformed-document report.
   - similar-on-verb to VERB_GROUP: covered in both readers. WN-LMF parses an 
inline document with similar between two verb synsets and asserts VERB_GROUP 
with SIMILAR_TO absent; WNDB builds a minimal database in a temp directory with 
programmatically computed byte offsets so the $ pointer resolves, asserting 
VERB_GROUP in both directions.
   - Duplicate Sense and LexicalEntry ids: both fail loud with 
InvalidFormatException naming the id, symmetric with the duplicate-synset 
check; tests for both.
   - WordNetPos naming: renamed to WordNetPOS across the API and the module, 
consistent with POSTagger and POSModel.
   - Synset record components: kept as the deliberate v1 contract. Per-sense 
data and lexicographer files are reader-level concerns the seam intentionally 
omits; a later addition arrives as a new canonical constructor with the old one 
kept as a documented overload, the standard record-evolution path.
   - Relation-target id duplication: relation resolution in both readers stores 
the synset table's canonical id instance per target, collapsing a full 
lexicon's pointer strings to the table's instances; tests assert instance 
identity between a related() target and the target synset's id() in both 
readers.
   - InMemoryWordNetLexicon validation: direct constructor tests for key/id 
mismatch, dangling relation target, sense-order entry referencing an unknown 
synset, null maps, and the accepting case.
   - RawPointer.lineNumber: now used; dangling-pointer errors report the 
pointer's own line, tested.
   - Fold and split duplication: extracted into a package-private LemmaFolding 
helper used by MorphyExceptions, the lexicon's lemma key, and the WN-LMF 
members parsing, with a test pinning the fold and the key/query agreement.
   - Untested WN-LMF fail-loud paths: tests for duplicate synset id, 
synset/member POS mismatch, SenseRelation to an undeclared sense, Lemma outside 
LexicalEntry, Sense before Lemma, SenseRelation outside Sense, and 
SynsetRelation outside Synset.
   
   Module tests go from 86 to 112; reactor verify is clean.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to