Repository navigation
fix(tokenizers): return extractors in a stable order - #353
Open
jamalkamaladdin wants to merge 2 commits into
Open
jamalkamaladdin wants to merge 2 commits into
jamalkamaladdin wants to merge 2 commits into
Conversation
AhocorasickTokenizer.get_extractors returned a set, so extractors ran in hash order. When several extractors matched the same span, the first token won, and the result depended on PYTHONHASHSEED. Sort the selected extractors by their position in EXTRACTORS, the same order the base Tokenizer uses. Fixes freelawproject#352
|
Tested the head (f54f57f) against eyecite 2.7.8's |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes
Fixes #352
Summary
AhocorasickTokenizer.get_extractorsreturned a set. Set order depends onPYTHONHASHSEED. For37 T.C. at 155, one full cite token and two short cite tokens share one span.tokenizetakes the first of them.get_extractorsnow sorts selected extractors by their index inEXTRACTORS. BaseTokenizeruses the same order.37 T.C. at 155now yields aShortCaseCitationon every seed.New test
test_extractor_order_is_stableintests/test_TokenizeTest.pychecks extractor order and the short cite token. Added aCHANGES.mdentry.AI Disclosure