gpu-sankhya 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -212,21 +212,21 @@ training): 0.925 value accuracy. This number is optimistic — it's testing
212
212
  the model on its own distribution.
213
213
 
214
214
  On two hand-written gold sets, written independently of the generator —
215
- `python/tests/gold.jsonl` (romanised Hindi, 220 sentences / 194 spans)
216
- and `python/tests/gold_deva.jsonl` (Devanagari Hindi, 182 sentences / 151
215
+ `python/tests/gold.jsonl` (romanised Hindi, 225 sentences / 197 spans)
216
+ and `python/tests/gold_deva.jsonl` (Devanagari Hindi, 185 sentences / 154
217
217
  spans) — evaluated against the shipped int8-quantized weights:
218
218
 
219
219
  | gold set | examples | spans | value accuracy | span precision | span recall | span F1 |
220
220
  | --- | ---: | ---: | ---: | ---: | ---: | ---: |
221
- | gold.jsonl (romanised) | 220 | 194 | 0.9381 | 0.9293 | 0.9485 | 0.9388 |
222
- | gold_deva.jsonl (Devanagari) | 182 | 151 | 0.9735 | 0.9867 | 0.9801 | 0.9834 |
223
- | combined | 402 | 345 | 0.9536 | 0.9540 | 0.9623 | 0.9582 |
221
+ | gold.jsonl (romanised) | 225 | 197 | 0.9543 | 0.9497 | 0.9594 | 0.9545 |
222
+ | gold_deva.jsonl (Devanagari) | 185 | 154 | 0.9740 | 0.9805 | 0.9805 | 0.9805 |
223
+ | combined | 410 | 351 | 0.9632 | 0.9632 | 0.9687 | 0.9659 |
224
224
 
225
- Negatives (zero-gold-span examples, 73 total): 0 false positives.
226
- Miss summary: missed 0, spurious 4, wrong value 3, wrong boundary 13.
227
- Per-category value accuracy: digits 0.967, words 0.940, prefix 0.926,
228
- range 0.917, currency 1.0, multi_unit 0.952, symbol_unit 0.970,
229
- mixed_script 1.0, long 0.80.
225
+ Negatives (zero-gold-span examples, 75 total): 0 false positives.
226
+ Miss summary: missed 1, spurious 1, wrong value 2, wrong boundary 10.
227
+ Per-category value accuracy: digits 0.967, words 0.961, prefix 0.963,
228
+ range 0.889, currency 1.0, multi_unit 0.917, symbol_unit 1.0,
229
+ mixed_script 1.0, long 0.667.
230
230
 
231
231
  For comparison, the previous shipped weights scored, on this same
232
232
  enlarged gold set: 0.9096 (romanised) / 0.9603 (Devanagari) / 0.9322
@@ -323,12 +323,28 @@ Raw per-character BIO/class predictions are cleaned up before evaluation:
323
323
  scans 8 characters past the amount for a trailing marker word (up from
324
324
  a shorter window that missed `"1200 rupees"` — `"rupees"` alone runs to
325
325
  6 characters plus the leading space).
326
+ - **Lone-ambiguous-unit gate**: a span whose only meaningful token is a
327
+ single `UNIT_KHARAB` or `UNIT_MILLION` word, with no preceding
328
+ number/prefix and no detected currency marker, is dropped — `"kharab"`
329
+ (Hindi: usually "broken") and `"mil"`/`"million"` (often just an
330
+ English loanword/fragment) are only genuine amount units when a number
331
+ precedes them. `"unka washing machine kharab ho gaya hai"` no longer
332
+ parses; `"das kharab"`, `"2 mil"`, and `"kharab rupaye"` (currency
333
+ marker present) still parse. Other unit words (`"lakh"`, `"hazaar"`)
334
+ are unaffected.
326
335
  - **Range-connector repair**: a bare `-`/`–`/`—`/`/` between two amounts
327
336
  becomes a `RANGE` tag (spaces around it stay `SEP`) when the left side
328
337
  can end an amount by itself and the right side can start a fresh one
329
338
  (`"2 lakh/3 lakh"`, `"दो-तीन लाख"`) — but not when it's really one
330
339
  compound number, e.g. a prefix glued straight to a unit (`"dedh-lakh"`
331
340
  stays one span, not a range).
341
+ - **Word-connector span merge**: when a whole connector WORD (e.g.
342
+ `"se"`/`"से"`) between two separately BIO-decoded spans is itself tagged
343
+ `RANGE` by the class head, the two spans are merged into one `RANGE`
344
+ span (connector letters → `RANGE`, its flanking spaces → `SEP`) — fixes
345
+ the BIO head splitting a range like `"दो लाख से तीन लाख"` or `"5 hazaar
346
+ se 8 hazaar"` into two separate amounts even though the class head
347
+ correctly tagged the connector word.
332
348
  - **Possessive trim**: a trailing `'s`/`’s` (1-2 letters) is stripped from
333
349
  the end of a word and excluded from the span (`"2 lakh's"` → `"2 lakh"`).
334
350
  - **Confidence filter**: a span's confidence is the mean of the max BIO
@@ -341,6 +357,15 @@ Raw per-character BIO/class predictions are cleaned up before evaluation:
341
357
  genuine ranges (only one side has a unit, or both do but ascending) are
342
358
  unaffected.
343
359
 
360
+ An optional linear-chain CRF (`--crf`, see `python/README.md`) can replace
361
+ the plain per-character argmax with Viterbi decoding, but experiments on
362
+ this dataset found it doesn't beat the plain model — 0.957 vs. 0.965
363
+ combined gold value accuracy at best — while training ~7x slower and
364
+ occasionally showing unexplained late-training loss blowups; the
365
+ structural rules above already give the decoded label sequence most of
366
+ the coherence a CRF would add. It ships as a tested, opt-in flag; the
367
+ bundled weights do not use it.
368
+
344
369
  One more detail that matters more than it looks like it should: the
345
370
  runtime right-pads the character-id array with 24 pad tokens before
346
371
  running the forward pass (mirroring `python/sankhya/np_infer.py`'s
package/dist/core.d.ts CHANGED
@@ -32,6 +32,19 @@ export declare function isBareDigits(tokens: Tok[]): boolean;
32
32
  * real amount, so it exempts an otherwise-short span from rule (a):
33
33
  * "1,00,000" (6 digits, comma) is kept, not dropped. */
34
34
  export declare function shouldDropBareDigits(tokens: Tok[]): boolean;
35
+ /** R4: whether a span consisting of a single ambiguous unit word (with no
36
+ * preceding number) should be dropped. "kharab" (Hindi: usually "broken")
37
+ * and "mil"/"million" (often just an English loanword/fragment) are only
38
+ * genuine amount units when a number precedes them ("das kharab", "2 mil");
39
+ * alone they are almost always false positives ("washing machine kharab ho
40
+ * gaya", "mil ke rehna").
41
+ *
42
+ * True when the span's meaningful tokens (ignoring SEP/RANGE/DOT/COMMA/O
43
+ * glue) consist of exactly one token whose class is UNIT_KHARAB or
44
+ * UNIT_MILLION, and there is no CARD_-prefixed/DIGITS/PFX_-prefixed token
45
+ * anywhere in the span. This is class-level (not surface-level), so it
46
+ * needs no lexicon. */
47
+ export declare function shouldDropLoneAmbiguousUnit(tokens: Tok[]): boolean;
35
48
  export declare function mergeLangPacks(...packs: LangPack[]): LangPack;
36
49
  /** Scan up to 8 chars before/after [start,end) for a currency marker. The
37
50
  * window has to be wider than the longest marker word (6 chars, e.g.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- function zA(A){return A.version===2&&Array.isArray(A.conv)}function TA(A){return A.quantized!==void 0}function kA(A){let e=atob(A),n=new Int8Array(e.length);for(let B=0;B<e.length;B++)n[B]=e.charCodeAt(B)<<24>>24;return n}function z(A){let e=kA(A.data_b64),n=new Float32Array(e.length);for(let B=0;B<e.length;B++)n[B]=e[B]*A.scale;return{shape:A.shape,data:n}}function T(A){return{shape:A.shape,data:Float32Array.from(A.data)}}function wA(A,e){return A*(e-1)/2}function N(A){return{w:T(A.w),b:Float32Array.from(A.b.data)}}function X(A){return{w:z(A.w),b:Float32Array.from(A.b)}}function PA(A){let e=TA(A);if(zA(A)){let s=A.conv.map(t=>{let g=wA(t.dilation,t.k);if(e){let P=t;return{k:t.k,dilation:t.dilation,residual:t.residual,padding:g,w:z(P.w),b:Float32Array.from(P.b)}}let o=t;return{k:t.k,dilation:t.dilation,residual:t.residual,padding:g,w:T(o.w),b:Float32Array.from(o.b.data)}});return{version:2,charset:A.charset,classes:A.classes,embed:e?z(A.embed):T(A.embed),conv:s,bio:e?X(A.bio):N(A.bio),cls:e?X(A.cls):N(A.cls)}}let n=A.layers??3,B=A.dilation??2,f=[{name:"conv1",k:3,dilation:1},{name:"conv2",k:5,dilation:1},{name:"conv3",k:3,dilation:B}];n===4&&f.push({name:"conv4",k:3,dilation:4});let r=f.map(s=>{let t=wA(s.dilation,s.k);if(e){let w=A[s.name];if(!w)throw new Error(`missing ${s.name} in weights JSON`);return{k:s.k,dilation:s.dilation,residual:!1,padding:t,w:z(w.w),b:Float32Array.from(w.b)}}let o=A[s.name];if(!o)throw new Error(`missing ${s.name} in weights JSON`);return{k:s.k,dilation:s.dilation,residual:!1,padding:t,w:T(o.w),b:Float32Array.from(o.b.data)}});return{version:A.version??1,charset:A.charset,classes:A.classes,embed:e?z(A.embed):T(A.embed),conv:r,bio:e?X(A.bio):N(A.bio),cls:e?X(A.cls):N(A.cls)}}function xA(A){return Math.ceil(A/8)*8}function R(A){return xA(A+24)}var O=R(128),pA=/[०-९]/g;function k(A){return A.normalize("NFC").replace(pA,e=>String(e.charCodeAt(0)-2406)).toLowerCase()}function CA(A){let e=new Map;for(let n=0;n<A.length;n++)e.set(A[n],n);return e}function x(A,e,n,B){let f=e.get("<unk>")??1,r=e.get("<pad>")??0,s=B??A.length,t=n?n.subarray(0,s):new Int32Array(s);for(let g=0;g<A.length;g++)t[g]=e.get(A[g])??f;for(let g=A.length;g<s;g++)t[g]=r;return t}function eA(A){if(A<=128)return[{offset:0,length:A}];let e=[],n=112,B=0;for(;B<A;){let f=Math.min(128,A-B);if(e.push({offset:B,length:f}),B+f>=A)break;B+=n}return e}var j=class{buffers;padded;bioBuf;clsBuf;constructor(e){let n=e.conv,B=Math.max(e.embed.shape[1],...n.map(r=>r.w.shape[0]));this.buffers=[new Float32Array(B*O),new Float32Array(B*O)];let f=n.length?Math.max(...n.map(r=>r.padding)):0;this.padded=new Float32Array(B*(O+2*f)),this.bioBuf=new Float32Array(e.bio.w.shape[0]*O),this.clsBuf=new Float32Array(e.cls.w.shape[0]*O)}buf(e){return this.buffers[e%2]}paddedBuf(){return this.padded}};function mA(A,e,n,B,f,r){let[s,t,g]=B.w.shape;if(t!==e)throw new Error(`channel mismatch: expected ${e}, got ${t}`);let o=B.w.data,P=B.b,w=B.padding,C=B.dilation,D=n+2*w;for(let u=0;u<e;u++)r.fill(0,u*D,u*D+w),r.set(A.subarray(u*n,u*n+n),u*D+w),r.fill(0,u*D+w+n,u*D+D);for(let u=0;u<s;u++){let Q=u*n,l=P[u],I=u*e*g;if(g===3){for(let v=0;v<n;v++)f[Q+v]=l;for(let v=0;v<e;v++){let H=v*D,i=I+v*3,d=o[i],M=o[i+1],E=o[i+2];for(let c=0;c<n;c++){let a=H+c;f[Q+c]+=d*r[a]+M*r[a+C]+E*r[a+2*C]}}}else if(g===5){for(let v=0;v<n;v++)f[Q+v]=l;for(let v=0;v<e;v++){let H=v*D,i=I+v*5,d=o[i],M=o[i+1],E=o[i+2],c=o[i+3],a=o[i+4];for(let h=0;h<n;h++){let F=H+h;f[Q+h]+=d*r[F]+M*r[F+1]+E*r[F+2]+c*r[F+3]+a*r[F+4]}}}else{for(let v=0;v<n;v++)f[Q+v]=l;for(let v=0;v<e;v++){let H=v*D,i=I+v*g;for(let d=0;d<g;d++){let M=o[i+d],E=d*C,c=H+E;for(let a=0;a<n;a++)f[Q+a]+=M*r[c+a]}}}if(B.residual)for(let v=0;v<n;v++){let H=f[Q+v];f[Q+v]=(H>0?H:0)+A[Q+v]}else for(let v=0;v<n;v++){let H=f[Q+v];f[Q+v]=H>0?H:0}}return s}function DA(A,e,n,B,f){let[r,s]=B.w.shape;if(s!==e)throw new Error(`head channel mismatch: expected ${e}, got ${s}`);let t=B.w.data,g=B.b,o=e-e%4;for(let P=0;P<n;P++){let w=P*r;for(let C=0;C<r;C++){let D=g[C],u=C*e,Q=0;for(;Q<o;Q+=4)D+=t[u+Q]*A[Q*n+P]+t[u+Q+1]*A[(Q+1)*n+P]+t[u+Q+2]*A[(Q+2)*n+P]+t[u+Q+3]*A[(Q+3)*n+P];for(;Q<e;Q++)D+=t[u+Q]*A[Q*n+P];f[w+C]=D}}return r}function S(A,e,n){let B=e.length,f=A.embed,r=f.shape[1],s=n.buf(0);for(let w=0;w<B;w++){let D=e[w]*r;for(let u=0;u<r;u++)s[u*B+w]=f.data[D+u]}let t=r,g=n.paddedBuf(),o=1;for(let w of A.conv){let C=n.buf(o);t=mA(s,t,B,w,C,g),s=C,o++}DA(s,t,B,A.bio,n.bioBuf);let P=DA(s,t,B,A.cls,n.clsBuf);return{bioLogits:n.bioBuf,clsLogits:n.clsBuf,length:B,nCls:P}}function BA(A,e,n,B){let f=-1/0;for(let s=0;s<n;s++)f=Math.max(f,A[e+s]);let r=0;for(let s=0;s<n;s++){let t=Math.exp(A[e+s]-f);B[s]=t,r+=t}for(let s=0;s<n;s++)B[s]/=r;return B}function p(A,e,n){let B=0,f=-1/0;for(let r=0;r<n;r++){let s=A[e+r];s>f&&(f=s,B=r)}return B}var yA=["PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE"],YA=Array.from({length:99},(A,e)=>`CARD_${e+1}`),NA=["UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],XA=["O","SEP","RANGE","DIGITS","DOT","COMMA"],L=["O",...XA.filter(A=>A!=="O"),...yA,...YA,...NA],U=Object.fromEntries(L.map((A,e)=>[A,e])),vA={UNIT_SAU:100,UNIT_HAZAAR:1e3,UNIT_LAKH:1e5,UNIT_MILLION:1e6,UNIT_CRORE:1e7,UNIT_BILLION:1e9,UNIT_ARAB:1e9,UNIT_KHARAB:1e11},J={UNIT_SAU:"sau",UNIT_HAZAAR:"hazaar",UNIT_LAKH:"lakh",UNIT_MILLION:"million",UNIT_CRORE:"crore",UNIT_BILLION:"billion",UNIT_ARAB:"arab",UNIT_KHARAB:"kharab"},nA={PFX_PAAV:{standalone:.25,op:null},PFX_AADHA:{standalone:.5,op:null},PFX_PAUNE:{standalone:.75,op:"sub25",min_n:2},PFX_SAVA:{standalone:1.25,op:"add25",min_n:2},PFX_DEDH:{standalone:1.5,op:null},PFX_DHAI:{standalone:2.5,op:null},PFX_SAADHE:{standalone:.5,op:"add5",min_n:3}};function QA(A){return A in nA}function uA(A){return A.startsWith("CARD_")}function cA(A){return A in vA}function aA(A){return parseInt(A.split("_",2)[1],10)}function K(A){return vA[A]}var SA=new Set(["SEP","RANGE","DOT","COMMA"]),EA=new Set([...SA,"O"]),fA=["PFX_","CARD_","UNIT_"],JA=["PFX_","CARD_","UNIT_"],KA=new Set(["-","\u2013","\u2014","/"]),_A=new Set(["k","K","l","L"]),iA=/['’]([A-Za-zऀ-ॿ]{1,2})(?![A-Za-zऀ-ॿ])/g;function WA(A){return fA.some(e=>A.startsWith(e))||A==="DIGITS"}function VA(A){return JA.some(e=>A.startsWith(e))}var W=U.O,_=U.SEP,rA=U.RANGE,qA=U.DIGITS,ZA=U.DOT,$A=U.COMMA,Ae=/\p{L}|\p{M}/u;function m(A){return Ae.test(A)?"letter":/[0-9]/.test(A)?"digit":/\s/.test(A)?"space":"punct"}function ee(A){let e=[],n=0,B=A.length;for(;n<B;){let f=m(A[n]),r=n+1;for(;r<B&&m(A[r])===f;)r++;e.push({type:f,start:n,end:r}),n=r}return e}function Be(A,e,n){let B=new Map;for(let o=e;o<n;o++){let P=A[o];VA(L[P])&&B.set(P,(B.get(P)??0)+1)}if(B.size===0)return W;let f=-1;for(let o of B.values())o>f&&(f=o);let r=[...B.entries()].filter(([,o])=>o===f).map(([o])=>o);if(r.length===1)return r[0];let s=-1,t=1/0,g=r[0];for(let o of r){let P=0,w=0,C=1/0;for(let D=e;D<n;D++)A[D]===o?(C===1/0&&(C=D),P++,P>w&&(w=P)):P=0;(w>s||w===s&&C<t)&&(s=w,t=C,g=o)}return g}function bA(A,e,n){let B=[],f=e;for(;f<n;){let t=f+1;for(;t<n&&A[t]===A[f];)t++;B.push({start:f,end:t,cls:A[f]}),f=t}let r=Be(A,e,n),s=[];for(let t=0;t<B.length;t++){let g=B[t];if(g.end-g.start>=3){s.push([g.start,g.end,g.cls]);continue}let P=t>0?B[t-1]:null,w=t<B.length-1?B[t+1]:null,C=P!==null&&P.end-P.start>=3,D=w!==null&&w.end-w.start>=3,u;if(C&&D){let Q=P.end-P.start;u=w.end-w.start>Q?w.cls:P.cls}else C?u=P.cls:D?u=w.cls:u=r;s.push([g.start,g.end,u])}return s}function ne(A){return fA.some(e=>A.startsWith(e))||A==="DIGITS"}function lA(A,e,n,B){if(A==="digit")return"DIGITS";if(A==="letter"){let f=bA(B,e,n),r=new Map;for(let[g,o,P]of f)r.set(P,(r.get(P)??0)+(o-g));let s=-1,t=-1;for(let[g,o]of r)o>t&&(t=o,s=g);return s>=0?L[s]:null}return null}function IA(A,e,n){let B=e+n;if(B<0||B>=A.length||A[B].type==="space"&&(B+=n,B<0||B>=A.length))return null;let f=A[B];return f.type==="digit"||f.type==="letter"?f:null}function re(A,e,n){let B=IA(A,e,-1),f=IA(A,e,1);if(!B||!f)return!1;let r=lA(B.type,B.start,B.end,n),s=lA(f.type,f.start,f.end,n);return!r||!s||!ne(r)?!1:s==="DIGITS"||s.startsWith("CARD_")||s.startsWith("PFX_")}function te(A,e){let n=A.length,B=new Array(n),f=ee(A);for(let r=0;r<f.length;r++){let s=f[r],{type:t,start:g,end:o}=s;if(t==="digit"){for(let D=g;D<o;D++)B[D]=qA;continue}if(t==="space"){let D=!1;for(let Q=g;Q<o;Q++)if(e[Q]===rA){D=!0;break}let u=D?rA:_;for(let Q=g;Q<o;Q++)B[Q]=u;continue}if(t==="letter"){for(let[D,u,Q]of bA(e,g,o))for(let l=D;l<u;l++)B[l]=Q;continue}let P=r>0?f[r-1].type:null,w=r<f.length-1?f[r+1].type:null,C=_;if(o-g===1){let D=A[g];(D==="."||D===",")&&P==="digit"&&w==="digit"?C=D==="."?ZA:$A:KA.has(D)&&re(f,r,e)?C=rA:C=_}for(let D=g;D<o;D++)B[D]=C}return B}function fe(A,e){let n=Array.from({length:e},(B,f)=>A[f]);for(let B=1;B<e-1;B++)A[B]===0&&(A[B-1]===1||A[B-1]===2)&&A[B+1]===2&&(n[B]=2);return n}function HA(A){return A!==void 0&&A>="0"&&A<="9"}function se(A,e,n){if(n<=e||!HA(A[n-1]))return n;let B=n;for(;B<A.length&&HA(A[B]);)B++;return B}var ge=24;function oe(A,e,n){let B=[],f=e;for(;f<n;){let t=f+1;for(;t<n&&A[t]===A[f];)t++;B.push({start:f,end:t,cls:A[f]}),f=t}let r=[];for(let t=0;t<B.length;t++){let g=B[t];if(g.end-g.start>=3){r.push(g.cls);continue}let o=t>0?B[t-1]:null,P=t<B.length-1?B[t+1]:null,w=o!==null&&o.end-o.start>=3,C=P!==null&&P.end-P.start>=3;if(w&&C){let D=o.end-o.start,u=P.end-P.start;r.push(u>D?P.cls:o.cls)}else if(w)r.push(o.cls);else if(C)r.push(P.cls);else return null}return new Set(r).size===1?r[0]:null}function we(A,e,n){let B=A.length,f=Array.from({length:B},(r,s)=>A[s]);for(let[r,s]of n){let t=s-r;if(t===0||t>ge)continue;let g=!1,o=!0;for(let w=r;w<s;w++)A[w]===1||A[w]===2?g=!0:o=!1;if(!g||o)continue;let P=oe(e,r,s);if(!(P===null||!tA(L[P]))){for(let w=r;w<s;w++)f[w]=2;f[r]=1}}return f}function Pe(A){let e=[],n=0,B=A.length;for(;n<B;)if(m(A[n])==="letter"){let f=n+1;for(;f<B&&m(A[f])==="letter";)f++;e.push([n,f]),n=f}else n++;return e}function tA(A){return fA.some(e=>A.startsWith(e))&&A!=="DIGITS"}function Ce(A,e,n,B,f){let r=Array.from({length:B.length},(s,t)=>B[t]);for(let[s,t]of f){if(t<=e||s>=n)continue;let g=Math.max(s,e),o=Math.min(t,n),P=s>=e&&t<=n;if(P){for(let w=s;w<t;w++)if(!tA(L[r[w]])){P=!1;break}}if(P){t-s===1&&L[r[s]].startsWith("UNIT_")&&_A.has(A[s])&&t<A.length&&m(A[t])==="letter"&&(r[s]=W);continue}for(let w=g;w<o;w++)tA(L[r[w]])&&(r[w]=W)}return r}function De(A,e,n,B){let f=Array.from({length:B.length},(t,g)=>B[g]),r=A.slice(e,n);iA.lastIndex=0;let s;for(;s=iA.exec(r);)for(let t=e+s.index;t<e+s.index+s[0].length;t++)f[t]=W;return f}function hA(A,e,n,B){let f=A.length,r=Pe(A),s=fe(e,f);s=we(s,n,r);let t=[],g=null;for(let w=0;w<f;w++){let C=s[w];C===1?(g!==null&&t.push([g,w]),g=w):C===2||g!==null&&(t.push([g,w]),g=null)}g!==null&&t.push([g,f]);for(let w=0;w<t.length;w++)t[w]=[t[w][0],se(A,t[w][0],t[w][1])];let o=Array.from({length:f},(w,C)=>n[C]),P=[];for(let[w,C]of t){let D=A.slice(w,C),u=Array.from({length:C-w},(c,a)=>o[w+a]),Q=te(D,u);for(let c=w;c<C;c++)o[c]=Q[c-w];o=Ce(A,w,C,o,r),o=De(A,w,C,o);let l=w,I=[];for(let c=w+1;c<=C;c++)(c===C||o[c]!==o[l])&&(I.push([o[l],l,c]),l=c);let v=0,H=I.length;for(;v<H&&EA.has(L[I[v][0]]);)v++;for(;H>v&&EA.has(L[I[H-1][0]]);)H--;let i=I.slice(v,H);if(i.length===0)continue;let d=i[0][1],M=i[i.length-1][2];if(!i.some(([c])=>WA(L[c])))continue;let E=null;if(B){let c=[];for(let a=d;a<M;a++)c.push(Math.max(...B[a]));if(E=c.length?c.reduce((a,h)=>a+h,0)/c.length:0,E<.5)continue}P.push({start:d,end:M,text:A.slice(d,M),tokens:i.map(([c,a,h])=>[c,A.slice(a,h)]),confidence:E})}return P}function ve(A){let e=[],n="",B=!1,f=()=>{if(B){let r=n.replace(/,/g,""),s=parseFloat(r);e.push(["NUM",Number.isNaN(s)?0:s])}n="",B=!1};for(let[r,s]of A)r!=="SEP"&&(r==="DIGITS"||r==="DOT"||r==="COMMA"?(n+=s,B=!0):(f(),e.push([r,s])));return f(),e}function Qe(A,e){if(e!==null){let n=nA[e];if(n===void 0)return A!==null?A:1;if(A!==null&&n.op){if(n.op==="sub25")return A-.25;if(n.op==="add25")return A+.25;if(n.op==="add5")return A+.5}return n.standalone}return A!==null?A:1}function ue(A){let e=ve(A),n=0,B=null,f=null,r=null,s=null;function t(g){let o=Qe(r,s);if(g===null)n+=o*1;else{let P=K(g);B!==null&&P>B?n=n*P:n=n+o*P,B=P,(f===null||P>K(f))&&(f=g)}r=null,s=null}for(let[g,o]of e)if(g==="NUM")r!==null&&t(null),r=o;else if(uA(g)){r!==null&&t(null);try{r=aA(g)}catch{}}else if(QA(g))s!==null&&t(null),s=g;else if(cA(g))t(g);else continue;return(r!==null||s!==null)&&t(null),[n,f]}function y(A){let e=Math.round(A),n=Math.max(1e-6,Math.abs(A)*1e-9);return Math.abs(A-e)<n?e:Math.round(A*1e6)/1e6}function ce(A){let e=[],n=0;for(;n<A.length;){let[B,f]=A[n];if(B.startsWith("PFX_")){let r=f,s=n+1;for(;;){let t=s;if(t<A.length&&A[t][0]==="SEP"&&t++,t<A.length&&A[t][0]===B){for(let g=s;g<=t;g++)r+=A[g][1];s=t+1;continue}break}e.push([B,r]),n=s}else e.push(A[n]),n++}return e}function dA(A){try{let e=A.map(C=>C[0]),n=ce(A),B=[[]];for(let[C,D]of n){if(C==="RANGE"){B.length<2&&B.push([]);continue}B[B.length-1].push([C,D])}let f=B.filter(C=>C.length>0).map(C=>ue(C));if(f.length===0)return{value:0,range:null,unit:null,classes:e,currency:null};if(f.length===1){let[C,D]=f[0];return{value:y(C),range:null,unit:D?J[D]??null:null,classes:e,currency:null}}let[r,s]=f[0],[t,g]=f[1];if(s!==null&&g!==null&&r>t)return{value:y(r+t),range:null,unit:J[s]??null,classes:e,currency:null};let o;s===null&&g!==null?(r=r*K(g),o=g):o=s!==null?s:g;let[P,w]=r<=t?[r,t]:[t,r];return{value:y(P),range:[y(P),y(w)],unit:o?J[o]??null:null,classes:e,currency:null}}catch{return{value:0,range:null,unit:null,classes:A.map(e=>e[0]),currency:null}}}function ae(A){let e=!1;for(let[n]of A)if(n==="DIGITS")e=!0;else if(n.startsWith("UNIT_")||n.startsWith("PFX_")||n.startsWith("CARD_"))return!1;return e}function FA(A){if(!ae(A))return!1;let e=0,n=!1;for(let[B,f]of A)B==="DIGITS"?e+=f.length:B==="COMMA"&&(n=!0);return e<=4&&!n||e>=10}function LA(...A){let e=(B,f)=>f.length-B.length,n=B=>[...new Set(B.flat())].sort(e);return{currency_markers_before:n(A.map(B=>B.currency_markers_before??[])),currency_words_after:n(A.map(B=>B.currency_words_after??[]))}}function MA(A,e,n,B){let f=A.slice(Math.max(0,e-8),e),r=A.slice(n,n+8),t=f.replace(/\s+$/,"").toLowerCase(),g=[...B.currency_markers_before??[]].sort((C,D)=>D.length-C.length);for(let C of g){let D=C.replace(/\.+$/,"").toLowerCase();if(t.endsWith(C.toLowerCase())||t.endsWith(D))return"INR"}let P=r.replace(/^\s+/,"").toLowerCase(),w=[...B.currency_words_after??[]].sort((C,D)=>D.length-C.length);for(let C of w){let D=C.toLowerCase();if(P.startsWith(D))return"INR"}return null}var OA={currency_markers_before:["\u20B9","Rs","Rs.","rs","INR","Re"],currency_words_after:["rupaye","rupay","rupees","rupiya","rupya","/-"]};var UA={currency_markers_before:["\u20B9","\u0930\u0941","\u0930\u0941.","Rs","Rs.","INR"],currency_words_after:["\u0930\u0941\u092A\u092F\u0947","\u0930\u0941\u092A\u090F","\u0930\u0942\u092A\u092F\u0947","\u0930\u0941\u092A\u092F\u093E","/-"]};var Ee=`
1
+ function TA(A){if(A.crf)return{trans:Float32Array.from(A.crf.trans.data),start:Float32Array.from(A.crf.start.data),end:Float32Array.from(A.crf.end.data)}}function GA(A){return A.version===2&&Array.isArray(A.conv)}function kA(A){return A.quantized!==void 0}function mA(A){let e=atob(A),r=new Int8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n)<<24>>24;return r}function T(A){let e=mA(A.data_b64),r=new Float32Array(e.length);for(let n=0;n<e.length;n++)r[n]=e[n]*A.scale;return{shape:A.shape,data:r}}function G(A){return{shape:A.shape,data:Float32Array.from(A.data)}}function wA(A,e){return A*(e-1)/2}function j(A){return{w:G(A.w),b:Float32Array.from(A.b.data)}}function N(A){return{w:T(A.w),b:Float32Array.from(A.b)}}function PA(A){let e=kA(A);if(GA(A)){let s=A.conv.map(B=>{let g=wA(B.dilation,B.k);if(e){let w=B;return{k:B.k,dilation:B.dilation,residual:B.residual,padding:g,w:T(w.w),b:Float32Array.from(w.b)}}let v=B;return{k:B.k,dilation:B.dilation,residual:B.residual,padding:g,w:G(v.w),b:Float32Array.from(v.b.data)}});return{version:2,charset:A.charset,classes:A.classes,embed:e?T(A.embed):G(A.embed),conv:s,bio:e?N(A.bio):j(A.bio),cls:e?N(A.cls):j(A.cls),crf:TA(A)}}let r=A.layers??3,n=A.dilation??2,f=[{name:"conv1",k:3,dilation:1},{name:"conv2",k:5,dilation:1},{name:"conv3",k:3,dilation:n}];r===4&&f.push({name:"conv4",k:3,dilation:4});let t=f.map(s=>{let B=wA(s.dilation,s.k);if(e){let P=A[s.name];if(!P)throw new Error(`missing ${s.name} in weights JSON`);return{k:s.k,dilation:s.dilation,residual:!1,padding:B,w:T(P.w),b:Float32Array.from(P.b)}}let v=A[s.name];if(!v)throw new Error(`missing ${s.name} in weights JSON`);return{k:s.k,dilation:s.dilation,residual:!1,padding:B,w:G(v.w),b:Float32Array.from(v.b.data)}});return{version:A.version??1,charset:A.charset,classes:A.classes,embed:e?T(A.embed):G(A.embed),conv:t,bio:e?N(A.bio):j(A.bio),cls:e?N(A.cls):j(A.cls)}}function yA(A){return Math.ceil(A/8)*8}function x(A){return yA(A+24)}var z=x(128),XA=/[०-९]/g;function k(A){return A.normalize("NFC").replace(XA,e=>String(e.charCodeAt(0)-2406)).toLowerCase()}function DA(A){let e=new Map;for(let r=0;r<A.length;r++)e.set(A[r],r);return e}function m(A,e,r,n){let f=e.get("<unk>")??1,t=e.get("<pad>")??0,s=n??A.length,B=r?r.subarray(0,s):new Int32Array(s);for(let g=0;g<A.length;g++)B[g]=e.get(A[g])??f;for(let g=A.length;g<s;g++)B[g]=t;return B}function nA(A){if(A<=128)return[{offset:0,length:A}];let e=[],r=112,n=0;for(;n<A;){let f=Math.min(128,A-n);if(e.push({offset:n,length:f}),n+f>=A)break;n+=r}return e}var S=class{buffers;padded;bioBuf;clsBuf;constructor(e){let r=e.conv,n=Math.max(e.embed.shape[1],...r.map(t=>t.w.shape[0]));this.buffers=[new Float32Array(n*z),new Float32Array(n*z)];let f=r.length?Math.max(...r.map(t=>t.padding)):0;this.padded=new Float32Array(n*(z+2*f)),this.bioBuf=new Float32Array(e.bio.w.shape[0]*z),this.clsBuf=new Float32Array(e.cls.w.shape[0]*z)}buf(e){return this.buffers[e%2]}paddedBuf(){return this.padded}};function YA(A,e,r,n,f,t){let[s,B,g]=n.w.shape;if(B!==e)throw new Error(`channel mismatch: expected ${e}, got ${B}`);let v=n.w.data,w=n.b,P=n.padding,o=n.dilation,D=r+2*P;for(let Q=0;Q<e;Q++)t.fill(0,Q*D,Q*D+P),t.set(A.subarray(Q*r,Q*r+r),Q*D+P),t.fill(0,Q*D+P+r,Q*D+D);for(let Q=0;Q<s;Q++){let u=Q*r,I=w[Q],i=Q*e*g;if(g===3){for(let C=0;C<r;C++)f[u+C]=I;for(let C=0;C<e;C++){let E=C*D,b=i+C*3,d=v[b],L=v[b+1],l=v[b+2];for(let c=0;c<r;c++){let a=E+c;f[u+c]+=d*t[a]+L*t[a+o]+l*t[a+2*o]}}}else if(g===5){for(let C=0;C<r;C++)f[u+C]=I;for(let C=0;C<e;C++){let E=C*D,b=i+C*5,d=v[b],L=v[b+1],l=v[b+2],c=v[b+3],a=v[b+4];for(let h=0;h<r;h++){let M=E+h;f[u+h]+=d*t[M]+L*t[M+1]+l*t[M+2]+c*t[M+3]+a*t[M+4]}}}else{for(let C=0;C<r;C++)f[u+C]=I;for(let C=0;C<e;C++){let E=C*D,b=i+C*g;for(let d=0;d<g;d++){let L=v[b+d],l=d*o,c=E+l;for(let a=0;a<r;a++)f[u+a]+=L*t[c+a]}}}if(n.residual)for(let C=0;C<r;C++){let E=f[u+C];f[u+C]=(E>0?E:0)+A[u+C]}else for(let C=0;C<r;C++){let E=f[u+C];f[u+C]=E>0?E:0}}return s}function CA(A,e,r,n,f){let[t,s]=n.w.shape;if(s!==e)throw new Error(`head channel mismatch: expected ${e}, got ${s}`);let B=n.w.data,g=n.b,v=e-e%4;for(let w=0;w<r;w++){let P=w*t;for(let o=0;o<t;o++){let D=g[o],Q=o*e,u=0;for(;u<v;u+=4)D+=B[Q+u]*A[u*r+w]+B[Q+u+1]*A[(u+1)*r+w]+B[Q+u+2]*A[(u+2)*r+w]+B[Q+u+3]*A[(u+3)*r+w];for(;u<e;u++)D+=B[Q+u]*A[u*r+w];f[P+o]=D}}return t}function J(A,e,r){let n=e.length,f=A.embed,t=f.shape[1],s=r.buf(0);for(let P=0;P<n;P++){let D=e[P]*t;for(let Q=0;Q<t;Q++)s[Q*n+P]=f.data[D+Q]}let B=t,g=r.paddedBuf(),v=1;for(let P of A.conv){let o=r.buf(v);B=YA(s,B,n,P,o,g),s=o,v++}CA(s,B,n,A.bio,r.bioBuf);let w=CA(s,B,n,A.cls,r.clsBuf);return{bioLogits:r.bioBuf,clsLogits:r.clsBuf,length:n,nCls:w}}function rA(A,e,r,n){let f=-1/0;for(let s=0;s<r;s++)f=Math.max(f,A[e+s]);let t=0;for(let s=0;s<r;s++){let B=Math.exp(A[e+s]-f);n[s]=B,t+=B}for(let s=0;s<r;s++)n[s]/=t;return n}function y(A,e,r){let n=0,f=-1/0;for(let t=0;t<r;t++){let s=A[e+t];s>f&&(f=s,n=t)}return n}var jA=new Float32Array(z*3),NA=new Int32Array(z*3);function tA(A,e,r,n){if(e===0)return;let{trans:f,start:t,end:s}=r,B=jA,g=NA;for(let o=0;o<3;o++)B[o]=Math.fround(t[o]+A[o]);for(let o=1;o<e;o++){let D=(o-1)*3,Q=o*3,u=o*3;for(let I=0;I<3;I++){let i=-1/0,C=0;for(let E=0;E<3;E++){let b=Math.fround(B[D+E]+f[E*3+I]);b>i&&(i=b,C=E)}B[Q+I]=Math.fround(i+A[u+I]),g[Q+I]=C}}let v=(e-1)*3,w=-1/0,P=0;for(let o=0;o<3;o++){let D=Math.fround(B[v+o]+s[o]);D>w&&(w=D,P=o)}n[e-1]=P;for(let o=e-1;o>0;o--)P=g[o*3+P],n[o-1]=P}var SA=["PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE"],JA=Array.from({length:99},(A,e)=>`CARD_${e+1}`),_A=["UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],KA=["O","SEP","RANGE","DIGITS","DOT","COMMA"],F=["O",...KA.filter(A=>A!=="O"),...SA,...JA,..._A],O=Object.fromEntries(F.map((A,e)=>[A,e])),QA={UNIT_SAU:100,UNIT_HAZAAR:1e3,UNIT_LAKH:1e5,UNIT_MILLION:1e6,UNIT_CRORE:1e7,UNIT_BILLION:1e9,UNIT_ARAB:1e9,UNIT_KHARAB:1e11},_={UNIT_SAU:"sau",UNIT_HAZAAR:"hazaar",UNIT_LAKH:"lakh",UNIT_MILLION:"million",UNIT_CRORE:"crore",UNIT_BILLION:"billion",UNIT_ARAB:"arab",UNIT_KHARAB:"kharab"},BA={PFX_PAAV:{standalone:.25,op:null},PFX_AADHA:{standalone:.5,op:null},PFX_PAUNE:{standalone:.75,op:"sub25",min_n:2},PFX_SAVA:{standalone:1.25,op:"add25",min_n:2},PFX_DEDH:{standalone:1.5,op:null},PFX_DHAI:{standalone:2.5,op:null},PFX_SAADHE:{standalone:.5,op:"add5",min_n:3}};function uA(A){return A in BA}function cA(A){return A.startsWith("CARD_")}function aA(A){return A in QA}function iA(A){return parseInt(A.split("_",2)[1],10)}function K(A){return QA[A]}var VA=new Set(["SEP","RANGE","DOT","COMMA"]),EA=new Set([...VA,"O"]),sA=["PFX_","CARD_","UNIT_"],qA=["PFX_","CARD_","UNIT_"],ZA=new Set(["-","\u2013","\u2014","/"]),$A=new Set(["k","K","l","L"]),lA=/['’]([A-Za-zऀ-ॿ]{1,2})(?![A-Za-zऀ-ॿ])/g;function Ae(A){return sA.some(e=>A.startsWith(e))||A==="DIGITS"}function ee(A){return qA.some(e=>A.startsWith(e))}var V=O.O,U=O.SEP,W=O.RANGE,ne=O.DIGITS,re=O.DOT,te=O.COMMA,Be=/\p{L}|\p{M}/u;function R(A){return Be.test(A)?"letter":/[0-9]/.test(A)?"digit":/\s/.test(A)?"space":"punct"}function fe(A){let e=[],r=0,n=A.length;for(;r<n;){let f=R(A[r]),t=r+1;for(;t<n&&R(A[t])===f;)t++;e.push({type:f,start:r,end:t}),r=t}return e}function se(A,e,r){let n=new Map;for(let v=e;v<r;v++){let w=A[v];ee(F[w])&&n.set(w,(n.get(w)??0)+1)}if(n.size===0)return V;let f=-1;for(let v of n.values())v>f&&(f=v);let t=[...n.entries()].filter(([,v])=>v===f).map(([v])=>v);if(t.length===1)return t[0];let s=-1,B=1/0,g=t[0];for(let v of t){let w=0,P=0,o=1/0;for(let D=e;D<r;D++)A[D]===v?(o===1/0&&(o=D),w++,w>P&&(P=w)):w=0;(P>s||P===s&&o<B)&&(s=P,B=o,g=v)}return g}function hA(A,e,r){let n=[],f=e;for(;f<r;){let B=f+1;for(;B<r&&A[B]===A[f];)B++;n.push({start:f,end:B,cls:A[f]}),f=B}let t=se(A,e,r),s=[];for(let B=0;B<n.length;B++){let g=n[B];if(g.end-g.start>=3){s.push([g.start,g.end,g.cls]);continue}let w=B>0?n[B-1]:null,P=B<n.length-1?n[B+1]:null,o=w!==null&&w.end-w.start>=3,D=P!==null&&P.end-P.start>=3,Q;if(o&&D){let u=w.end-w.start;Q=P.end-P.start>u?P.cls:w.cls}else o?Q=w.cls:D?Q=P.cls:Q=t;s.push([g.start,g.end,Q])}return s}function ge(A){return sA.some(e=>A.startsWith(e))||A==="DIGITS"}function IA(A,e,r,n){if(A==="digit")return"DIGITS";if(A==="letter"){let f=hA(n,e,r),t=new Map;for(let[g,v,w]of f)t.set(w,(t.get(w)??0)+(v-g));let s=-1,B=-1;for(let[g,v]of t)v>B&&(B=v,s=g);return s>=0?F[s]:null}return null}function bA(A,e,r){let n=e+r;if(n<0||n>=A.length||A[n].type==="space"&&(n+=r,n<0||n>=A.length))return null;let f=A[n];return f.type==="digit"||f.type==="letter"?f:null}function oe(A,e,r){let n=bA(A,e,-1),f=bA(A,e,1);if(!n||!f)return!1;let t=IA(n.type,n.start,n.end,r),s=IA(f.type,f.start,f.end,r);return!t||!s||!ge(t)?!1:s==="DIGITS"||s.startsWith("CARD_")||s.startsWith("PFX_")}function ve(A,e){let r=A.length,n=new Array(r),f=fe(A);for(let t=0;t<f.length;t++){let s=f[t],{type:B,start:g,end:v}=s;if(B==="digit"){for(let D=g;D<v;D++)n[D]=ne;continue}if(B==="space"){let D=!1;for(let u=g;u<v;u++)if(e[u]===W){D=!0;break}let Q=D?W:U;for(let u=g;u<v;u++)n[u]=Q;continue}if(B==="letter"){for(let[D,Q,u]of hA(e,g,v))for(let I=D;I<Q;I++)n[I]=u;continue}let w=t>0?f[t-1].type:null,P=t<f.length-1?f[t+1].type:null,o=U;if(v-g===1){let D=A[g];(D==="."||D===",")&&w==="digit"&&P==="digit"?o=D==="."?re:te:ZA.has(D)&&oe(f,t,e)?o=W:o=U}for(let D=g;D<v;D++)n[D]=o}return n}function we(A,e){let r=Array.from({length:e},(n,f)=>A[f]);for(let n=1;n<e-1;n++)A[n]===0&&(A[n-1]===1||A[n-1]===2)&&A[n+1]===2&&(r[n]=2);return r}function HA(A){return A!==void 0&&A>="0"&&A<="9"}function Pe(A,e,r){if(r<=e||!HA(A[r-1]))return r;let n=r;for(;n<A.length&&HA(A[n]);)n++;return n}var De=24;function Ce(A,e,r){let n=[],f=e;for(;f<r;){let B=f+1;for(;B<r&&A[B]===A[f];)B++;n.push({start:f,end:B,cls:A[f]}),f=B}let t=[];for(let B=0;B<n.length;B++){let g=n[B];if(g.end-g.start>=3){t.push(g.cls);continue}let v=B>0?n[B-1]:null,w=B<n.length-1?n[B+1]:null,P=v!==null&&v.end-v.start>=3,o=w!==null&&w.end-w.start>=3;if(P&&o){let D=v.end-v.start,Q=w.end-w.start;t.push(Q>D?w.cls:v.cls)}else if(P)t.push(v.cls);else if(o)t.push(w.cls);else return null}return new Set(t).size===1?t[0]:null}function Qe(A,e,r){let n=A.length,f=Array.from({length:n},(t,s)=>A[s]);for(let[t,s]of r){let B=s-t;if(B===0||B>De)continue;let g=!1,v=!0;for(let P=t;P<s;P++)A[P]===1||A[P]===2?g=!0:v=!1;if(!g||v)continue;let w=Ce(e,t,s);if(!(w===null||!fA(F[w]))){for(let P=t;P<s;P++)f[P]=2;f[t]=1}}return f}function ue(A){let e=[],r=0,n=A.length;for(;r<n;)if(R(A[r])==="letter"){let f=r+1;for(;f<n&&R(A[f])==="letter";)f++;e.push([r,f]),r=f}else r++;return e}function fA(A){return sA.some(e=>A.startsWith(e))&&A!=="DIGITS"}function ce(A,e,r,n,f){let t=Array.from({length:n.length},(s,B)=>n[B]);for(let[s,B]of f){if(B<=e||s>=r)continue;let g=Math.max(s,e),v=Math.min(B,r),w=s>=e&&B<=r;if(w){for(let P=s;P<B;P++)if(!fA(F[t[P]])){w=!1;break}}if(w){B-s===1&&F[t[s]].startsWith("UNIT_")&&$A.has(A[s])&&B<A.length&&R(A[B])==="letter"&&(t[s]=V);continue}for(let P=g;P<v;P++)fA(F[t[P]])&&(t[P]=V)}return t}function ae(A,e,r,n){let f=Array.from({length:n.length},(B,g)=>n[g]),t=A.slice(e,r);lA.lastIndex=0;let s;for(;s=lA.exec(t);)for(let B=e+s.index;B<e+s.index+s[0].length;B++)f[B]=V;return f}function ie(A){let e=new Map;for(let s of A)e.set(s,(e.get(s)??0)+1);let r=-1;for(let s of e.values())s>r&&(r=s);let n=[...e.entries()].filter(([,s])=>s===r).map(([s])=>s);if(n.length===1)return n[0];let f=-1,t=n[0];for(let s of n){let B=0,g=0;for(let v of A)v===s?(B++,B>g&&(g=B)):B=0;g>f&&(f=g,t=s)}return t}function Ee(A,e,r){if(r.length<2)return r;let n=[r[0]];for(let f of r.slice(1)){let t=n[n.length-1],s=t.end,B=f.start,g=A.slice(s,B),v=g.length,w=0;for(;w<v&&R(g[w])==="space";)w++;let P=w;for(;w<v&&R(g[w])==="letter";)w++;let o=w;for(;w<v&&R(g[w])==="space";)w++;if(P===o||w!==v){n.push(f);continue}let D=s+P,Q=s+o,u=[];for(let E=D;E<Q;E++)u.push(e[E]);if(F[ie(u)]!=="RANGE"){n.push(f);continue}let i=[];P>0&&i.push([U,g.slice(0,P)]),i.push([W,g.slice(P,o)]),o<v&&i.push([U,g.slice(o,v)]);let C=t.confidence===null||f.confidence===null?null:(t.confidence+f.confidence)/2;n[n.length-1]={start:t.start,end:f.end,text:A.slice(t.start,f.end),tokens:[...t.tokens,...i,...f.tokens],confidence:C}}return n}function dA(A,e,r,n){let f=A.length,t=ue(A),s=we(e,f);s=Qe(s,r,t);let B=[],g=null;for(let P=0;P<f;P++){let o=s[P];o===1?(g!==null&&B.push([g,P]),g=P):o===2||g!==null&&(B.push([g,P]),g=null)}g!==null&&B.push([g,f]);for(let P=0;P<B.length;P++)B[P]=[B[P][0],Pe(A,B[P][0],B[P][1])];let v=Array.from({length:f},(P,o)=>r[o]),w=[];for(let[P,o]of B){let D=A.slice(P,o),Q=Array.from({length:o-P},(c,a)=>v[P+a]),u=ve(D,Q);for(let c=P;c<o;c++)v[c]=u[c-P];v=ce(A,P,o,v,t),v=ae(A,P,o,v);let I=P,i=[];for(let c=P+1;c<=o;c++)(c===o||v[c]!==v[I])&&(i.push([v[I],I,c]),I=c);let C=0,E=i.length;for(;C<E&&EA.has(F[i[C][0]]);)C++;for(;E>C&&EA.has(F[i[E-1][0]]);)E--;let b=i.slice(C,E);if(b.length===0)continue;let d=b[0][1],L=b[b.length-1][2];if(!b.some(([c])=>Ae(F[c])))continue;let l=null;if(n){let c=[];for(let a=d;a<L;a++)c.push(Math.max(...n[a]));if(l=c.length?c.reduce((a,h)=>a+h,0)/c.length:0,l<.5)continue}w.push({start:d,end:L,text:A.slice(d,L),tokens:b.map(([c,a,h])=>[c,A.slice(a,h)]),confidence:l})}return Ee(A,r,w)}function le(A){let e=[],r="",n=!1,f=()=>{if(n){let t=r.replace(/,/g,""),s=parseFloat(t);e.push(["NUM",Number.isNaN(s)?0:s])}r="",n=!1};for(let[t,s]of A)t!=="SEP"&&(t==="DIGITS"||t==="DOT"||t==="COMMA"?(r+=s,n=!0):(f(),e.push([t,s])));return f(),e}function Ie(A,e){if(e!==null){let r=BA[e];if(r===void 0)return A!==null?A:1;if(A!==null&&r.op){if(r.op==="sub25")return A-.25;if(r.op==="add25")return A+.25;if(r.op==="add5")return A+.5}return r.standalone}return A!==null?A:1}function be(A){let e=le(A),r=0,n=null,f=null,t=null,s=null;function B(g){let v=Ie(t,s);if(g===null)r+=v*1;else{let w=K(g);n!==null&&w>n?r=r*w:r=r+v*w,n=w,(f===null||w>K(f))&&(f=g)}t=null,s=null}for(let[g,v]of e)if(g==="NUM")t!==null&&B(null),t=v;else if(cA(g)){t!==null&&B(null);try{t=iA(g)}catch{}}else if(uA(g))s!==null&&B(null),s=g;else if(aA(g))B(g);else continue;return(t!==null||s!==null)&&B(null),[r,f]}function X(A){let e=Math.round(A),r=Math.max(1e-6,Math.abs(A)*1e-9);return Math.abs(A-e)<r?e:Math.round(A*1e6)/1e6}function He(A){let e=[],r=0;for(;r<A.length;){let[n,f]=A[r];if(n.startsWith("PFX_")){let t=f,s=r+1;for(;;){let B=s;if(B<A.length&&A[B][0]==="SEP"&&B++,B<A.length&&A[B][0]===n){for(let g=s;g<=B;g++)t+=A[g][1];s=B+1;continue}break}e.push([n,t]),r=s}else e.push(A[r]),r++}return e}function FA(A){try{let e=A.map(o=>o[0]),r=He(A),n=[[]];for(let[o,D]of r){if(o==="RANGE"){n.length<2&&n.push([]);continue}n[n.length-1].push([o,D])}let f=n.filter(o=>o.length>0).map(o=>be(o));if(f.length===0)return{value:0,range:null,unit:null,classes:e,currency:null};if(f.length===1){let[o,D]=f[0];return{value:X(o),range:null,unit:D?_[D]??null:null,classes:e,currency:null}}let[t,s]=f[0],[B,g]=f[1];if(s!==null&&g!==null&&t>B)return{value:X(t+B),range:null,unit:_[s]??null,classes:e,currency:null};let v;s===null&&g!==null?(t=t*K(g),v=g):v=s!==null?s:g;let[w,P]=t<=B?[t,B]:[B,t];return{value:X(w),range:[X(w),X(P)],unit:v?_[v]??null:null,classes:e,currency:null}}catch{return{value:0,range:null,unit:null,classes:A.map(e=>e[0]),currency:null}}}function he(A){let e=!1;for(let[r]of A)if(r==="DIGITS")e=!0;else if(r.startsWith("UNIT_")||r.startsWith("PFX_")||r.startsWith("CARD_"))return!1;return e}function MA(A){if(!he(A))return!1;let e=0,r=!1;for(let[n,f]of A)n==="DIGITS"?e+=f.length:n==="COMMA"&&(r=!0);return e<=4&&!r||e>=10}var de=new Set(["SEP","RANGE","DOT","COMMA","O"]);function LA(A){let e=A.filter(([n])=>!de.has(n));if(e.length!==1)return!1;let[r]=e[0];if(r!=="UNIT_KHARAB"&&r!=="UNIT_MILLION")return!1;for(let[n]of A)if(n==="DIGITS"||n.startsWith("CARD_")||n.startsWith("PFX_"))return!1;return!0}function zA(...A){let e=(n,f)=>f.length-n.length,r=n=>[...new Set(n.flat())].sort(e);return{currency_markers_before:r(A.map(n=>n.currency_markers_before??[])),currency_words_after:r(A.map(n=>n.currency_words_after??[]))}}function RA(A,e,r,n){let f=A.slice(Math.max(0,e-8),e),t=A.slice(r,r+8),B=f.replace(/\s+$/,"").toLowerCase(),g=[...n.currency_markers_before??[]].sort((o,D)=>D.length-o.length);for(let o of g){let D=o.replace(/\.+$/,"").toLowerCase();if(B.endsWith(o.toLowerCase())||B.endsWith(D))return"INR"}let w=t.replace(/^\s+/,"").toLowerCase(),P=[...n.currency_words_after??[]].sort((o,D)=>D.length-o.length);for(let o of P){let D=o.toLowerCase();if(w.startsWith(D))return"INR"}return null}var OA={currency_markers_before:["\u20B9","Rs","Rs.","rs","INR","Re"],currency_words_after:["rupaye","rupay","rupees","rupiya","rupya","/-"]};var xA={currency_markers_before:["\u20B9","\u0930\u0941","\u0930\u0941.","Rs","Rs.","INR"],currency_words_after:["\u0930\u0941\u092A\u092F\u0947","\u0930\u0941\u092A\u090F","\u0930\u0942\u092A\u092F\u0947","\u0930\u0941\u092A\u092F\u093E","/-"]};var Fe=`
2
2
  struct Params { batch: u32, length: u32, embedDim: u32, vocab: u32, stride: u32 };
3
3
  @group(0) @binding(0) var<uniform> p: Params;
4
4
  @group(0) @binding(1) var<storage, read> charIds: array<i32>;
@@ -17,7 +17,7 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
17
17
  xOut[(b * p.embedDim + c) * p.length + t] = embed[cid * p.embedDim + c];
18
18
  }
19
19
  }
20
- `,ie=`
20
+ `,Me=`
21
21
  struct Params { batch: u32, length: u32, cIn: u32, cOut: u32, k: u32, padding: u32, dilation: u32, relu: u32, residual: u32, stride: u32 };
22
22
  @group(0) @binding(0) var<uniform> p: Params;
23
23
  @group(0) @binding(1) var<storage, read> x: array<f32>; // (batch, cIn, L)
@@ -52,7 +52,7 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
52
52
  }
53
53
  out[(b * p.cOut + oc) * p.length + t] = acc;
54
54
  }
55
- `,le=`
55
+ `,Le=`
56
56
  struct Params { batch: u32, length: u32, cIn: u32, nOut: u32, stride: u32 };
57
57
  @group(0) @binding(0) var<uniform> p: Params;
58
58
  @group(0) @binding(1) var<storage, read> x: array<f32>; // (batch, cIn, L)
@@ -76,4 +76,4 @@ fn main(@builtin(global_invocation_id) gid: vec3<u32>) {
76
76
  }
77
77
  out[(b * p.length + t) * p.nOut + o] = acc;
78
78
  }
79
- `;function sA(){return typeof navigator<"u"&&!!navigator.gpu}var V=null;function gA(){return V||(V=(async()=>{if(!sA())return!1;try{return await navigator.gpu.requestAdapter()!==null}catch{return!1}})(),V)}var q=class{weights;state=null;constructor(e){this.weights=e}async init(){if(this.state)return this.state;if(!sA())throw new Error("WebGPU is not available in this environment");let e=await navigator.gpu.requestAdapter();if(!e)throw new Error("No WebGPU adapter available");let n=await e.requestDevice(),B=(t,g)=>{let o=n.createBuffer({size:Math.max(4,t.byteLength),usage:g,mappedAtCreation:!0});return new Float32Array(o.getMappedRange()).set(t),o.unmap(),o},f=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,r=this.weights,s=r.conv.map(t=>({w:B(t.w.data,f),b:B(t.b,f)}));return this.state={device:n,embedModule:n.createShaderModule({code:Ee}),convModule:n.createShaderModule({code:ie}),headModule:n.createShaderModule({code:le}),embedBuf:B(r.embed.data,f),convBufs:s,bioBuf:{w:B(r.bio.w.data,f),b:B(r.bio.b,f)},clsBuf:{w:B(r.cls.w.data,f),b:B(r.cls.b,f)}},this.state}async run(e,n,B){let f=await this.init(),{device:r}=f,s=this.weights,t=s.embed.shape[1],g=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,o=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,P=r.createBuffer({size:e.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});new Int32Array(P.getMappedRange()).set(e),P.unmap();let w=E=>{let c=r.createBuffer({size:E.byteLength,usage:o,mappedAtCreation:!0});return new Uint32Array(c.getMappedRange()).set(E),c.unmap(),c},C=r.limits?.maxComputeWorkgroupsPerDimension??65535,D=E=>{let c=Math.max(1,Math.ceil(E/64)),a=Math.min(c,C),h=Math.ceil(c/a);return{x:a,y:h,stride:a*64}},u=(E,c,a)=>{let h=r.createBindGroup({layout:E.getBindGroupLayout(0),entries:c}),F=r.createCommandEncoder(),b=F.beginComputePass();b.setPipeline(E),b.setBindGroup(0,h),b.dispatchWorkgroups(a.x,a.y),b.end(),r.queue.submit([F.finish()])},Q=r.createBuffer({size:n*t*B*4,usage:g});{let E=D(n*B),c=w(new Uint32Array([n,B,t,s.embed.shape[0],E.stride])),a=r.createComputePipeline({layout:"auto",compute:{module:f.embedModule,entryPoint:"main"}});u(a,[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:P}},{binding:2,resource:{buffer:f.embedBuf}},{binding:3,resource:{buffer:Q}}],E)}let l=t,I=s.conv,v=r.createComputePipeline({layout:"auto",compute:{module:f.convModule,entryPoint:"main"}});for(let E=0;E<I.length;E++){let c=I[E],[a,,h]=c.w.shape,F=c.dilation,b=c.padding,G=r.createBuffer({size:n*a*B*4,usage:g}),Y=D(n*a*B),GA=w(new Uint32Array([n,B,l,a,h,b,F,1,c.residual?1:0,Y.stride]));u(v,[{binding:0,resource:{buffer:GA}},{binding:1,resource:{buffer:Q}},{binding:2,resource:{buffer:f.convBufs[E].w}},{binding:3,resource:{buffer:f.convBufs[E].b}},{binding:4,resource:{buffer:G}}],Y),Q=G,l=a}let H=r.createComputePipeline({layout:"auto",compute:{module:f.headModule,entryPoint:"main"}}),i=async(E,c)=>{let a=r.createBuffer({size:n*B*c*4,usage:g}),h=D(n*B*c),F=w(new Uint32Array([n,B,l,c,h.stride]));u(H,[{binding:0,resource:{buffer:F}},{binding:1,resource:{buffer:Q}},{binding:2,resource:{buffer:E.w}},{binding:3,resource:{buffer:E.b}},{binding:4,resource:{buffer:a}}],h);let b=r.createBuffer({size:n*B*c*4,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),G=r.createCommandEncoder();G.copyBufferToBuffer(a,0,b,0,n*B*c*4),r.queue.submit([G.finish()]),await b.mapAsync(GPUMapMode.READ);let Y=new Float32Array(b.getMappedRange().slice(0));return b.unmap(),Y},d=await i(f.bioBuf,s.bio.w.shape[0]),M=await i(f.clsBuf,s.cls.w.shape[0]);return{bio:d,cls:M}}};var RA={version:2,quantized:"int8_symmetric_per_tensor",charset:["<pad>","<unk>"," ","!",'"',"#","%","'","(",")","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":","=","?","@","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","}","~","\u0901","\u0902","\u0903","\u0905","\u0906","\u0907","\u0908","\u0909","\u090A","\u090F","\u0911","\u0913","\u0914","\u0915","\u0916","\u0917","\u0918","\u091A","\u091B","\u091C","\u091D","\u091F","\u0920","\u0921","\u0922","\u0923","\u0924","\u0925","\u0926","\u0927","\u0928","\u092A","\u092B","\u092C","\u092D","\u092E","\u092F","\u0930","\u0932","\u0935","\u0936","\u0937","\u0938","\u0939","\u093C","\u093E","\u093F","\u0940","\u0941","\u0942","\u0947","\u0948","\u0949","\u094B","\u094C","\u094D","\u20B9"],classes:["O","SEP","RANGE","DIGITS","DOT","COMMA","PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE","CARD_1","CARD_2","CARD_3","CARD_4","CARD_5","CARD_6","CARD_7","CARD_8","CARD_9","CARD_10","CARD_11","CARD_12","CARD_13","CARD_14","CARD_15","CARD_16","CARD_17","CARD_18","CARD_19","CARD_20","CARD_21","CARD_22","CARD_23","CARD_24","CARD_25","CARD_26","CARD_27","CARD_28","CARD_29","CARD_30","CARD_31","CARD_32","CARD_33","CARD_34","CARD_35","CARD_36","CARD_37","CARD_38","CARD_39","CARD_40","CARD_41","CARD_42","CARD_43","CARD_44","CARD_45","CARD_46","CARD_47","CARD_48","CARD_49","CARD_50","CARD_51","CARD_52","CARD_53","CARD_54","CARD_55","CARD_56","CARD_57","CARD_58","CARD_59","CARD_60","CARD_61","CARD_62","CARD_63","CARD_64","CARD_65","CARD_66","CARD_67","CARD_68","CARD_69","CARD_70","CARD_71","CARD_72","CARD_73","CARD_74","CARD_75","CARD_76","CARD_77","CARD_78","CARD_79","CARD_80","CARD_81","CARD_82","CARD_83","CARD_84","CARD_85","CARD_86","CARD_87","CARD_88","CARD_89","CARD_90","CARD_91","CARD_92","CARD_93","CARD_94","CARD_95","CARD_96","CARD_97","CARD_98","CARD_99","UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],embed_dim:16,channels:48,embed:{shape:[115,16],scale:.029206380248069763,data_b64:"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"},conv:[{k:5,dilation:1,residual:!1,w:{shape:[48,16,5],scale:.005528415087610483,data_b64:"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"},b:[-.42246,-.0030015,-.39637,-.5094,-.31567,-.0066605,-.2116,-.14381,-.45926,.032123,.1051,-.068757,-.176,-.24408,-.22495,.14888,-.34372,-.015254,-.075969,-.38499,-.55512,-.42426,-.53993,.33177,-.20909,-.010612,-.25817,-.36655,-.6817,-.27189,-.46838,-.20614,.24502,.23912,-.50761,-.14509,-.035654,-.67123,-.2002,-.26759,-.13114,-.07664,-.34302,-.3735,-.44522,-.18075,-.079652,-.066312]},{k:3,dilation:1,residual:!0,w:{shape:[48,48,3],scale:.02171662636101246,data_b64:"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"},b:[.10809,.26585,.094204,.14064,-.0069209,.14709,.023642,.17102,.12289,-.1588,.0013055,.11863,.42029,.21744,.085736,-.042563,.014954,-.16326,-.1126,-.0021493,-.1829,.13248,.12985,.64143,.41735,.43393,-.014888,-.21078,-.12343,.10631,.17523,-.34975,.20128,.043467,.29196,-.066172,.40999,.11899,.089091,-.099698,.46059,-.13938,.18717,.065401,.11365,.23228,.71649,1.0244]},{k:3,dilation:2,residual:!0,w:{shape:[48,48,3],scale:.011372479610145092,data_b64:"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"},b:[-.045669,.365,.16298,.056926,.061365,.17121,.31628,.60688,.23114,.09403,-.40148,.18148,.75038,.50584,.15352,.29074,.44291,.12645,-.18931,.47873,-.38551,.28317,.55262,.39227,.38131,1.2725,-.064018,-.040631,-.09375,.14131,.44183,-.048867,-.17769,-.10518,.14749,-.22889,.65898,-.10786,.25988,.064485,.74896,.57062,.44417,.27367,.70502,.078341,.99578,.91641]},{k:3,dilation:4,residual:!0,w:{shape:[48,48,3],scale:.016013650223612785,data_b64:"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"},b:[.12815,.87146,.33192,.44547,-.007632,.33449,.31869,.91658,.61102,-.0034602,.26675,.65376,.12435,.4758,1.1636,.0035353,1.2932,.70309,.076384,.048984,-.051782,.23859,.012983,-.050207,-.0084905,1.0506,-.22662,.24729,.0080632,.80607,.092929,.38957,-.21694,.15222,.59882,-.020806,.97913,.055986,.054323,.3747,1.1563,.82255,1.5244,.31746,.042843,-.28672,1.1229,1.0624]},{k:3,dilation:8,residual:!0,w:{shape:[48,48,3],scale:.014567811042070389,data_b64:"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"},b:[-.10209,-.4862,-1.2464,-1.1972,-.10959,.017397,1.2648,.77302,.52286,.84262,-.029006,1.8643,.13893,1.5804,.15474,-.31713,1.4025,-1.4027,.18632,.012404,-.076322,1.1977,1.2403,-.041636,.28303,1.1963,-1.6589,.0090801,-.069721,.38039,-.11284,1.349,-2.4128,.26607,.66346,.65388,.017525,-.3425,-.0726,.3579,.22987,.2369,-.15815,.018548,.89442,.070234,2.0972,-1.0126]}],bio:{w:{shape:[3,48],scale:.004168502055108547,data_b64:"7/sUIBkCDfPuy/0QBkbd9yMICfLwBPDvEfo37vHv+PuB9g6gDvn9+kHvB+7vzgBSJDsbaN4CDfLwxCAVB9X++AwdCt/1Btv+E8TI2fjw2/cC+g4ND/n2/OPvCPDu2wEqKOLO7e8CDfPwSwEOCL8I9/zkCh0XBu0bEyXrGADxLPti+w4sD/n5+7bwB+8WNgGo"},b:[.18046,-.7663,.072858]},cls:{w:{shape:[120,48],scale:.00567670026794076,data_b64:"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"},b:[2.0027,1.2945,-.28072,.72027,-1.0331,-1.6638,-.21735,-.33161,.086345,.29916,-.3261,.078574,.90926,-.83461,-.84115,-.14665,-.044583,-.19085,-.13869,-.49243,-.88449,-.34868,-.53668,.09578,-.53226,-.35943,-.89781,-1.058,-.73711,.094275,-.77523,-.35261,.21741,-.54233,-.3885,-.46544,-.68879,-.67397,-.68836,-.77007,-.76595,-.36312,.41362,-.58424,-.8435,-.67918,-.70729,-.65979,-.77047,-.37647,-.49488,-63573e-8,-.5059,-.98657,-.52866,-.51039,-.17223,-.27703,.16426,-.05408,-.22805,.055086,-.31279,-.3578,-.98577,-.075522,-.5297,-.32323,-.058951,-.59986,-.063719,-.49272,-.49078,.38117,-.28573,-.33333,-.19816,-.64504,-.40924,-.19423,-.30237,-.27751,-.21272,-.32228,-.26795,-.53006,.055159,-.45349,-.11935,-.46747,-.57663,-.23346,.39296,-.80921,-.67229,-.56665,-.5278,-.84155,-.27958,-.94085,-.59683,-.74172,-.57104,-.29101,-.54431,-.79465,-.13767,-.62478,.014713,-.50479,-.36415,-.42477,.77882,.7003,.8939,.0061365,.66724,.0084922,-.13957,-.83726]}};var $=class{weights;charToId;gpu=null;defaultBackend;scratch;idsScratch=new Int32Array(O);bioIdsScratch=new Int32Array(128);clsIdsScratch=new Int32Array(128);bioProbsScratch=Array.from({length:128},()=>new Float32Array(3));constructor(e={}){this.weights=PA(e.weights??RA),this.charToId=CA(this.weights.charset),this.defaultBackend=e.backend??"cpu",this.scratch=new j(this.weights)}parse(e,n={}){if(typeof e!="string")return[];let B=e;e=k(e);let f=B.length===e.length,r,s=eA(e.length);if(s.length===1&&s[0].length===e.length){let t=R(e.length),g=x(e,this.charToId,this.idsScratch,t),o=S(this.weights,g,this.scratch);r=this.decodeForward(e,o,0,e.length)}else{let t=[],g=new Set;for(let o of s){let P=e.slice(o.offset,o.offset+o.length),w=R(P.length),C=x(P,this.charToId,this.idsScratch,w),D=S(this.weights,C,this.scratch),u=this.decodeForward(P,D,o.offset,P.length);for(let Q of u){let l=`${Q.start}:${Q.end}`;g.has(l)||(g.add(l),t.push(Q))}}t.sort((o,P)=>o.start-P.start),r=t}if(f)for(let t of r)t.span=B.slice(t.start,t.end);return r}decodeForward(e,n,B,f=n.length){let r=f,s=r<=128,t=s?this.bioIdsScratch:new Int32Array(r),g=s?this.clsIdsScratch:new Int32Array(r),o=s?this.bioProbsScratch:Array.from({length:r},()=>new Float32Array(3));for(let C=0;C<r;C++)t[C]=p(n.bioLogits,C*3,3),g[C]=p(n.clsLogits,C*n.nCls,n.nCls),BA(n.bioLogits,C*3,3,o[C]);let P=hA(e,t.subarray(0,r),g.subarray(0,r),o),w=[];for(let C of P){let D=C.tokens.map(([l,I])=>[L[l],I]),u=MA(e,C.start,C.end,He);if(FA(D)&&u===null)continue;let Q=dA(D);w.push({span:C.text,start:C.start+B,end:C.end+B,value:Q.value,...Q.range?{range:Q.range}:{},unit:Q.unit??null,currency:u,confidence:C.confidence??0,classes:Q.classes})}return w}inspect(e){let n=performance.now();typeof e!="string"&&(e="");let B=k(e),f=eA(B.length),r=new Array(B.length),s=new Array(B.length).fill(!1);for(let o of f){let P=B.slice(o.offset,o.offset+o.length),w=R(P.length),C=x(P,this.charToId,this.idsScratch,w),D=S(this.weights,C,this.scratch);for(let u=0;u<P.length;u++){let Q=o.offset+u;if(s[Q])continue;s[Q]=!0;let l=p(D.bioLogits,u*3,3),I=new Float32Array(3);BA(D.bioLogits,u*3,3,I);let v=p(D.clsLogits,u*D.nCls,D.nCls);r[Q]={ch:P[u],bio:l,bioProb:[I[0],I[1],I[2]],cls:L[v],clsId:v}}}let t=this.parse(e),g=performance.now()-n;return{text:B,chars:r,spans:t,ms:g}}modelInfo(){let e=this.weights,n=e.embed.data.length;for(let f of e.conv)n+=f.w.data.length+f.b.length;n+=e.bio.w.data.length+e.bio.b.length,n+=e.cls.w.data.length+e.cls.b.length;let B=e.conv.length?Math.max(...e.conv.map(f=>f.w.shape[0])):e.embed.shape[1];return{version:e.version,params:n,channels:B,embedDim:e.embed.shape[1],vocab:e.embed.shape[0],classes:e.classes.length,layers:e.conv.map(f=>({k:f.k,dilation:f.dilation,residual:f.residual}))}}async parseBatch(e,n={}){e=e.map(P=>typeof P=="string"?P:"");let B=n.backend??this.defaultBackend;if(!(B==="webgpu"||B==="auto"&&e.length>=32&&await gA()))return e.map(P=>this.parse(P,{backend:"cpu"}));let r=e,s=e.map(k),t=new Array(e.length),g=[],o=[];for(let P=0;P<s.length;P++)s[P].length<=128?g.push(P):o.push(P);for(let P of o)t[P]=this.parse(r[P],{backend:"cpu"});if(g.length>0){this.gpu||(this.gpu=new q(this.weights));let P=Math.max(...g.map(v=>s[v].length),1),w=R(P),C=g.length,D=new Int32Array(C*w),u=this.charToId.get("<pad>")??0;D.fill(u);for(let v=0;v<C;v++){let H=s[g[v]],i=x(H,this.charToId);D.set(i,v*w)}let{bio:Q,cls:l}=await this.gpu.run(D,C,w),I=this.weights.cls.w.shape[0];for(let v=0;v<C;v++){let H=g[v],i=s[H],d=r[H],M=d.length===i.length,E=i.length,c=new Float32Array(E*3),a=new Float32Array(E*I);for(let b=0;b<E;b++)c.set(Q.subarray((v*w+b)*3,(v*w+b)*3+3),b*3),a.set(l.subarray((v*w+b)*I,(v*w+b)*I+I),b*I);let h={bioLogits:c,clsLogits:a,length:E,nCls:I},F=this.decodeForward(i,h,0,E);if(M)for(let b of F)b.span=d.slice(b.start,b.end);t[H]=F}}return t}},oA=null;function AA(){return oA||(oA=new $),oA}function Se(A,e={}){return AA().parse(A,e)}function Je(A,e={}){return AA().parseBatch(A,e)}function Ke(A){return AA().inspect(A)}function _e(){return AA().modelInfo()}function We(A={}){return new $(A)}var He=LA(OA,UA);export{L as CLASSES,$ as Parser,We as createParser,Ke as inspect,sA as isWebGPUAvailable,_e as modelInfo,k as normalizeText,Se as parse,Je as parseBatch,gA as probeWebGPU};
79
+ `;function gA(){return typeof navigator<"u"&&!!navigator.gpu}var q=null;function oA(){return q||(q=(async()=>{if(!gA())return!1;try{return await navigator.gpu.requestAdapter()!==null}catch{return!1}})(),q)}var Z=class{weights;state=null;constructor(e){this.weights=e}async init(){if(this.state)return this.state;if(!gA())throw new Error("WebGPU is not available in this environment");let e=await navigator.gpu.requestAdapter();if(!e)throw new Error("No WebGPU adapter available");let r=await e.requestDevice(),n=(B,g)=>{let v=r.createBuffer({size:Math.max(4,B.byteLength),usage:g,mappedAtCreation:!0});return new Float32Array(v.getMappedRange()).set(B),v.unmap(),v},f=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,t=this.weights,s=t.conv.map(B=>({w:n(B.w.data,f),b:n(B.b,f)}));return this.state={device:r,embedModule:r.createShaderModule({code:Fe}),convModule:r.createShaderModule({code:Me}),headModule:r.createShaderModule({code:Le}),embedBuf:n(t.embed.data,f),convBufs:s,bioBuf:{w:n(t.bio.w.data,f),b:n(t.bio.b,f)},clsBuf:{w:n(t.cls.w.data,f),b:n(t.cls.b,f)}},this.state}async run(e,r,n){let f=await this.init(),{device:t}=f,s=this.weights,B=s.embed.shape[1],g=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,v=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,w=t.createBuffer({size:e.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});new Int32Array(w.getMappedRange()).set(e),w.unmap();let P=l=>{let c=t.createBuffer({size:l.byteLength,usage:v,mappedAtCreation:!0});return new Uint32Array(c.getMappedRange()).set(l),c.unmap(),c},o=t.limits?.maxComputeWorkgroupsPerDimension??65535,D=l=>{let c=Math.max(1,Math.ceil(l/64)),a=Math.min(c,o),h=Math.ceil(c/a);return{x:a,y:h,stride:a*64}},Q=(l,c,a)=>{let h=t.createBindGroup({layout:l.getBindGroupLayout(0),entries:c}),M=t.createCommandEncoder(),H=M.beginComputePass();H.setPipeline(l),H.setBindGroup(0,h),H.dispatchWorkgroups(a.x,a.y),H.end(),t.queue.submit([M.finish()])},u=t.createBuffer({size:r*B*n*4,usage:g});{let l=D(r*n),c=P(new Uint32Array([r,n,B,s.embed.shape[0],l.stride])),a=t.createComputePipeline({layout:"auto",compute:{module:f.embedModule,entryPoint:"main"}});Q(a,[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:w}},{binding:2,resource:{buffer:f.embedBuf}},{binding:3,resource:{buffer:u}}],l)}let I=B,i=s.conv,C=t.createComputePipeline({layout:"auto",compute:{module:f.convModule,entryPoint:"main"}});for(let l=0;l<i.length;l++){let c=i[l],[a,,h]=c.w.shape,M=c.dilation,H=c.padding,p=t.createBuffer({size:r*a*n*4,usage:g}),Y=D(r*a*n),pA=P(new Uint32Array([r,n,I,a,h,H,M,1,c.residual?1:0,Y.stride]));Q(C,[{binding:0,resource:{buffer:pA}},{binding:1,resource:{buffer:u}},{binding:2,resource:{buffer:f.convBufs[l].w}},{binding:3,resource:{buffer:f.convBufs[l].b}},{binding:4,resource:{buffer:p}}],Y),u=p,I=a}let E=t.createComputePipeline({layout:"auto",compute:{module:f.headModule,entryPoint:"main"}}),b=async(l,c)=>{let a=t.createBuffer({size:r*n*c*4,usage:g}),h=D(r*n*c),M=P(new Uint32Array([r,n,I,c,h.stride]));Q(E,[{binding:0,resource:{buffer:M}},{binding:1,resource:{buffer:u}},{binding:2,resource:{buffer:l.w}},{binding:3,resource:{buffer:l.b}},{binding:4,resource:{buffer:a}}],h);let H=t.createBuffer({size:r*n*c*4,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),p=t.createCommandEncoder();p.copyBufferToBuffer(a,0,H,0,r*n*c*4),t.queue.submit([p.finish()]),await H.mapAsync(GPUMapMode.READ);let Y=new Float32Array(H.getMappedRange().slice(0));return H.unmap(),Y},d=await b(f.bioBuf,s.bio.w.shape[0]),L=await b(f.clsBuf,s.cls.w.shape[0]);return{bio:d,cls:L}}};var UA={version:2,quantized:"int8_symmetric_per_tensor",charset:["<pad>","<unk>"," ","!",'"',"#","%","'","(",")","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":","=","?","@","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","}","~","\u0901","\u0902","\u0903","\u0905","\u0906","\u0907","\u0908","\u0909","\u090A","\u090F","\u0911","\u0913","\u0914","\u0915","\u0916","\u0917","\u0918","\u091A","\u091B","\u091C","\u091D","\u091F","\u0920","\u0921","\u0922","\u0923","\u0924","\u0925","\u0926","\u0927","\u0928","\u092A","\u092B","\u092C","\u092D","\u092E","\u092F","\u0930","\u0932","\u0935","\u0936","\u0937","\u0938","\u0939","\u093C","\u093E","\u093F","\u0940","\u0941","\u0942","\u0947","\u0948","\u0949","\u094B","\u094C","\u094D","\u20B9"],classes:["O","SEP","RANGE","DIGITS","DOT","COMMA","PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE","CARD_1","CARD_2","CARD_3","CARD_4","CARD_5","CARD_6","CARD_7","CARD_8","CARD_9","CARD_10","CARD_11","CARD_12","CARD_13","CARD_14","CARD_15","CARD_16","CARD_17","CARD_18","CARD_19","CARD_20","CARD_21","CARD_22","CARD_23","CARD_24","CARD_25","CARD_26","CARD_27","CARD_28","CARD_29","CARD_30","CARD_31","CARD_32","CARD_33","CARD_34","CARD_35","CARD_36","CARD_37","CARD_38","CARD_39","CARD_40","CARD_41","CARD_42","CARD_43","CARD_44","CARD_45","CARD_46","CARD_47","CARD_48","CARD_49","CARD_50","CARD_51","CARD_52","CARD_53","CARD_54","CARD_55","CARD_56","CARD_57","CARD_58","CARD_59","CARD_60","CARD_61","CARD_62","CARD_63","CARD_64","CARD_65","CARD_66","CARD_67","CARD_68","CARD_69","CARD_70","CARD_71","CARD_72","CARD_73","CARD_74","CARD_75","CARD_76","CARD_77","CARD_78","CARD_79","CARD_80","CARD_81","CARD_82","CARD_83","CARD_84","CARD_85","CARD_86","CARD_87","CARD_88","CARD_89","CARD_90","CARD_91","CARD_92","CARD_93","CARD_94","CARD_95","CARD_96","CARD_97","CARD_98","CARD_99","UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],embed_dim:16,channels:48,embed:{shape:[115,16],scale:.027303295210003853,data_b64:"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"},conv:[{k:5,dilation:1,residual:!1,w:{shape:[48,16,5],scale:.006574669387191534,data_b64:"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"},b:[-.31929,-.045999,-.40305,-.39295,-.13954,-.24104,-.53474,-.21671,-.46175,.077572,.039769,-.040953,-.48041,-.11485,-.32836,.083721,-.52205,-.22272,-.083818,-.56126,-.55955,-.60158,-.62202,.086986,.046654,.019929,-.41565,-.37971,-.13659,-.042863,-.10238,-.17997,-.30422,-.04185,-.37229,-.20252,-.13547,-.69886,-.30349,-.24882,-.25193,-.28751,-.45349,-.63501,-.42076,-.1823,.070981,-.017687]},{k:3,dilation:1,residual:!0,w:{shape:[48,48,3],scale:.01602521724998951,data_b64:"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"},b:[.056214,-.12524,.23884,.0024871,-.06175,-.31766,-.14961,-.037517,.20302,-.044519,.15582,.46601,.78273,.11867,.05001,.35455,-.034919,-.073859,-.050784,-.037817,-.41513,-.13376,.70105,.70566,.26129,.15269,-.2305,-.078317,-.22751,.13662,.25707,-.19063,.25661,-.028151,.28978,.41472,.47561,.12276,-.059242,-.49669,.57152,-.32093,.041158,.018289,-.14852,.054595,.1895,.21106]},{k:3,dilation:2,residual:!0,w:{shape:[48,48,3],scale:.011627851985394955,data_b64:"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"},b:[-.2905,-.03646,.20467,-.11792,-.068682,-.12794,.67811,.40356,-.10258,.021032,.41819,1.2684,1.3565,.29341,.12242,.30189,1.0168,.037088,-.18086,.14312,-.39863,.47754,.16237,.36304,.058092,1.1541,.11184,-.019706,.045608,1.4488,.0021099,-.21032,.030593,-.10661,.24996,-.21887,.058977,.16564,.13488,-.4112,.87899,.21653,.33517,.7668,.18889,.12303,.83771,.78421]},{k:3,dilation:4,residual:!0,w:{shape:[48,48,3],scale:.030631914734840393,data_b64:"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"},b:[.051436,.58024,.71758,-.27969,.28778,.33216,.31188,.23569,.3305,-.10469,.5278,1.6406,-.067324,.24835,.41882,-.22585,1.8259,.96147,.002934,.048236,.0073087,.60823,.31096,.12285,.042868,.89324,.23269,.11376,.24216,1.1819,.34392,-.3203,.060985,.10997,.43409,.018524,.47538,-.022916,.03208,.21715,1.9319,.34116,.42903,.89243,.058132,-.1399,.59723,.9662]},{k:3,dilation:8,residual:!0,w:{shape:[48,48,3],scale:.02437734417617321,data_b64:"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"},b:[-.095424,-1.0412,.038494,-1.8677,-.11797,.14448,1.1875,93106e-8,.53545,.49672,.35824,.25156,.49496,.2637,.65419,.99175,1.3647,-.10529,-.083752,-.012303,-.13534,.67019,.90971,-.030518,-.034959,1.9539,.41068,-.038103,-.1407,.54517,-.095919,.93171,.5754,.47958,1.0011,.31704,.44425,-1.3234,-.076986,.1531,.45021,.25218,.26872,.0026443,1.817,.19703,1.7538,-.35513]}],bio:{w:{shape:[3,48],scale:.005212794058024883,data_b64:"DQQEIPr+Cvbxuwg0A/3z9yUGFw36Be8EEQT/9vzwA/v4+wukDX/35zXzBvPw8wADEDUTQe8ADPbx8ggDBPz4+uVMAPH6A+4F+PgA7PbyAPz3+gv7CwT78ODzCPPAAAEhG9jt8v4AC/XxOwjeBPv3+grG+gMDBO4LFf3/CfbxBPz3+go+DLLzCMbzCfMuCgDo"},b:[.3519,-.45088,-.36292]},cls:{w:{shape:[120,48],scale:.005673965439200401,data_b64:"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"},b:[2.242,1.3744,-.47951,.6161,-2.4455,-1.5301,-1.0143,-.093522,.023086,.0087727,-.078257,-.17369,.020164,-.54997,-.57181,.44243,.027244,-.35139,-.89164,-.33272,-.18314,-.76673,-.54692,-.68857,-.30066,-.258,-.71149,-.31854,-.089586,-.43189,.047698,-.016066,-.81204,-.4251,-.88151,-.88009,-.79047,-.51782,-.42018,-1.1849,-.78106,-.77428,-.2046,-.38955,-1.4188,-.7007,-.31201,-.41446,-.92158,-.42966,-.86422,-.54021,-.30576,-.54322,-.63683,-.16471,-.12409,-.03448,-1.0125,-.22992,-.30688,-.54466,-.85746,.10627,-1.0269,-.95531,-.3397,-1.1359,-.60038,-1.0637,-.36039,-.94921,-.32892,-.66161,-.6971,-1.3174,-.35987,-.38449,-.36889,-.25041,-.47356,-.28453,-.45676,-.4763,-.32352,-.64705,-.33239,-.25252,-.48801,-.32516,-.76514,-.40702,-.33294,-.62638,-.8749,-.86953,-.65204,-.073133,-.13683,-.55527,-.82726,-.029609,-.69776,-.77748,-.5235,-1.2791,-.2632,-.59748,-.76975,-.81658,-.29771,-.60698,.0051561,.93853,1.3302,-.49395,.34466,-.30127,-.65059,-.63965]}};var AA=class{weights;charToId;gpu=null;defaultBackend;scratch;idsScratch=new Int32Array(z);bioIdsScratch=new Int32Array(128);clsIdsScratch=new Int32Array(128);bioProbsScratch=Array.from({length:128},()=>new Float32Array(3));constructor(e={}){this.weights=PA(e.weights??UA),this.charToId=DA(this.weights.charset),this.defaultBackend=e.backend??"cpu",this.scratch=new S(this.weights)}parse(e,r={}){if(typeof e!="string")return[];let n=e;e=k(e);let f=n.length===e.length,t,s=nA(e.length);if(s.length===1&&s[0].length===e.length){let B=x(e.length),g=m(e,this.charToId,this.idsScratch,B),v=J(this.weights,g,this.scratch);t=this.decodeForward(e,v,0,e.length)}else{let B=[],g=new Set;for(let v of s){let w=e.slice(v.offset,v.offset+v.length),P=x(w.length),o=m(w,this.charToId,this.idsScratch,P),D=J(this.weights,o,this.scratch),Q=this.decodeForward(w,D,v.offset,w.length);for(let u of Q){let I=`${u.start}:${u.end}`;g.has(I)||(g.add(I),B.push(u))}}B.sort((v,w)=>v.start-w.start),t=B}if(f)for(let B of t)B.span=n.slice(B.start,B.end);return t}decodeForward(e,r,n,f=r.length){let t=f,s=t<=128,B=s?this.bioIdsScratch:new Int32Array(t),g=s?this.clsIdsScratch:new Int32Array(t),v=s?this.bioProbsScratch:Array.from({length:t},()=>new Float32Array(3));this.weights.crf&&tA(r.bioLogits,t,this.weights.crf,B);for(let o=0;o<t;o++)this.weights.crf||(B[o]=y(r.bioLogits,o*3,3)),g[o]=y(r.clsLogits,o*r.nCls,r.nCls),rA(r.bioLogits,o*3,3,v[o]);let w=dA(e,B.subarray(0,t),g.subarray(0,t),v),P=[];for(let o of w){let D=o.tokens.map(([I,i])=>[F[I],i]),Q=RA(e,o.start,o.end,Re);if(MA(D)&&Q===null||LA(D)&&Q===null)continue;let u=FA(D);P.push({span:o.text,start:o.start+n,end:o.end+n,value:u.value,...u.range?{range:u.range}:{},unit:u.unit??null,currency:Q,confidence:o.confidence??0,classes:u.classes})}return P}inspect(e){let r=performance.now();typeof e!="string"&&(e="");let n=k(e),f=nA(n.length),t=new Array(n.length),s=new Array(n.length).fill(!1);for(let v of f){let w=n.slice(v.offset,v.offset+v.length),P=x(w.length),o=m(w,this.charToId,this.idsScratch,P),D=J(this.weights,o,this.scratch);this.weights.crf&&tA(D.bioLogits,w.length,this.weights.crf,this.bioIdsScratch);for(let Q=0;Q<w.length;Q++){let u=v.offset+Q;if(s[u])continue;s[u]=!0;let I=this.weights.crf?this.bioIdsScratch[Q]:y(D.bioLogits,Q*3,3),i=new Float32Array(3);rA(D.bioLogits,Q*3,3,i);let C=y(D.clsLogits,Q*D.nCls,D.nCls);t[u]={ch:w[Q],bio:I,bioProb:[i[0],i[1],i[2]],cls:F[C],clsId:C}}}let B=this.parse(e),g=performance.now()-r;return{text:n,chars:t,spans:B,ms:g}}modelInfo(){let e=this.weights,r=e.embed.data.length;for(let f of e.conv)r+=f.w.data.length+f.b.length;r+=e.bio.w.data.length+e.bio.b.length,r+=e.cls.w.data.length+e.cls.b.length,e.crf&&(r+=e.crf.trans.length+e.crf.start.length+e.crf.end.length);let n=e.conv.length?Math.max(...e.conv.map(f=>f.w.shape[0])):e.embed.shape[1];return{version:e.version,params:r,channels:n,embedDim:e.embed.shape[1],vocab:e.embed.shape[0],classes:e.classes.length,layers:e.conv.map(f=>({k:f.k,dilation:f.dilation,residual:f.residual})),crf:!!e.crf}}async parseBatch(e,r={}){e=e.map(w=>typeof w=="string"?w:"");let n=r.backend??this.defaultBackend;if(!(n==="webgpu"||n==="auto"&&e.length>=32&&await oA()))return e.map(w=>this.parse(w,{backend:"cpu"}));let t=e,s=e.map(k),B=new Array(e.length),g=[],v=[];for(let w=0;w<s.length;w++)s[w].length<=128?g.push(w):v.push(w);for(let w of v)B[w]=this.parse(t[w],{backend:"cpu"});if(g.length>0){this.gpu||(this.gpu=new Z(this.weights));let w=Math.max(...g.map(C=>s[C].length),1),P=x(w),o=g.length,D=new Int32Array(o*P),Q=this.charToId.get("<pad>")??0;D.fill(Q);for(let C=0;C<o;C++){let E=s[g[C]],b=m(E,this.charToId);D.set(b,C*P)}let{bio:u,cls:I}=await this.gpu.run(D,o,P),i=this.weights.cls.w.shape[0];for(let C=0;C<o;C++){let E=g[C],b=s[E],d=t[E],L=d.length===b.length,l=b.length,c=new Float32Array(l*3),a=new Float32Array(l*i);for(let H=0;H<l;H++)c.set(u.subarray((C*P+H)*3,(C*P+H)*3+3),H*3),a.set(I.subarray((C*P+H)*i,(C*P+H)*i+i),H*i);let h={bioLogits:c,clsLogits:a,length:l,nCls:i},M=this.decodeForward(b,h,0,l);if(L)for(let H of M)H.span=d.slice(H.start,H.end);B[E]=M}}return B}},vA=null;function eA(){return vA||(vA=new AA),vA}function $e(A,e={}){return eA().parse(A,e)}function An(A,e={}){return eA().parseBatch(A,e)}function en(A){return eA().inspect(A)}function nn(){return eA().modelInfo()}function rn(A={}){return new AA(A)}var Re=zA(OA,xA);export{F as CLASSES,AA as Parser,rn as createParser,en as inspect,gA as isWebGPUAvailable,nn as modelInfo,k as normalizeText,$e as parse,An as parseBatch,oA as probeWebGPU};
@@ -1,4 +1,4 @@
1
- import type { LoadedWeights } from "./weights.js";
1
+ import type { CrfParams, LoadedWeights } from "./weights.js";
2
2
  export interface ForwardResult {
3
3
  bioLogits: Float32Array;
4
4
  clsLogits: Float32Array;
@@ -19,3 +19,11 @@ export declare class Scratch {
19
19
  export declare function forward(weights: LoadedWeights, charIds: Int32Array | number[], scratch: Scratch): ForwardResult;
20
20
  export declare function softmaxRow(logits: Float32Array, rowStart: number, n: number, out: Float32Array): Float32Array;
21
21
  export declare function argmaxRow(logits: Float32Array, rowStart: number, n: number): number;
22
+ /** Viterbi-decode the BIO path (labels 0=O,1=B,2=I) over `L` real positions
23
+ * of `bioLogits` (row-major (L,3), only the first L rows are read), writing
24
+ * the best label sequence into `out` (length >= L). Float32 arithmetic in
25
+ * the exact accumulation order of CRF_CONTRACT.md so results match the
26
+ * numpy reference bit-for-bit; ties (equal score) keep the FIRST (lowest
27
+ * index) candidate -- iterate i/j = 0,1,2 and only replace on strictly
28
+ * greater. L === 0 is a no-op (empty path). */
29
+ export declare function viterbi(bioLogits: Float32Array, L: number, crf: CrfParams, out: Int32Array): void;
package/dist/types.d.ts CHANGED
@@ -205,6 +205,23 @@ export interface WeightsJsonV2Float {
205
205
  data: number[];
206
206
  };
207
207
  };
208
+ /** Optional CRF params over the BIO head (3 labels: O/B/I). Stored as
209
+ * float tensors even in the int8 weights file -- 15 numbers, not worth
210
+ * quantizing. Absent -> legacy argmax BIO decoding. */
211
+ crf?: {
212
+ trans: {
213
+ shape: number[];
214
+ data: number[];
215
+ };
216
+ start: {
217
+ shape: number[];
218
+ data: number[];
219
+ };
220
+ end: {
221
+ shape: number[];
222
+ data: number[];
223
+ };
224
+ };
208
225
  }
