SoMaJo icon indicating copy to clipboard operation
SoMaJo copied to clipboard

Fix measurement unit overlap with abbreviation

Open palomena opened this issue 5 months ago • 2 comments

This pull request fixes an issue with overlapping tokens in tokenizer.py. The issue is that the tokenizer first splits on all measurement units and afterwards on abbreviations. However in the case of overlap between measurement units and abbreviations e.g. due to custom additions to the units.txt or abbreviations.txt, the abbreviation cannot be handled anymore.
Concrete example:

In Abs. 2 S. 4 beschreibt der Autor das Balzverhalten von Einhörnern.

Conflicts between custom abbreviation for sentence references S. and unit s (seconds). Similar conflicts may arise for all other units that may double as abbreviation and appear in the context of digits or numbers. Since no unit in units.txt has a dot . as suffix, we can use a negative dot lookahead to differentiate between units and abbreviations and resolve such conflicts. This will break if units with a dot get added to the units file, but to my knowledge that scenario is unlikely (but should be documented somewhere).

palomena avatar Jul 08 '25 16:07 palomena

I see there are some issues with the tests now, i. e. sentences ending with a measurement unit such as "[...] km/h.". I'll think about a fix to that problem and will edit my PR accordingly.

palomena avatar Jul 09 '25 12:07 palomena

Yeah, this would break things like "Es sind noch ungefähr 5km." At a first glance this might turn out to be tricky.

tsproisl avatar Jul 09 '25 12:07 tsproisl