mirror of
https://github.com/qurator-spk/dinglehopper.git
synced 2025-06-20 09:09:59 +02:00
🚧 dinglehopper: Test aligning by character while retaining segment id info
This commit is contained in:
parent
8435d88419
commit
4cd835ae51
1 changed files with 32 additions and 0 deletions
|
@ -1,6 +1,8 @@
|
|||
import unicodedata
|
||||
import pytest
|
||||
from extracted_text import ExtractedText, ExtractedTextSegment
|
||||
from uniseg.graphemecluster import grapheme_clusters
|
||||
from qurator.dinglehopper import seq_align
|
||||
|
||||
|
||||
def test_text():
|
||||
|
@ -20,3 +22,33 @@ def test_normalization_check():
|
|||
with pytest.raises(ValueError, match=r'.*is not normalized.*'):
|
||||
ExtractedTextSegment('foo', unicodedata.normalize('NFD', 'Schlyñ'))
|
||||
assert ExtractedTextSegment('foo', unicodedata.normalize('NFC', 'Schlyñ'))
|
||||
|
||||
|
||||
def test_align():
|
||||
"""
|
||||
Test aligning by character while retaining segment id info
|
||||
|
||||
The difficulty here is that aligning should work on grapheme clusters,
|
||||
not Python characters.
|
||||
"""
|
||||
|
||||
test1 = ExtractedText([
|
||||
ExtractedTextSegment('s0', 'foo'),
|
||||
ExtractedTextSegment('s1', 'bar'),
|
||||
ExtractedTextSegment('s2', 'bazinga')
|
||||
], ' ')
|
||||
test2 = ExtractedText([
|
||||
ExtractedTextSegment('x0', 'foo'),
|
||||
ExtractedTextSegment('x1', 'bar'),
|
||||
ExtractedTextSegment('x2', '.'), # extra .
|
||||
ExtractedTextSegment('x2', 'bazim̃ga'), # different grapheme cluster, m̃ also is two Python characters
|
||||
], ' ')
|
||||
|
||||
left_pos = 0; right_pos = 0
|
||||
for left, right in seq_align(grapheme_clusters(test1.text), grapheme_clusters(test2.text)):
|
||||
print(left, right, test1.segment_id_for_pos(left_pos), test2.segment_id_for_pos(right_pos))
|
||||
if left is not None:
|
||||
left_pos += len(left)
|
||||
if right is not None:
|
||||
right_pos += len(right)
|
||||
assert False
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue