Repository navigation
fix: Inconsistent Token Alignment Between Fast and Slow Tokenizers - #426
mayuriphad wants to merge 1 commit into
Conversation
…ate alignment with fast tokenizers
|
Hi maintainers, a gentle ping on this PR whenever you have a moment to review. I'm happy to make any changes or add tests if something needs adjusting. Thank you for your time! |
|
Hi, just a gentle ping on this PR. It's ready for review whenever you have time, and I'm happy to make any changes you'd like. Thanks! |
|
Thanks a lot for tracking this down — the diagnosis was spot on: the Removing the I've opened #429, which keeps the trailing-space mapping only as a fallback for wordpieces that don't overlap any token characters, with regression tests. You're credited as co-author on the commit. Closing this in favour of that one — thanks again! |
Fixes explosion/spaCy#13730
When using fast tokenizers (like DeBERTa), the alignment IDs were being duplicated across adjacent spaCy tokens. This happened because char_to_sp_token mapped the trailing whitespace (which isn't part of the oken.text) to the preceding token.
Fast tokenizers often produce offset_mapping that includes the preceding space for wordpieces (e.g. _word). When that space character mapped to the previous token, the wordpiece was aligned to BOTH the previous token and the current token, resulting in duplicate alignments (�lign_lengths = 2).
This patch removes the + 1 from the range loop so that trailing spaces are not mapped to the preceding token. Wordpieces will only align to tokens whose non-whitespace characters they overlap with.