7 comments

[ 3.4 ms ] story [ 30.9 ms ] thread
(comment deleted)
This is interesting, but the readme doesn't say much about use cases. What is a big application that could benefit from this?
Normalizing strings for comparison, but storing the original source version of the substring that matched or was extracted from the normalized version, useful for search boxes and such. Not sure what their specific use case is, but it's something I've implemented before, so I know it has use cases.
I was confused about the intended use case but there's more information in the docs folder: https://github.com/microsoft/bistring/blob/master/docs/Intro...

Apparently it's for machine learning where you want to pick out a span/substring in the original text but your model can only accept normalized text (I am guessing for stuff like transforming out-of-vocabulary words into UNK/unknown tokens). This solves that problem by keeping track of the index mapping between the original text and transformed text.

(picking out spans is very common task in NLP, for example see the SQuAD dataset: https://rajpurkar.github.io/SQuAD-explorer/explore/v2.0/dev/...)

Took me a minute to comprehend (that the substring bit is the whole point was not obvious, because all string operations in Python are non-destructive regardless) but this is exactly what I imagined given that note. Glad that thought lined up with reality
Yeah that's the idea. I'm not sure exactly how to communicate the purpose of the library in a few words. Possibly some animation that shows selecting spans of text and highlighting the corresponding one in the original text.

The formatted documentation can be viewed here btw: https://bistring.readthedocs.io/en/latest/Introduction.html