Zanim model języka będzie mógł cokolwiek odczytać, tekst musi zostać podzielony na części, które będzie mógł policzyć. Te części to tokeny, a tokenizacja to właśnie dzielenie. Token może być całym słowem, fragmentem, takim jak „ing” lub „pre”, znakiem interpunkcyjnym, a nawet pojedynczym znakiem. Model nigdy nie widzi surowego tekstu; widzi sekwencję identyfikatorów liczb całkowitych przyporządkowanych tym tokenom.
Różne schematy wiążą się z różnymi kompromisami. Tokenizacja na poziomie słów zachowuje znaczenie, ale rozrasta się do milionów rzadkich słów i zmaga się z literówkami. Tokenizacja na poziomie znaków ma niewielki zasób słów, ale generuje bardzo długie sekwencje. Metody podsłowne, takie jak kodowanie par bajtów, znajdują się pomiędzy: zaczynają od znaków i wielokrotnie łączą najczęściej występujące pary, aż do osiągnięcia docelowego rozmiaru słownictwa.
Dlaczego to ważne
- Rozmiar słownika określa tabelę osadzania modelu i zajmowaną pamięć
- Liczba tokenów ustawia okno kontekstowe i koszt każdego wywołania API
- Niewłaściwa tokenizacja dzieli słowa w sposób, który negatywnie wpływa na wydajność wielojęzyczną
- Języki z alfabetem innym niż łaciński często wymagają znacznie większej liczby symboli w zdaniu
Zdanie w języku angielskim może wymagać 20 tokenów; to samo zdanie w języku tajskim lub hindi może wymagać 60 lub więcej tokenów w przypadku tokenizatora zorientowanego na Zachód. Ta nierównowaga wpływa na szybkość, cenę i dokładność dla miliardów użytkowników.
Comments
No comments yet. Be the first to share a thought.
Leave a comment