OpenAI
Šo lapu tulkoja mašīntulks. Skatīt oriģinālo rakstu angļu valodā.

Kas ir tekstvienības un kā tās skaitīt?

Atjaunināts: 8 days ago

Kas ir tekstvienības?

Tekstvienības ir teksta pamatelementi, ko apstrādā OpenAI modeļi. Tās var būt tik īsas kā viena rakstzīme vai tik garas kā vesels vārds atkarībā no valodas un konteksta. Atstarpes, pieturzīmes un vārdu daļas — tas viss ietekmē tekstvienību skaitu. Šādi API iekšēji segmentē jūsu tekstu pirms atbildes ģenerēšanas.

Noderīgi orientieri angļu valodai:

  • 1 tekstvienība ≈ 4 rakstzīmes

  • 1 tekstvienība ≈ ¾ vārda

  • 100 tekstvienības ≈ 75 vārdi

  • 1–2 teikumi ≈ 30 tekstvienības

  • 1 rindkopa ≈ 100 tekstvienības

  • ~1500 vārdu ≈ 2048 tekstvienības

Dalīšana tekstvienībās atšķiras atkarībā no modeļa un kodējuma. Izmantojiet Tokenizer rīku vai tiktoken.encoding_for_model(model), lai iegūtu precīzu skaitu savam mērķa modelim.

Piemēri

Tālāk ir daži reāli teksta paraugi ar aptuveno tekstvienību skaitu:

  • Veina Grecka citāts “Tu netrāpi 100% metienu, kurus neizdari” = 11 tekstvienības

  • OpenAI harta = 476 tekstvienības

  • ASV Neatkarības deklarācija = 1695 tekstvienības

Kā tiek aprēķināts tekstvienību skaits

Kad nosūtāt tekstu API:

  1. Teksts tiek sadalīts tekstvienībās.

  2. Modelis apstrādā šīs tekstvienības.

  3. Atbilde tiek ģenerēta kā tekstvienību secība un pēc tam pārvērsta atpakaļ tekstā.

Tekstvienību lietojums tiek uzskaitīts vairākās kategorijās:

  • Ievades tekstvienības – tekstvienības jūsu pieprasījumā.

  • Izvades tekstvienības – atbildē ģenerētās tekstvienības.

  • Kešotās tekstvienības – atkārtoti izmantotas tekstvienības sarunas vēsturē (bieži ar samazinātu maksu).

  • Spriestspējas tekstvienības – dažos progresīvos modeļos pirms gala izvades izveides iekšēji tiek iekļauti papildu “domāšanas soļi”.

Šie skaitļi parādās jūsu API atbildes metadatos un tiek izmantoti norēķiniem un lietojuma uzskaitei.

Lai padziļināti izpētītu dalīšanu tekstvienībās, varat izmantot mūsu interaktīvo Tokenizer rīku, kas ļauj aprēķināt tekstvienību skaitu un redzēt, kā teksts tiek sadalīts tekstvienībās.

Alternatīvi, ja vēlaties dalīt tekstu tekstvienībās programmatiski, izmantojiet Tiktoken — ātru BPE tokenizētāju, kas īpaši tiek izmantots OpenAI modeļiem.

Tekstvienību ierobežojumi

Katram modelim ir maksimālais kopējais tekstvienību ierobežojums (ievade + izvade). Pašreizējie lielas ietilpības modeļi kontekstā atbalsta līdz pat simtiem tūkstošu tekstvienību, tomēr praktiskie ierobežojumi var atšķirties atkarībā no modeļa versijas un jūsu lietojuma līmeņa.

Ja pārsniedzat ierobežojumu, varat:

  • Saīsināt vai pārformulēt uzvednes.

  • Sadalīt lielu tekstu mazākos fragmentos.

  • Pirms nosūtīšanas apkopot vai priekšapstrādāt ievades datus.

Tekstvienību cenas

API lietojuma cena tiek noteikta par tekstvienību un atšķiras atkarībā no modeļa un tā, vai tekstvienības ir ievades, izvades vai kešotas. Pašreizējās likmes skatiet OpenAI cenu lapā. Daži spriestspējas modeļi iekšēji var izmantot vairāk tekstvienību, bet to mērķis ir uzlabot efektivitāti, samazinot vienam pabeigtam uzdevumam nepieciešamo tekstvienību skaitu.

Tekstvienību izpēte

API apstrādā vārdus atbilstoši to kontekstam korpusa datos. Modeļi paņem uzvedni, pārvērš ievadi tekstvienību sarakstā, apstrādā uzvedni un pārvērš prognozētās tekstvienības atpakaļ vārdos, ko redzam atbildē.

Tas, kas mums var šķist divi identiski vārdi, var tikt ģenerēts kā atšķirīgas tekstvienības atkarībā no tā, kā šie vārdi ir strukturēti tekstā. Apsveriet, kā API ģenerē tekstvienību vērtības vārdam “red” atkarībā no tā konteksta tekstā:

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

Pirmajā iepriekš minētajā piemērā tekstvienība “2266” vērtībai “ red” ietver beigu atstarpi (ņemiet vērā, ka šie ir piemēra tekstvienību ID demonstrācijas nolūkiem).

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

Tekstvienība “2296” vērtībai “ Red” (ar sākuma atstarpi un lielo sākumburtu) atšķiras no tekstvienības “2266” vērtībai “ red” ar mazo burtu.

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

Kad “Red” tiek lietots teikuma sākumā, ģenerētajā tekstvienībā nav sākuma atstarpes. Tekstvienība “7738” atšķiras no diviem iepriekšējiem vārda piemēriem.

Novērojumi:

Jo ticamāka/biežāka ir tekstvienība, jo mazāks tai piešķirtais tekstvienības numurs:

  • Punktam ģenerētā tekstvienība ir vienāda (“13”) visos 3 teikumos. Tas ir tāpēc, ka kontekstuāli punkts visā korpusa datos tiek lietots diezgan līdzīgi.

  • Vārdam “red” ģenerētā tekstvienība atšķiras atkarībā no tā novietojuma teikumā:

    • Mazais burts teikuma vidū: “ red” - (tekstvienība: “2266”)

    • Lielais burts teikuma vidū: “ Red” - (tekstvienība: “2297”)

    • Lielais burts teikuma sākumā: “Red” - (tekstvienība: “7738”)

Vai šis raksts bija noderīgs?