209
226
  /** Weights JSON version 2, int8 form. */
210
227
  export interface WeightsJsonV2Int8 {
@@ -236,6 +253,22 @@ export interface WeightsJsonV2Int8 {
236
253
  };
237
254
  b: number[];
238
255
  };
256
+ /** Optional CRF params -- stored in FLOAT even in the int8 file (see
257
+ * WeightsJsonV2Float.crf). */
258
+ crf?: {
259
+ trans: {
260
+ shape: number[];
261
+ data: number[];
262
+ };
263
+ start: {
264
+ shape: number[];
265
+ data: number[];
266
+ };
267
+ end: {
268
+ shape: number[];
269
+ data: number[];
270
+ };
271
+ };
239
272
  }
240
273
  export type WeightsJson = WeightsJsonFloat | WeightsJsonInt8 | WeightsJsonV2Float | WeightsJsonV2Int8;
241
274
  export interface CharTag {
@@ -264,4 +297,7 @@ export interface ModelInfo {
264
297
  dilation: number;
265
298
  residual: boolean;
266
299
  }>;
300
+ /** Whether the loaded weights include a CRF head (Viterbi decoding used
301
+ * for BIO instead of legacy per-position argmax). */
302
+ crf: boolean;
267
303
  }
package/dist/weights.d.ts CHANGED
@@ -15,6 +15,11 @@ export interface HeadLayer {
15
15
  w: Tensor;
16
16
  b: Float32Array;
17
17
  }
18
+ export interface CrfParams {
19
+ trans: Float32Array;
20
+ start: Float32Array;
21
+ end: Float32Array;
22
+ }
18
23
  export interface LoadedWeights {
19
24
  version: number;
20
25
  charset: string[];
@@ -23,6 +28,9 @@ export interface LoadedWeights {
23
28
  conv: ConvLayer[];
24
29
  bio: HeadLayer;
25
30
  cls: HeadLayer;
31
+ /** Optional CRF params over the BIO head; undefined when the weights
32
+ * JSON has no `crf` block (legacy argmax BIO decoding). */
33
+ crf?: CrfParams;
26
34
  }
27
35
  /** Load a v1 or v2, float or int8, weights JSON (as written by
28
36
  * python/sankhya/export.py) into a normalised LoadedWeights with an ordered
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gpu-sankhya",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "type": "module",
5
5
  "description": "Fast char-CNN extraction of Hinglish and Devanagari Hindi numeric quantities, with CPU and WebGPU backends.",
6
6
  "license": "MIT",