Handle long sequences
Na etapie przetwarzania każda sekwencja jest przycinana do max_sequence_length
. Dla dłuższego wejścia tokeny powyżej tego limitu nie zostają przetworzone, co może skutkować brakiem rozpoznania anotacji.
Należy zastosować następujący algorytm podziału sekwencji wejściowej i łączenia wyników:
- Jeżeli sekwencja jest krótsza niż max_sequence_length to przetwarzamy ją w jednym batchu.
- Jeżeli jest dłuższa, to dzielimy ją na n sekwencji, przy czym kolejna sekwencja pokrywa się w 1/2 z poprzednią sekwencją.
Na przykład, przymując, że max_sequence_length=8, a każdy znak to pojedynczy subword:
Sekwencja
1234567890abcdefgh
zostanie podzielona na sekwencje:
12345678
567890ab
90abcdef
cdefgh__
Wyniki tagowania dla kolejnych sekwencji będą redundante poprzez zasosowanie zakładki, a w skrajnych przypadkach mogą się różnić. Dlatego przy składaniu wyniku w jedną sekwencję należy pomijać skrajne tokeny (1/4). Nie dotyczy to początku pierwszej i końca ostatniej sekwencji, ponieważ dla nich nie ma redundancji.
12345678
567890ab
90abcdef
cdefgh__
Tokeny do pominięcia w kolejnych sekwencja zostały zastąpione kropką:
123456..
..7890..
..abcd..
..efgh__