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: 2 days ago

Kas ir tekstvienības?

Tekstvienības ir teksta pamatelementi, ko apstrādā OpenAI modeļi. Atkarībā no valodas un konteksta tās var būt gan viena rakstzīme, gan vesels vārds. Tekstvienību skaitu ietekmē atstarpes, pieturzīmes un vārdu daļas. Šādi API iekšēji sadala jūsu tekstu pirms atbildes ģenerēšanas.

Noderīgi aptuveni aprēķini 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. Lai noskaidrotu precīzu skaitu izvēlētajam modelim, izmantojiet tekstvienību dalīšanas rīku vai tiktoken.encoding_for_model(model).

Piemēri

Tālāk sniegti daži reāli teksta paraugi un to aptuvenais tekstvienību skaits:

  • Veina Grecka citāts „Jūs neiemetīsiet 100% metienu, kurus neizdarīsiet” = 11 tekstvienības

  • OpenAI harta = 476 tekstvienības

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

Kā aprēķina tekstvienību skaitu

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 virkne un pēc tam pārvērsta atpakaļ tekstā.

Tekstvienību lietojumu uzskaita 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ē (parasti par zemāku maksu).

  • Spriestspējas tekstvienības — dažos progresīvos modeļos pirms galīgās izvades izveides iekšēji tiek iekļauti papildu „domāšanas soļi”.

Šie skaitļi tiek rādīti API atbildes metadatos un izmantoti norēķiniem un lietojuma uzskaitei.

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

Savukārt, lai programmiski dalītu tekstu tekstvienībās, izmantojiet Tiktoken — ātru BPE dalītāju, kas īpaši paredzēts 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 vairākiem simtiem tūkstošu tekstvienību, taču 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ārfrāzēt uzvednes.

  • Sadalīt lielu tekstu mazākās daļās.

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

Tekstvienību cenas

API lietojuma cenu aprēķina par tekstvienību; tā atšķiras atkarībā no modeļa un no tā, vai tekstvienības ir ievades, izvades vai kešotas. Pašreizējos tarifus skatiet OpenAI cenu lapā. Daži spriestspējas modeļi iekšēji var izmantot vairāk tekstvienību, taču tie cenšas uzlabot efektivitāti, samazinot viena pabeigta uzdevuma izpildei vajadzīgo tekstvienību skaitu.

Tekstvienību izpēte

API apstrādā vārdus atbilstoši to kontekstam korpusa datos. Modeļi saņ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ē.

Divi šķietami vienādi vārdi var tikt pārvērsti atšķirīgās tekstvienībās atkarībā no to izvietojuma tekstā. Aplūkojiet, 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ā piemērā tekstvienība „2266”, kas atbilst „ red”, ietver beigu atstarpi (ņemiet vērā, ka šie ir demonstrācijas nolūkiem izmantoti tekstvienību ID piemēri).

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”, kas atbilst „ Red” (ar sākuma atstarpi un lielo sākumburtu), atšķiras no tekstvienības „2266”, kas atbilst „ red” ar mazo sākumburtu.

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

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

Novērojumi:

Jo iespējamāka vai biežāk sastopama ir tekstvienība, jo mazāks tai piešķirtais numurs:

  • Punktam ģenerētā tekstvienība visos trijos teikumos ir vienāda („13”). Tas ir tāpēc, ka korpusa datos punkts dažādos kontekstos tiek lietots visai līdzīgi.

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

    • Mazais sākumburts teikuma vidū: „ red” — (tekstvienība: „2266”)

    • Lielais sākumburts teikuma vidū: „ Red” — (tekstvienība: „2297”)

    • Lielais sākumburts teikuma sākumā: „Red” — (tekstvienība: „7738”)

Vai šis raksts bija noderīgs?