gpu-sankhya 0.3.1 → 0.3.3
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 +14 -5
- package/dist/decode.d.ts +17 -0
- package/dist/index.js +4 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -212,18 +212,18 @@ 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,
|
|
215
|
+
`python/tests/gold.jsonl` (romanised Hindi, 220 sentences / 194 spans)
|
|
216
216
|
and `python/tests/gold_deva.jsonl` (Devanagari Hindi, 182 sentences / 151
|
|
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) |
|
|
222
|
-
| gold_deva.jsonl (Devanagari) | 182 | 151 | 0.
|
|
223
|
-
| combined |
|
|
221
|
+
| gold.jsonl (romanised) | 220 | 194 | 0.9536 | 0.9585 | 0.9536 | 0.9561 |
|
|
222
|
+
| gold_deva.jsonl (Devanagari) | 182 | 151 | 0.9801 | 0.9867 | 0.9801 | 0.9834 |
|
|
223
|
+
| combined | 402 | 345 | 0.9652 | 0.9708 | 0.9652 | 0.9680 |
|
|
224
224
|
|
|
225
225
|
Negatives (zero-gold-span examples, 73 total): 0 false positives.
|
|
226
|
-
Miss summary: missed
|
|
226
|
+
Miss summary: missed 3, spurious 0, wrong value 0, wrong boundary 9.
|
|
227
227
|
Per-category value accuracy: digits 0.967, words 0.940, prefix 0.926,
|
|
228
228
|
range 0.917, currency 1.0, multi_unit 0.952, symbol_unit 0.970,
|
|
229
229
|
mixed_script 1.0, long 0.80.
|
|
@@ -303,6 +303,15 @@ Raw per-character BIO/class predictions are cleaned up before evaluation:
|
|
|
303
303
|
`UNIT_LAKH`). A one-character symbol unit (`k`/`K`/`l`/`L`) is additionally
|
|
304
304
|
only valid when the next character isn't a letter, so `"20k logon"`
|
|
305
305
|
keeps its `k` but `"10 km"`'s `k` doesn't survive alone either.
|
|
306
|
+
Before that drop check runs, a BIO repair pass looks at the letter-word's
|
|
307
|
+
*raw* per-character classes: if they unambiguously agree on one word
|
|
308
|
+
class (trusting only direct evidence — a same-class run of 3+ characters,
|
|
309
|
+
or a short stray adopting a qualifying neighbour's class, never a diffuse
|
|
310
|
+
whole-run majority vote alone), the span's BIO is extended to cover the
|
|
311
|
+
whole word instead of being left partial — this also re-merges a span
|
|
312
|
+
that a low-confidence internal `O` gap had split in two (e.g. `"unnasi"`
|
|
313
|
+
raw-tagged `B I I O I O`, all six characters `CARD_79`, becomes one span
|
|
314
|
+
`"unnasi"` = 79 instead of dropping).
|
|
306
315
|
- **Bare-digits gate**: a span whose only meaningful tokens are digits (no
|
|
307
316
|
unit/prefix/cardinal word at all) with no detected currency marker is
|
|
308
317
|
dropped only when it's short and ungrouped (≤4 digits, no comma — route
|
package/dist/decode.d.ts
CHANGED
|
@@ -12,6 +12,23 @@ export interface DecodedSpan {
|
|
|
12
12
|
tokens: Array<[number, string]>;
|
|
13
13
|
confidence: number | null;
|
|
14
14
|
}
|
|
15
|
+
/** BIO repair (c): a word-class (UNIT_/PFX_/CARD_) token whose predicted
|
|
16
|
+
* span only PARTIALLY covers its letter word is not necessarily a bad
|
|
17
|
+
* match -- if the whole run's RAW per-char classes unanimously resolve
|
|
18
|
+
* (via `runUnanimousClass`, direct-evidence-only sub-run smoothing) to a
|
|
19
|
+
* SINGLE word class, the partial coverage is just low-confidence BIO
|
|
20
|
+
* dropout on an otherwise-agreed word, not a genuinely mixed/ambiguous
|
|
21
|
+
* run. Extend the span's BIO to cover the whole run (I for every char, B
|
|
22
|
+
* at the run start) instead of leaving it for R2 to drop -- this also
|
|
23
|
+
* merges spans that were split by an internal O gap inside that run back
|
|
24
|
+
* into a single span (e.g. "unnasi" B I I O I O -> B I I I I I).
|
|
25
|
+
*
|
|
26
|
+
* A run whose raw classes do NOT resolve to one unanimous word class this
|
|
27
|
+
* way (e.g. only part of the run predicts a word class, or the agreement
|
|
28
|
+
* is only visible via `repairLetterRun`'s diffuse whole-run majority-vote
|
|
29
|
+
* fallback rather than direct evidence) is left alone, so R2's drop still
|
|
30
|
+
* applies to it. Runs longer than 24 chars are skipped. */
|
|
31
|
+
export declare function extendWordIntegrityBio(bioIds: number[] | Int32Array, clsIds: number[] | Int32Array, runs: Array<[number, number]>): number[];
|
|
15
32
|
/** [start, end) maximal letter/mark runs over the WHOLE text (not just one
|
|
16
33
|
* span) -- word integrity needs the true word boundaries, which can extend
|
|
17
34
|
* outside a span that was cut short mid-word. */
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function GA(A){return A.version===2&&Array.isArray(A.conv)}function TA(A){return A.quantized!==void 0}function kA(A){let e=atob(A),B=new Int8Array(e.length);for(let n=0;n<e.length;n++)B[n]=e.charCodeAt(n)<<24>>24;return B}function G(A){let e=kA(A.data_b64),B=new Float32Array(e.length);for(let n=0;n<e.length;n++)B[n]=e[n]*A.scale;return{shape:A.shape,data:B}}function T(A){return{shape:A.shape,data:Float32Array.from(A.data)}}function PA(A,e){return A*(e-1)/2}function X(A){return{w:T(A.w),b:Float32Array.from(A.b.data)}}function N(A){return{w:G(A.w),b:Float32Array.from(A.b)}}function oA(A){let e=TA(A);if(GA(A)){let f=A.conv.map(s=>{let g=PA(s.dilation,s.k);if(e){let o=s;return{k:s.k,dilation:s.dilation,residual:s.residual,padding:g,w:G(o.w),b:Float32Array.from(o.b)}}let P=s;return{k:s.k,dilation:s.dilation,residual:s.residual,padding:g,w:T(P.w),b:Float32Array.from(P.b.data)}});return{version:2,charset:A.charset,classes:A.classes,embed:e?G(A.embed):T(A.embed),conv:f,bio:e?N(A.bio):X(A.bio),cls:e?N(A.cls):X(A.cls)}}let B=A.layers??3,n=A.dilation??2,t=[{name:"conv1",k:3,dilation:1},{name:"conv2",k:5,dilation:1},{name:"conv3",k:3,dilation:n}];B===4&&t.push({name:"conv4",k:3,dilation:4});let r=t.map(f=>{let s=PA(f.dilation,f.k);if(e){let w=A[f.name];if(!w)throw new Error(`missing ${f.name} in weights JSON`);return{k:f.k,dilation:f.dilation,residual:!1,padding:s,w:G(w.w),b:Float32Array.from(w.b)}}let P=A[f.name];if(!P)throw new Error(`missing ${f.name} in weights JSON`);return{k:f.k,dilation:f.dilation,residual:!1,padding:s,w:T(P.w),b:Float32Array.from(P.b.data)}});return{version:A.version??1,charset:A.charset,classes:A.classes,embed:e?G(A.embed):T(A.embed),conv:r,bio:e?N(A.bio):X(A.bio),cls:e?N(A.cls):X(A.cls)}}function zA(A){return Math.ceil(A/8)*8}function x(A){return zA(A+24)}var R=x(128),pA=/[०-९]/g;function k(A){return A.normalize("NFC").replace(pA,e=>String(e.charCodeAt(0)-2406)).toLowerCase()}function wA(A){let e=new Map;for(let B=0;B<A.length;B++)e.set(A[B],B);return e}function z(A,e,B,n){let t=e.get("<unk>")??1,r=e.get("<pad>")??0,f=n??A.length,s=B?B.subarray(0,f):new Int32Array(f);for(let g=0;g<A.length;g++)s[g]=e.get(A[g])??t;for(let g=A.length;g<f;g++)s[g]=r;return s}function eA(A){if(A<=128)return[{offset:0,length:A}];let e=[],B=112,n=0;for(;n<A;){let t=Math.min(128,A-n);if(e.push({offset:n,length:t}),n+t>=A)break;n+=B}return e}var j=class{buffers;padded;bioBuf;clsBuf;constructor(e){let B=e.conv,n=Math.max(e.embed.shape[1],...B.map(r=>r.w.shape[0]));this.buffers=[new Float32Array(n*R),new Float32Array(n*R)];let t=B.length?Math.max(...B.map(r=>r.padding)):0;this.padded=new Float32Array(n*(R+2*t)),this.bioBuf=new Float32Array(e.bio.w.shape[0]*R),this.clsBuf=new Float32Array(e.cls.w.shape[0]*R)}buf(e){return this.buffers[e%2]}paddedBuf(){return this.padded}};function yA(A,e,B,n,t,r){let[f,s,g]=n.w.shape;if(s!==e)throw new Error(`channel mismatch: expected ${e}, got ${s}`);let P=n.w.data,o=n.b,w=n.padding,D=n.dilation,C=B+2*w;for(let u=0;u<e;u++)r.fill(0,u*C,u*C+w),r.set(A.subarray(u*B,u*B+B),u*C+w),r.fill(0,u*C+w+B,u*C+C);for(let u=0;u<f;u++){let v=u*B,I=o[u],l=u*e*g;if(g===3){for(let Q=0;Q<B;Q++)t[v+Q]=I;for(let Q=0;Q<e;Q++){let b=Q*C,i=l+Q*3,M=P[i],L=P[i+1],a=P[i+2];for(let c=0;c<B;c++){let E=b+c;t[v+c]+=M*r[E]+L*r[E+D]+a*r[E+2*D]}}}else if(g===5){for(let Q=0;Q<B;Q++)t[v+Q]=I;for(let Q=0;Q<e;Q++){let b=Q*C,i=l+Q*5,M=P[i],L=P[i+1],a=P[i+2],c=P[i+3],E=P[i+4];for(let H=0;H<B;H++){let d=b+H;t[v+H]+=M*r[d]+L*r[d+1]+a*r[d+2]+c*r[d+3]+E*r[d+4]}}}else{for(let Q=0;Q<B;Q++)t[v+Q]=I;for(let Q=0;Q<e;Q++){let b=Q*C,i=l+Q*g;for(let M=0;M<g;M++){let L=P[i+M],a=M*D,c=b+a;for(let E=0;E<B;E++)t[v+E]+=L*r[c+E]}}}if(n.residual)for(let Q=0;Q<B;Q++){let b=t[v+Q];t[v+Q]=(b>0?b:0)+A[v+Q]}else for(let Q=0;Q<B;Q++){let b=t[v+Q];t[v+Q]=b>0?b:0}}return f}function DA(A,e,B,n,t){let[r,f]=n.w.shape;if(f!==e)throw new Error(`head channel mismatch: expected ${e}, got ${f}`);let s=n.w.data,g=n.b,P=e-e%4;for(let o=0;o<B;o++){let w=o*r;for(let D=0;D<r;D++){let C=g[D],u=D*e,v=0;for(;v<P;v+=4)C+=s[u+v]*A[v*B+o]+s[u+v+1]*A[(v+1)*B+o]+s[u+v+2]*A[(v+2)*B+o]+s[u+v+3]*A[(v+3)*B+o];for(;v<e;v++)C+=s[u+v]*A[v*B+o];t[w+D]=C}}return r}function S(A,e,B){let n=e.length,t=A.embed,r=t.shape[1],f=B.buf(0);for(let w=0;w<n;w++){let C=e[w]*r;for(let u=0;u<r;u++)f[u*n+w]=t.data[C+u]}let s=r,g=B.paddedBuf(),P=1;for(let w of A.conv){let D=B.buf(P);s=yA(f,s,n,w,D,g),f=D,P++}DA(f,s,n,A.bio,B.bioBuf);let o=DA(f,s,n,A.cls,B.clsBuf);return{bioLogits:B.bioBuf,clsLogits:B.clsBuf,length:n,nCls:o}}function BA(A,e,B,n){let t=-1/0;for(let f=0;f<B;f++)t=Math.max(t,A[e+f]);let r=0;for(let f=0;f<B;f++){let s=Math.exp(A[e+f]-t);n[f]=s,r+=s}for(let f=0;f<B;f++)n[f]/=r;return n}function p(A,e,B){let n=0,t=-1/0;for(let r=0;r<B;r++){let f=A[e+r];f>t&&(t=f,n=r)}return n}var mA=["PFX_PAAV","PFX_AADHA","PFX_PAUNE","PFX_SAVA","PFX_DEDH","PFX_DHAI","PFX_SAADHE"],YA=Array.from({length:99},(A,e)=>`CARD_${e+1}`),XA=["UNIT_SAU","UNIT_HAZAAR","UNIT_LAKH","UNIT_MILLION","UNIT_CRORE","UNIT_BILLION","UNIT_ARAB","UNIT_KHARAB"],NA=["O","SEP","RANGE","DIGITS","DOT","COMMA"],F=["O",...NA.filter(A=>A!=="O"),...mA,...YA,...XA],O=Object.fromEntries(F.map((A,e)=>[A,e])),CA={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 vA(A){return A.startsWith("CARD_")}function uA(A){return A in CA}function cA(A){return parseInt(A.split("_",2)[1],10)}function K(A){return CA[A]}var SA=new Set(["SEP","RANGE","DOT","COMMA"]),EA=new Set([...SA,"O"]),tA=["PFX_","CARD_","UNIT_"],JA=["PFX_","CARD_","UNIT_"],KA=new Set(["-","\u2013","\u2014","/"]),_A=new Set(["k","K","l","L"]),aA=/['’]([A-Za-zऀ-ॿ]{1,2})(?![A-Za-zऀ-ॿ])/g;function WA(A){return tA.some(e=>A.startsWith(e))||A==="DIGITS"}function VA(A){return JA.some(e=>A.startsWith(e))}var W=O.O,_=O.SEP,rA=O.RANGE,qA=O.DIGITS,ZA=O.DOT,$A=O.COMMA,Ae=/\p{L}|\p{M}/u;function y(A){return Ae.test(A)?"letter":/[0-9]/.test(A)?"digit":/\s/.test(A)?"space":"punct"}function ee(A){let e=[],B=0,n=A.length;for(;B<n;){let t=y(A[B]),r=B+1;for(;r<n&&y(A[r])===t;)r++;e.push({type:t,start:B,end:r}),B=r}return e}function Be(A,e,B){let n=new Map;for(let P=e;P<B;P++){let o=A[P];VA(F[o])&&n.set(o,(n.get(o)??0)+1)}if(n.size===0)return W;let t=-1;for(let P of n.values())P>t&&(t=P);let r=[...n.entries()].filter(([,P])=>P===t).map(([P])=>P);if(r.length===1)return r[0];let f=-1,s=1/0,g=r[0];for(let P of r){let o=0,w=0,D=1/0;for(let C=e;C<B;C++)A[C]===P?(D===1/0&&(D=C),o++,o>w&&(w=o)):o=0;(w>f||w===f&&D<s)&&(f=w,s=D,g=P)}return g}function hA(A,e,B){let n=[],t=e;for(;t<B;){let s=t+1;for(;s<B&&A[s]===A[t];)s++;n.push({start:t,end:s,cls:A[t]}),t=s}let r=Be(A,e,B),f=[];for(let s=0;s<n.length;s++){let g=n[s];if(g.end-g.start>=3){f.push([g.start,g.end,g.cls]);continue}let o=s>0?n[s-1]:null,w=s<n.length-1?n[s+1]:null,D=o!==null&&o.end-o.start>=3,C=w!==null&&w.end-w.start>=3,u;if(D&&C){let v=o.end-o.start;u=w.end-w.start>v?w.cls:o.cls}else D?u=o.cls:C?u=w.cls:u=r;f.push([g.start,g.end,u])}return f}function ne(A){return tA.some(e=>A.startsWith(e))||A==="DIGITS"}function iA(A,e,B,n){if(A==="digit")return"DIGITS";if(A==="letter"){let t=hA(n,e,B),r=new Map;for(let[g,P,o]of t)r.set(o,(r.get(o)??0)+(P-g));let f=-1,s=-1;for(let[g,P]of r)P>s&&(s=P,f=g);return f>=0?F[f]:null}return null}function IA(A,e,B){let n=e+B;if(n<0||n>=A.length||A[n].type==="space"&&(n+=B,n<0||n>=A.length))return null;let t=A[n];return t.type==="digit"||t.type==="letter"?t:null}function re(A,e,B){let n=IA(A,e,-1),t=IA(A,e,1);if(!n||!t)return!1;let r=iA(n.type,n.start,n.end,B),f=iA(t.type,t.start,t.end,B);return!r||!f||!ne(r)?!1:f==="DIGITS"||f.startsWith("CARD_")||f.startsWith("PFX_")}function te(A,e){let B=A.length,n=new Array(B),t=ee(A);for(let r=0;r<t.length;r++){let f=t[r],{type:s,start:g,end:P}=f;if(s==="digit"){for(let C=g;C<P;C++)n[C]=qA;continue}if(s==="space"){let C=!1;for(let v=g;v<P;v++)if(e[v]===rA){C=!0;break}let u=C?rA:_;for(let v=g;v<P;v++)n[v]=u;continue}if(s==="letter"){for(let[C,u,v]of hA(e,g,P))for(let I=C;I<u;I++)n[I]=v;continue}let o=r>0?t[r-1].type:null,w=r<t.length-1?t[r+1].type:null,D=_;if(P-g===1){let C=A[g];(C==="."||C===",")&&o==="digit"&&w==="digit"?D=C==="."?ZA:$A:KA.has(C)&&re(t,r,e)?D=rA:D=_}for(let C=g;C<P;C++)n[C]=D}return n}function fe(A,e){let B=Array.from({length:e},(n,t)=>A[t]);for(let n=1;n<e-1;n++)A[n]===0&&(A[n-1]===1||A[n-1]===2)&&A[n+1]===2&&(B[n]=2);return B}function lA(A){return A!==void 0&&A>="0"&&A<="9"}function se(A,e,B){if(B<=e||!lA(A[B-1]))return B;let n=B;for(;n<A.length&&lA(A[n]);)n++;return n}function ge(A){let e=[],B=0,n=A.length;for(;B<n;)if(y(A[B])==="letter"){let t=B+1;for(;t<n&&y(A[t])==="letter";)t++;e.push([B,t]),B=t}else B++;return e}function bA(A){return tA.some(e=>A.startsWith(e))&&A!=="DIGITS"}function Pe(A,e,B,n,t){let r=Array.from({length:n.length},(f,s)=>n[s]);for(let[f,s]of t){if(s<=e||f>=B)continue;let g=Math.max(f,e),P=Math.min(s,B),o=f>=e&&s<=B;if(o){for(let w=f;w<s;w++)if(!bA(F[r[w]])){o=!1;break}}if(o){s-f===1&&F[r[f]].startsWith("UNIT_")&&_A.has(A[f])&&s<A.length&&y(A[s])==="letter"&&(r[f]=W);continue}for(let w=g;w<P;w++)bA(F[r[w]])&&(r[w]=W)}return r}function oe(A,e,B,n){let t=Array.from({length:n.length},(s,g)=>n[g]),r=A.slice(e,B);aA.lastIndex=0;let f;for(;f=aA.exec(r);)for(let s=e+f.index;s<e+f.index+f[0].length;s++)t[s]=W;return t}function HA(A,e,B,n){let t=A.length,r=fe(e,t),f=[],s=null;for(let w=0;w<t;w++){let D=r[w];D===1?(s!==null&&f.push([s,w]),s=w):D===2||s!==null&&(f.push([s,w]),s=null)}s!==null&&f.push([s,t]);for(let w=0;w<f.length;w++)f[w]=[f[w][0],se(A,f[w][0],f[w][1])];let g=ge(A),P=Array.from({length:t},(w,D)=>B[D]),o=[];for(let[w,D]of f){let C=A.slice(w,D),u=Array.from({length:D-w},(c,E)=>P[w+E]),v=te(C,u);for(let c=w;c<D;c++)P[c]=v[c-w];P=Pe(A,w,D,P,g),P=oe(A,w,D,P);let I=w,l=[];for(let c=w+1;c<=D;c++)(c===D||P[c]!==P[I])&&(l.push([P[I],I,c]),I=c);let Q=0,b=l.length;for(;Q<b&&EA.has(F[l[Q][0]]);)Q++;for(;b>Q&&EA.has(F[l[b-1][0]]);)b--;let i=l.slice(Q,b);if(i.length===0)continue;let M=i[0][1],L=i[i.length-1][2];if(!i.some(([c])=>WA(F[c])))continue;let a=null;if(n){let c=[];for(let E=M;E<L;E++)c.push(Math.max(...n[E]));if(a=c.length?c.reduce((E,H)=>E+H,0)/c.length:0,a<.5)continue}o.push({start:M,end:L,text:A.slice(M,L),tokens:i.map(([c,E,H])=>[c,A.slice(E,H)]),confidence:a})}return o}function we(A){let e=[],B="",n=!1,t=()=>{if(n){let r=B.replace(/,/g,""),f=parseFloat(r);e.push(["NUM",Number.isNaN(f)?0:f])}B="",n=!1};for(let[r,f]of A)r!=="SEP"&&(r==="DIGITS"||r==="DOT"||r==="COMMA"?(B+=f,n=!0):(t(),e.push([r,f])));return t(),e}function De(A,e){if(e!==null){let B=nA[e];if(B===void 0)return A!==null?A:1;if(A!==null&&B.op){if(B.op==="sub25")return A-.25;if(B.op==="add25")return A+.25;if(B.op==="add5")return A+.5}return B.standalone}return A!==null?A:1}function Ce(A){let e=we(A),B=0,n=null,t=null,r=null,f=null;function s(g){let P=De(r,f);if(g===null)B+=P*1;else{let o=K(g);n!==null&&o>n?B=B*o:B=B+P*o,n=o,(t===null||o>K(t))&&(t=g)}r=null,f=null}for(let[g,P]of e)if(g==="NUM")r!==null&&s(null),r=P;else if(vA(g)){r!==null&&s(null);try{r=cA(g)}catch{}}else if(QA(g))f!==null&&s(null),f=g;else if(uA(g))s(g);else continue;return(r!==null||f!==null)&&s(null),[B,t]}function m(A){let e=Math.round(A),B=Math.max(1e-6,Math.abs(A)*1e-9);return Math.abs(A-e)<B?e:Math.round(A*1e6)/1e6}function Qe(A){let e=[],B=0;for(;B<A.length;){let[n,t]=A[B];if(n.startsWith("PFX_")){let r=t,f=B+1;for(;;){let s=f;if(s<A.length&&A[s][0]==="SEP"&&s++,s<A.length&&A[s][0]===n){for(let g=f;g<=s;g++)r+=A[g][1];f=s+1;continue}break}e.push([n,r]),B=f}else e.push(A[B]),B++}return e}function MA(A){try{let e=A.map(D=>D[0]),B=Qe(A),n=[[]];for(let[D,C]of B){if(D==="RANGE"){n.length<2&&n.push([]);continue}n[n.length-1].push([D,C])}let t=n.filter(D=>D.length>0).map(D=>Ce(D));if(t.length===0)return{value:0,range:null,unit:null,classes:e,currency:null};if(t.length===1){let[D,C]=t[0];return{value:m(D),range:null,unit:C?J[C]??null:null,classes:e,currency:null}}let[r,f]=t[0],[s,g]=t[1];if(f!==null&&g!==null&&r>s)return{value:m(r+s),range:null,unit:J[f]??null,classes:e,currency:null};let P;f===null&&g!==null?(r=r*K(g),P=g):P=f!==null?f:g;let[o,w]=r<=s?[r,s]:[s,r];return{value:m(o),range:[m(o),m(w)],unit:P?J[P]??null:null,classes:e,currency:null}}catch{return{value:0,range:null,unit:null,classes:A.map(e=>e[0]),currency:null}}}function ve(A){let e=!1;for(let[B]of A)if(B==="DIGITS")e=!0;else if(B.startsWith("UNIT_")||B.startsWith("PFX_")||B.startsWith("CARD_"))return!1;return e}function dA(A){if(!ve(A))return!1;let e=0,B=!1;for(let[n,t]of A)n==="DIGITS"?e+=t.length:n==="COMMA"&&(B=!0);return e<=4&&!B||e>=10}function FA(...A){let e=(n,t)=>t.length-n.length,B=n=>[...new Set(n.flat())].sort(e);return{currency_markers_before:B(A.map(n=>n.currency_markers_before??[])),currency_words_after:B(A.map(n=>n.currency_words_after??[]))}}function LA(A,e,B,n){let t=A.slice(Math.max(0,e-8),e),r=A.slice(B,B+8),s=t.replace(/\s+$/,"").toLowerCase(),g=[...n.currency_markers_before??[]].sort((D,C)=>C.length-D.length);for(let D of g){let C=D.replace(/\.+$/,"").toLowerCase();if(s.endsWith(D.toLowerCase())||s.endsWith(C))return"INR"}let o=r.replace(/^\s+/,"").toLowerCase(),w=[...n.currency_words_after??[]].sort((D,C)=>C.length-D.length);for(let D of w){let C=D.toLowerCase();if(o.startsWith(C))return"INR"}return null}var RA={currency_markers_before:["\u20B9","Rs","Rs.","rs","INR","Re"],currency_words_after:["rupaye","rupay","rupees","rupiya","rupya","/-"]};var OA={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 ue=`
|
|
1
|
+
function TA(A){return A.version===2&&Array.isArray(A.conv)}function OA(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 T(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 O(A){return{shape:A.shape,data:Float32Array.from(A.data)}}function wA(A,e){return A*(e-1)/2}function N(A){return{w:O(A.w),b:Float32Array.from(A.b.data)}}function X(A){return{w:T(A.w),b:Float32Array.from(A.b)}}function PA(A){let e=OA(A);if(TA(A)){let g=A.conv.map(t=>{let s=wA(t.dilation,t.k);if(e){let P=t;return{k:t.k,dilation:t.dilation,residual:t.residual,padding:s,w:T(P.w),b:Float32Array.from(P.b)}}let o=t;return{k:t.k,dilation:t.dilation,residual:t.residual,padding:s,w:O(o.w),b:Float32Array.from(o.b.data)}});return{version:2,charset:A.charset,classes:A.classes,embed:e?T(A.embed):O(A.embed),conv:g,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(g=>{let t=wA(g.dilation,g.k);if(e){let w=A[g.name];if(!w)throw new Error(`missing ${g.name} in weights JSON`);return{k:g.k,dilation:g.dilation,residual:!1,padding:t,w:T(w.w),b:Float32Array.from(w.b)}}let o=A[g.name];if(!o)throw new Error(`missing ${g.name} in weights JSON`);return{k:g.k,dilation:g.dilation,residual:!1,padding:t,w:O(o.w),b:Float32Array.from(o.b.data)}});return{version:A.version??1,charset:A.charset,classes:A.classes,embed:e?T(A.embed):O(A.embed),conv:r,bio:e?X(A.bio):N(A.bio),cls:e?X(A.cls):N(A.cls)}}function GA(A){return Math.ceil(A/8)*8}function U(A){return GA(A+24)}var R=U(128),pA=/[०-९]/g;function k(A){return A.normalize("NFC").replace(pA,e=>String(e.charCodeAt(0)-2406)).toLowerCase()}function DA(A){let e=new Map;for(let n=0;n<A.length;n++)e.set(A[n],n);return e}function G(A,e,n,B){let f=e.get("<unk>")??1,r=e.get("<pad>")??0,g=B??A.length,t=n?n.subarray(0,g):new Int32Array(g);for(let s=0;s<A.length;s++)t[s]=e.get(A[s])??f;for(let s=A.length;s<g;s++)t[s]=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*R),new Float32Array(B*R)];let f=n.length?Math.max(...n.map(r=>r.padding)):0;this.padded=new Float32Array(B*(R+2*f)),this.bioBuf=new Float32Array(e.bio.w.shape[0]*R),this.clsBuf=new Float32Array(e.cls.w.shape[0]*R)}buf(e){return this.buffers[e%2]}paddedBuf(){return this.padded}};function yA(A,e,n,B,f,r){let[g,t,s]=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,D=B.dilation,C=n+2*w;for(let u=0;u<e;u++)r.fill(0,u*C,u*C+w),r.set(A.subarray(u*n,u*n+n),u*C+w),r.fill(0,u*C+w+n,u*C+C);for(let u=0;u<g;u++){let Q=u*n,l=P[u],I=u*e*s;if(s===3){for(let v=0;v<n;v++)f[Q+v]=l;for(let v=0;v<e;v++){let b=v*C,i=I+v*3,d=o[i],L=o[i+1],E=o[i+2];for(let c=0;c<n;c++){let a=b+c;f[Q+c]+=d*r[a]+L*r[a+D]+E*r[a+2*D]}}}else if(s===5){for(let v=0;v<n;v++)f[Q+v]=l;for(let v=0;v<e;v++){let b=v*C,i=I+v*5,d=o[i],L=o[i+1],E=o[i+2],c=o[i+3],a=o[i+4];for(let H=0;H<n;H++){let M=b+H;f[Q+H]+=d*r[M]+L*r[M+1]+E*r[M+2]+c*r[M+3]+a*r[M+4]}}}else{for(let v=0;v<n;v++)f[Q+v]=l;for(let v=0;v<e;v++){let b=v*C,i=I+v*s;for(let d=0;d<s;d++){let L=o[i+d],E=d*D,c=b+E;for(let a=0;a<n;a++)f[Q+a]+=L*r[c+a]}}}if(B.residual)for(let v=0;v<n;v++){let b=f[Q+v];f[Q+v]=(b>0?b:0)+A[Q+v]}else for(let v=0;v<n;v++){let b=f[Q+v];f[Q+v]=b>0?b:0}}return g}function CA(A,e,n,B,f){let[r,g]=B.w.shape;if(g!==e)throw new Error(`head channel mismatch: expected ${e}, got ${g}`);let t=B.w.data,s=B.b,o=e-e%4;for(let P=0;P<n;P++){let w=P*r;for(let D=0;D<r;D++){let C=s[D],u=D*e,Q=0;for(;Q<o;Q+=4)C+=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++)C+=t[u+Q]*A[Q*n+P];f[w+D]=C}}return r}function S(A,e,n){let B=e.length,f=A.embed,r=f.shape[1],g=n.buf(0);for(let w=0;w<B;w++){let C=e[w]*r;for(let u=0;u<r;u++)g[u*B+w]=f.data[C+u]}let t=r,s=n.paddedBuf(),o=1;for(let w of A.conv){let D=n.buf(o);t=yA(g,t,B,w,D,s),g=D,o++}CA(g,t,B,A.bio,n.bioBuf);let P=CA(g,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 g=0;g<n;g++)f=Math.max(f,A[e+g]);let r=0;for(let g=0;g<n;g++){let t=Math.exp(A[e+g]-f);B[g]=t,r+=t}for(let g=0;g<n;g++)B[g]/=r;return B}function p(A,e,n){let B=0,f=-1/0;for(let r=0;r<n;r++){let g=A[e+r];g>f&&(f=g,B=r)}return B}var mA=["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"],F=["O",...XA.filter(A=>A!=="O"),...mA,...YA,...NA],x=Object.fromEntries(F.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},K={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 J(A){return vA[A]}var SA=new Set(["SEP","RANGE","DOT","COMMA"]),EA=new Set([...SA,"O"]),fA=["PFX_","CARD_","UNIT_"],KA=["PFX_","CARD_","UNIT_"],JA=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 KA.some(e=>A.startsWith(e))}var W=x.O,_=x.SEP,rA=x.RANGE,qA=x.DIGITS,ZA=x.DOT,$A=x.COMMA,Ae=/\p{L}|\p{M}/u;function y(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=y(A[n]),r=n+1;for(;r<B&&y(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(F[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 g=-1,t=1/0,s=r[0];for(let o of r){let P=0,w=0,D=1/0;for(let C=e;C<n;C++)A[C]===o?(D===1/0&&(D=C),P++,P>w&&(w=P)):P=0;(w>g||w===g&&D<t)&&(g=w,t=D,s=o)}return s}function hA(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),g=[];for(let t=0;t<B.length;t++){let s=B[t];if(s.end-s.start>=3){g.push([s.start,s.end,s.cls]);continue}let P=t>0?B[t-1]:null,w=t<B.length-1?B[t+1]:null,D=P!==null&&P.end-P.start>=3,C=w!==null&&w.end-w.start>=3,u;if(D&&C){let Q=P.end-P.start;u=w.end-w.start>Q?w.cls:P.cls}else D?u=P.cls:C?u=w.cls:u=r;g.push([s.start,s.end,u])}return g}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=hA(B,e,n),r=new Map;for(let[s,o,P]of f)r.set(P,(r.get(P)??0)+(o-s));let g=-1,t=-1;for(let[s,o]of r)o>t&&(t=o,g=s);return g>=0?F[g]: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),g=lA(f.type,f.start,f.end,n);return!r||!g||!ne(r)?!1:g==="DIGITS"||g.startsWith("CARD_")||g.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 g=f[r],{type:t,start:s,end:o}=g;if(t==="digit"){for(let C=s;C<o;C++)B[C]=qA;continue}if(t==="space"){let C=!1;for(let Q=s;Q<o;Q++)if(e[Q]===rA){C=!0;break}let u=C?rA:_;for(let Q=s;Q<o;Q++)B[Q]=u;continue}if(t==="letter"){for(let[C,u,Q]of hA(e,s,o))for(let l=C;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,D=_;if(o-s===1){let C=A[s];(C==="."||C===",")&&P==="digit"&&w==="digit"?D=C==="."?ZA:$A:JA.has(C)&&re(f,r,e)?D=rA:D=_}for(let C=s;C<o;C++)B[C]=D}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 bA(A){return A!==void 0&&A>="0"&&A<="9"}function ge(A,e,n){if(n<=e||!bA(A[n-1]))return n;let B=n;for(;B<A.length&&bA(A[B]);)B++;return B}var se=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 s=B[t];if(s.end-s.start>=3){r.push(s.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,D=P!==null&&P.end-P.start>=3;if(w&&D){let C=o.end-o.start,u=P.end-P.start;r.push(u>C?P.cls:o.cls)}else if(w)r.push(o.cls);else if(D)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,g)=>A[g]);for(let[r,g]of n){let t=g-r;if(t===0||t>se)continue;let s=!1,o=!0;for(let w=r;w<g;w++)A[w]===1||A[w]===2?s=!0:o=!1;if(!s||o)continue;let P=oe(e,r,g);if(!(P===null||!tA(F[P]))){for(let w=r;w<g;w++)f[w]=2;f[r]=1}}return f}function Pe(A){let e=[],n=0,B=A.length;for(;n<B;)if(y(A[n])==="letter"){let f=n+1;for(;f<B&&y(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 De(A,e,n,B,f){let r=Array.from({length:B.length},(g,t)=>B[t]);for(let[g,t]of f){if(t<=e||g>=n)continue;let s=Math.max(g,e),o=Math.min(t,n),P=g>=e&&t<=n;if(P){for(let w=g;w<t;w++)if(!tA(F[r[w]])){P=!1;break}}if(P){t-g===1&&F[r[g]].startsWith("UNIT_")&&_A.has(A[g])&&t<A.length&&y(A[t])==="letter"&&(r[g]=W);continue}for(let w=s;w<o;w++)tA(F[r[w]])&&(r[w]=W)}return r}function Ce(A,e,n,B){let f=Array.from({length:B.length},(t,s)=>B[s]),r=A.slice(e,n);iA.lastIndex=0;let g;for(;g=iA.exec(r);)for(let t=e+g.index;t<e+g.index+g[0].length;t++)f[t]=W;return f}function HA(A,e,n,B){let f=A.length,r=Pe(A),g=fe(e,f);g=we(g,n,r);let t=[],s=null;for(let w=0;w<f;w++){let D=g[w];D===1?(s!==null&&t.push([s,w]),s=w):D===2||s!==null&&(t.push([s,w]),s=null)}s!==null&&t.push([s,f]);for(let w=0;w<t.length;w++)t[w]=[t[w][0],ge(A,t[w][0],t[w][1])];let o=Array.from({length:f},(w,D)=>n[D]),P=[];for(let[w,D]of t){let C=A.slice(w,D),u=Array.from({length:D-w},(c,a)=>o[w+a]),Q=te(C,u);for(let c=w;c<D;c++)o[c]=Q[c-w];o=De(A,w,D,o,r),o=Ce(A,w,D,o);let l=w,I=[];for(let c=w+1;c<=D;c++)(c===D||o[c]!==o[l])&&(I.push([o[l],l,c]),l=c);let v=0,b=I.length;for(;v<b&&EA.has(F[I[v][0]]);)v++;for(;b>v&&EA.has(F[I[b-1][0]]);)b--;let i=I.slice(v,b);if(i.length===0)continue;let d=i[0][1],L=i[i.length-1][2];if(!i.some(([c])=>WA(F[c])))continue;let E=null;if(B){let c=[];for(let a=d;a<L;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:L,text:A.slice(d,L),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,""),g=parseFloat(r);e.push(["NUM",Number.isNaN(g)?0:g])}n="",B=!1};for(let[r,g]of A)r!=="SEP"&&(r==="DIGITS"||r==="DOT"||r==="COMMA"?(n+=g,B=!0):(f(),e.push([r,g])));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,g=null;function t(s){let o=Qe(r,g);if(s===null)n+=o*1;else{let P=J(s);B!==null&&P>B?n=n*P:n=n+o*P,B=P,(f===null||P>J(f))&&(f=s)}r=null,g=null}for(let[s,o]of e)if(s==="NUM")r!==null&&t(null),r=o;else if(uA(s)){r!==null&&t(null);try{r=aA(s)}catch{}}else if(QA(s))g!==null&&t(null),g=s;else if(cA(s))t(s);else continue;return(r!==null||g!==null)&&t(null),[n,f]}function m(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,g=n+1;for(;;){let t=g;if(t<A.length&&A[t][0]==="SEP"&&t++,t<A.length&&A[t][0]===B){for(let s=g;s<=t;s++)r+=A[s][1];g=t+1;continue}break}e.push([B,r]),n=g}else e.push(A[n]),n++}return e}function dA(A){try{let e=A.map(D=>D[0]),n=ce(A),B=[[]];for(let[D,C]of n){if(D==="RANGE"){B.length<2&&B.push([]);continue}B[B.length-1].push([D,C])}let f=B.filter(D=>D.length>0).map(D=>ue(D));if(f.length===0)return{value:0,range:null,unit:null,classes:e,currency:null};if(f.length===1){let[D,C]=f[0];return{value:m(D),range:null,unit:C?K[C]??null:null,classes:e,currency:null}}let[r,g]=f[0],[t,s]=f[1];if(g!==null&&s!==null&&r>t)return{value:m(r+t),range:null,unit:K[g]??null,classes:e,currency:null};let o;g===null&&s!==null?(r=r*J(s),o=s):o=g!==null?g:s;let[P,w]=r<=t?[r,t]:[t,r];return{value:m(P),range:[m(P),m(w)],unit:o?K[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 MA(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 FA(...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 LA(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(),s=[...B.currency_markers_before??[]].sort((D,C)=>C.length-D.length);for(let D of s){let C=D.replace(/\.+$/,"").toLowerCase();if(t.endsWith(D.toLowerCase())||t.endsWith(C))return"INR"}let P=r.replace(/^\s+/,"").toLowerCase(),w=[...B.currency_words_after??[]].sort((D,C)=>C.length-D.length);for(let D of w){let C=D.toLowerCase();if(P.startsWith(C))return"INR"}return null}var RA={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 Ee=`
|
|
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
|
-
`,
|
|
20
|
+
`,ie=`
|
|
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
|
-
`,
|
|
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 fA(){return typeof navigator<"u"&&!!navigator.gpu}var V=null;function sA(){return V||(V=(async()=>{if(!fA())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(!fA())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 B=await e.requestDevice(),n=(s,g)=>{let P=B.createBuffer({size:Math.max(4,s.byteLength),usage:g,mappedAtCreation:!0});return new Float32Array(P.getMappedRange()).set(s),P.unmap(),P},t=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,r=this.weights,f=r.conv.map(s=>({w:n(s.w.data,t),b:n(s.b,t)}));return this.state={device:B,embedModule:B.createShaderModule({code:ue}),convModule:B.createShaderModule({code:ce}),headModule:B.createShaderModule({code:Ee}),embedBuf:n(r.embed.data,t),convBufs:f,bioBuf:{w:n(r.bio.w.data,t),b:n(r.bio.b,t)},clsBuf:{w:n(r.cls.w.data,t),b:n(r.cls.b,t)}},this.state}async run(e,B,n){let t=await this.init(),{device:r}=t,f=this.weights,s=f.embed.shape[1],g=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST|GPUBufferUsage.COPY_SRC,P=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,o=r.createBuffer({size:e.byteLength,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,mappedAtCreation:!0});new Int32Array(o.getMappedRange()).set(e),o.unmap();let w=a=>{let c=r.createBuffer({size:a.byteLength,usage:P,mappedAtCreation:!0});return new Uint32Array(c.getMappedRange()).set(a),c.unmap(),c},D=r.limits?.maxComputeWorkgroupsPerDimension??65535,C=a=>{let c=Math.max(1,Math.ceil(a/64)),E=Math.min(c,D),H=Math.ceil(c/E);return{x:E,y:H,stride:E*64}},u=(a,c,E)=>{let H=r.createBindGroup({layout:a.getBindGroupLayout(0),entries:c}),d=r.createCommandEncoder(),h=d.beginComputePass();h.setPipeline(a),h.setBindGroup(0,H),h.dispatchWorkgroups(E.x,E.y),h.end(),r.queue.submit([d.finish()])},v=r.createBuffer({size:B*s*n*4,usage:g});{let a=C(B*n),c=w(new Uint32Array([B,n,s,f.embed.shape[0],a.stride])),E=r.createComputePipeline({layout:"auto",compute:{module:t.embedModule,entryPoint:"main"}});u(E,[{binding:0,resource:{buffer:c}},{binding:1,resource:{buffer:o}},{binding:2,resource:{buffer:t.embedBuf}},{binding:3,resource:{buffer:v}}],a)}let I=s,l=f.conv,Q=r.createComputePipeline({layout:"auto",compute:{module:t.convModule,entryPoint:"main"}});for(let a=0;a<l.length;a++){let c=l[a],[E,,H]=c.w.shape,d=c.dilation,h=c.padding,U=r.createBuffer({size:B*E*n*4,usage:g}),Y=C(B*E*n),UA=w(new Uint32Array([B,n,I,E,H,h,d,1,c.residual?1:0,Y.stride]));u(Q,[{binding:0,resource:{buffer:UA}},{binding:1,resource:{buffer:v}},{binding:2,resource:{buffer:t.convBufs[a].w}},{binding:3,resource:{buffer:t.convBufs[a].b}},{binding:4,resource:{buffer:U}}],Y),v=U,I=E}let b=r.createComputePipeline({layout:"auto",compute:{module:t.headModule,entryPoint:"main"}}),i=async(a,c)=>{let E=r.createBuffer({size:B*n*c*4,usage:g}),H=C(B*n*c),d=w(new Uint32Array([B,n,I,c,H.stride]));u(b,[{binding:0,resource:{buffer:d}},{binding:1,resource:{buffer:v}},{binding:2,resource:{buffer:a.w}},{binding:3,resource:{buffer:a.b}},{binding:4,resource:{buffer:E}}],H);let h=r.createBuffer({size:B*n*c*4,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),U=r.createCommandEncoder();U.copyBufferToBuffer(E,0,h,0,B*n*c*4),r.queue.submit([U.finish()]),await h.mapAsync(GPUMapMode.READ);let Y=new Float32Array(h.getMappedRange().slice(0));return h.unmap(),Y},M=await i(t.bioBuf,f.bio.w.shape[0]),L=await i(t.clsBuf,f.cls.w.shape[0]);return{bio:M,cls:L}}};var xA={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:.037109747529029846,data_b64:"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"},conv:[{k:5,dilation:1,residual:!1,w:{shape:[48,16,5],scale:.0056425235234200954,data_b64:"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"},b:[-.24382,-.38407,-.17817,-.351,-.22238,-.0019299,.028242,-.32424,-.21751,-.039856,-.006906,.12596,-.51106,.050427,.15754,.092282,-.29897,-.62661,-.0011282,-.7889,-.13757,.19859,-.055453,-.46586,-.038519,-.46619,.029959,-.0023833,-.30013,-.51659,-57684e-8,-.19363,-.10826,-.0072604,-.55949,.039256,-.28819,-.31607,1372e-7,-.063139,-.052011,-.12956,-.22692,-.51442,.16734,-.55926,.027049,-.51846]},{k:3,dilation:1,residual:!0,w:{shape:[48,48,3],scale:.013383498415350914,data_b64:"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"},b:[.11358,.11704,-.088201,-.033611,-.002863,.066441,.21947,.3986,-.12785,.46101,.26606,.1678,.17644,.49194,.36484,.3702,-.028757,.043993,-.032994,.45611,.06581,-.087146,.062385,.033713,.14835,.21905,.26361,-.10899,.29428,.48339,-.067757,.28667,.2584,-.10572,-.029867,.62242,-.16582,.19591,.20494,.15142,.42574,.21697,.023204,.21846,.019266,-.092303,.17447,.071329]},{k:3,dilation:2,residual:!0,w:{shape:[48,48,3],scale:.010257013142108917,data_b64:"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"},b:[.19117,-.074236,-.042869,.23032,.014854,-.33218,-.27652,.5013,-.1957,.25585,.66936,-.033494,.2669,.57471,.51624,.44239,.04774,.069218,.63188,.39761,-.089879,.99325,-.048568,-.23978,-.07374,.10848,-.27321,-.18405,.22888,1.0015,.16014,.14434,.09867,-.16617,.32079,.45812,.28912,.58278,1.0206,.20699,.39127,.13378,-.066438,.084532,-.014646,.68524,.10335,.14651]},{k:3,dilation:4,residual:!0,w:{shape:[48,48,3],scale:.01723182387650013,data_b64:"A94JAwkAAPz9AgQC//gBAf/////9Af8AAgIAAP8B/QUDAQUBAgYEAvf/AwL//QP/AfoAAAAA/f/9//7//wIFAuwIAPoA//4BBAT/AQUB///8AwACAQv//fUAAP4AAAkCAP3+Af76AgL9AwoC/gEBA/7+/wgJAv3+/gMD/vn8A/n/AP//AQQA//7+/QIB/QAB9Q8RExUDGPvx7ev6B/QAAgH9A9kEAPQC/dr2+vwL/wETAfgACxD/9/kA9+8GHBoGBNQD+/gG/+j//AD/9+4JA//7BCEW8u0C2N7vBvgAAQT5CP/+ACX4BC4BCxYJ/AEEAez//P/u9NTu9vb4/PjxBxQGAQgFDOcAAAMHAA71/u4CAewC9/b8COv5EyQK/AAABAgC9gP+CNn7Aw8A6u769/sC/P8CBBEB5ej49/f9BQj9/f3+AAT+Av4IAg4I+fwD3/H7Bwf/BwgFCgoA/vb/Aw0B/wf9BQD7CAb+//r5+PkHAAr99/z7DBMJAQYABg4AAAIDBgcCBwcPAf//BAP/+/37A/v+/O/1+/76AQUE8Or9BAb+6PH8+AMBBf/8/QAA//8FAg4FBPz9Dt4EAAQBAhMFA/gDAfgC/Pv6/gQEAwAFAAkBAAH/BBED/wMC/v79AP0BBvcBAf7/APDtA/v4/vgL/gr4BBAD/fIDAfv1/gn/AAYAAQcAAO0DAQsRARH8AQH9AQT//eP9/fYGABMMBP7+//j7AxP9/g//AfMAA/8E/+ME/vMC/vD7/vv+BAUFBfj8/w8CAPsB9/75D+n6Bef4+vT+AQv///79BPL3/d0C/B4DCAAF++v/AA8DAP0IBPUD/O0JAv/9BxEN+AgJCAEDBAIH/vQB/QUG//0MAfv7BQEO/P7/BfgJ/Bb0/g/+AhMBBAYG8+XzCxEABPv8AQgECQkK+uQDBxgF9vAB8xr7/O3//QD5AQwF/vf+997yBwr7A/n9BgkBAgcAAOv9ANUD/gYAAAIBAfkAAAP//BX9/wH+Cgj+AAkABAkABvYBAPr7BPv5/AYCBgMBBvv8BQcD+Qn7+fkC/gUA+wACAAEDERD/APcA/w8E/P7//e8B/f//BQb9/wMDCPoBAgYA/gwD/xUE/gj9BPMC7P4CAQr9/vkA/+MBAQID+fj/9wAC/+T0+gsAAwcB/ff0CBP/AfD9AvsJAP0A+f4BAAH+BQUDA94G+gL5+BYF/O8KAgcC/v4CBBAGBf4DBPQD/v/2APQBAwwIAOgC/gAC//0EAPQF/gwE/+/7CvEPAfMEAv38AhgEAfgJ9PMB/vgA//T6//sEBQMD+fANBhEC/+sF/SYBAP8C+QQCAQIBARb+Auv//vwD+vf9ERYBAxb67AL57fUK7/z+BvoCxNgB9+r5DAn69gIBCxIGA/kKDhAH9+sAxeTz++rzFAcFCwgB9P36DRoP//r6+/j3/vkC8vj+5NITBvf23vf+ChcQDQr0CBcC8+sAAvv7HhEjAwL/AhQF/Pb5E//8B/L39/79+fsD5eX9/QYE1AAC5AkK+QIE8vwC+fgC+Ob9DwMGAg4G8wP99gUH9+4B/yMF0cwD+u7/AO8CB/UK/gIEAv0BCwL87hL/1/T2/vX3DRD7+e3/AvcEBgb19gT8+//6/PsF6/MJ9fIHCv4J7hr9/QT9EfH6CAUC9/7+/QoBGBcWAAP7+f8F/BP9GPT6DPME9/n89wQEA+n9+gIC7gMC7gMD9Pj99f4EAgn4BBAD/BgaBgIAAQkTB+HY/JfgBun8AQv6CDg4ARP9//fx9vbd8egB/+UR/fr5/+YQAffh/RDv+ytJAfEZ9+4e+gkS/v//EQABBfj8//Po9OcFASPg/+r0//skCRQQEA4HBh79/+DO+egI8dLHDRoV/CgiAuID7e4aBgXiBeMH+f/u88ECBcrjAgsA/Pb19/oUBPYZ//8VCOoJ8AvuAOPr/t36AQL2Avv3Aerr/fblB/Xn9u//++gQCQjxAgn1/wMA9QUHCfoVBwgL/gncCekP9/UfAhDd//YZ/gf4Aff4Buwb/xbw+wgIBPkF9OogBf7v9hDa/dARAvIP/ekWA/sB+e76/OgJ+PD69Q0IA/PW+/AZ9hL3/tEB/A7kAOwcBg0MBgACBfMD/uztBQEF+ikA/uP+BBf6/wMB968DAAIL+e8FCz0IBREE+f3/EiH38OXy7+kGCgYEBunzAg39+gAAAh//9MX869no+RMNBxQC+cLaBPkKAxz4APYG+N0O9uoCAgkBCMXcBxkE/SIRBQMIAvr/+AP9A/71+fX69yEH9/MH9foCA9/66MH5/w3/Bv4C/LMB8M78Brv7AhD/Ad8D/M8AAAz/Bg0A/+H/APUF+RQBCBMG+w0AACQDAzQCCRz//8wF++3/A+v6+gcJBRoC/QD7AvoCAAMG/QIB/wX//vEDAPMA/yP/AOr7AQ3/9vQBBAcBA8f7AAgAAwP9BRIBBAcEAtj1AZcD/PL//iT/+vUAAQb+/QD//f3/+BEBCAkL/PED9dn9Afr2DfD7Cf32Awf+BvT4CRX9Bgb7/ggAAAsCAgH/EgwO/QMD/+kB//0A/fkI+P359wIT/xIE/AAB+vX7AAQBB+z2Av77AfgDCwX3+gMGAwP0/v/4Bv33C+z9Cwb56+vHBuz3DAELBhPt+voQAPzwBRsF/vsFBhYAAAEBBggBBf8EAfAD/wD88+fgBhEG9eLo+c72APME9wUCAdYKAvUCEA34/f0I9v8AChH8+gz6/uYOIS0fDxkJ+ucF+wwR/PcBBgwA7vf/A/sC+CQG/QUFIhEGBPP1+u7t//YE/ibw/Q4AAv4h8uP78vP/BAsB/MbpCfUK+xEYCOoH+v4E/twS9fAI9QcF+dYCAQ/5+ugFC+r1+Pr/+Qv99ez/9PMSDvf+D/IB6Av++w/w9sMHBTj8x8L1+P4GB/4WHBgN+hICAuwAEPgD0xT4uhz75b0QBg714fYC+O0VEhX894H85v8ABAID47gG5cvuDtMJ4jzr9xEFHdYMCP4J6gL+9AkKH9Kj+v0E/AEZ+ij+Js4ICQUP7RMC6gf7FBUE+gkC6Qf/19/1+gcB8wQFAQT9Af4U/wL8//f+BgoA/ezxAAkD/uz5/u7z/vYBAf8NAQvyCQL+AwPr/P0I/QD3CuYKBgIL/PYABQLrAfgKAgcGAAgF/wkBCvoBBwn8BA3yBP0JCR/sCwAKAv4R/gEGBwEDAAUF6eu///oGAQr7BQgI+wwC/uQLAgMC/v7w7PcJ/w3+AA4AF/X6BgYA9RYD8wLx8gESFSQBGgwg+dwID/fuCPEFBP4F/+77+gcF9RkEAfkBDvgD9/wFAA4S6NcGBdgGLAwsC/sD7A7/7PX9APcM9BsJ6ODu6uf4AfH0+/nrDQ4RARvw/Qb//OcL+PEK//8QBwUB6c7NCg4B9P37CuED8gX/Au4QB/b6Dhf9FOkJAx77/NX9B/b1GSEAAgDzBfwD7eEFAOT///f+8PYD9NME9fcMAQ3x7+v+AekFBOEM+/kG9uoC9h4OFQIO0NAA5OoH9PwLFvH17RYK/voECA8A4wsU7/8E8O8B9AMP8+L2+wUH7OgA+ggCCfEECPUC8PANAv8FEN3fAw8D+Ar7ExYBIPUR//MFBhIA+P4CHxAD8vz98A8B6fj/Af/7BT0A/ggFCxIBEg8G8O0B8OcFAgf8BOkJ/Pn5++7//+4AAuMEAPEIBxH+/f34CBP9GRUHAgQBDxsSCBUJEAYdCAP3//f9ABsN8vD+5+TvAf0DAQj7Av8MAhkEAfsECf0G/QsF7NUE+Q8D9tHr5uD//PL4+/T9Aff8CQ8FDwT86wIB/OQCDB4E8c/+CuwC9Nn9BCD99vICDP////IB9t/9A/MA/v//++X1/AQB//kA9/8FChb6/uf99xAB+A0CABf98v79DAL/5eryBfz7AQkCJfgd/QkB+B35GRj7ERcQBPoA/Pz+9voH9gr/CQL7DAb2ARYB/O799wYFAdfw8u8C/wUMEQ38CQAADP788/AF6QUDAez78s3+79oAAPQA7fIF+xT9//z7/v/5+P4B/v/7/fv7APz9/fn/+f/4+/v7+P8CAQD//P76Afv7/Pv8/vr9+v4C+QIA+v//+wH9+AIA+wD+/PsA/QD6/gL8+f/6/AL8APn/+v75/QP6+wL7/vv+/AD7APv5+AL+AAAD+fwDAAH+/foA+wD6/QD7+v37+v3/+QD4AvwC/wMAAPr///3+/P4DBgwK9PMLAAf9//f57tgF+Ajv/fwEAv7s/fz68wQH/g4J+v8CAQMGAyoG+fgGBN3++e77A/X4CRUHDQcEDPUM/gcO+/0FDQ799/f67fkCBgztAf/7BBL8DBIF//wW/AkE49D8/wX999/GB/MBAQwKEgAJ+wIM9AQEEQD87wD36ugGAe4B++gBDun0+Pz//xYJ+QoIA/4ICRb7AxMD//oAAQf4/RIHAPL4AecBAO/+/h0DAvH/BgwE/gX5+/EP/ef4/9oAAhIPAen7CBz/AekJBQQHASQBDg4J+/r/Afn9Awb1AvT+/i3yBQwG/v8JAPMHBPkD/AD58+bkAv0GAAz7CAQB9A4SA98U+OsDAgcE+wEH//H+ABAECAL99/P6/dH3AfwC/BAU9A4C//0Q+fsPA/r6BNX6AALuC/T//u8Q/wgIAvD4/vH79wD+BO/mAP389fcMA//xCgv+BQr5/vYEBvUO//P2+wkA8u4v+xP++gnk/wwIBBjzAwUD/hUY9vML+Qz/AOr+/+Lc/QoK/Nss+AIFAfD+9/rmCfb69wn1BPACAgv//wf9/7rwBOYEBAkVCAr4DhUU9CQBBfL+9vMAB9zrAtQB/wb5Au4A+OT6+vADABL9/g0CACf3DfQKEAAJ9OH7/g4MBhD879vZCPAV//fyBBcI8Pr9BA/5GCE//uDo8+34/AT3+hMA/9vd/voO/QQQ/xgB+eS+9O76BiMeDx8NABoXDxIY5+DvAwL7+/sKAAL78eYIBun1APkF+vXy/RUIBAkL/vP18yYBChUEC/P3AA/+BuIABf31/+wCBP0O/BP/BBoKAM8JAfb8DQH7C/sF9NgL/AT4/w/+/wH79hUO/R349fUG/+n2BPn3EPgACPYCAiDxBP79+AkSBg8HCQ8CCQIJ8O/JDBcKAzQb+tny+gv8AQP0++0C+OPu9gkC/PkFAAP9CN/6CSAB+wAJAAH3BBoJ/PT1+OIO+PIGBQYAAb4BA+//AOv3+AwN+PYI/wL8Awb4BgAOCfcPDx4I9+v+1ubx+9/u+fQG+/AP/ewP7h8L7gP/6P/w//P9B/jpOBNU9yjpAwP9EhUWGRoMBhAO9w357PbR8ur39Q/yEwgJBu8ED9EV+/sMFiIK+9MKBBAB+McFD9rt+vHv8vb2/Pv7/v73/AD7//v6+/v9/v/9+Pj4+Pv5Af79//r+AQH+/PkB+/j9+foBAPj5AvkD+wX4/fz3+P37AAIC/fb7//v+//38+vj++gMC+gb6//f+/AP6Bfz8+/r++fr8APz6//n4/PsA/vn8+gL2/ff6AgL++/v3/fz5/Pf4+f35+v4AAvv9BAAB9//+Avn9/gH4/ej7/v0BAAUDAPT8AQYAAAMBBP4E/wUA//3+APj+BAkDAQYG+vj9AA4E/QoJAvIC/gX/AQICAwEC/wgHAgH7/OsMAQsBAgMA/Pn9/wIDAgAC/vj3APL/BOwQAAH+AO//AgUFAP0D/vgB//MAAf4B/QoB/gUK/AMCAu0BAQwD/gv/AQMA/vz/AQECAP0ABAMDBvn6Axr8+/r8/Ov2AgYD+AAEAwL+/vsAAQMCAQsIAwAAAgkB//8F+fYBAwIB/RH/BfED/u/4/AUI/PgB/fwAAQAD/gH7AvcHBhr7/Q0V+vb7/eLYBgP9/wf7DOoDAN0AAAn9//v8/fAB+v0E//L9/wwIAwwMAw4AAQ0CBgQABe4C+Mv///sDAvf8/vT8AAoHAP3//AsACOcD/ekC/wcGAfgE++3///gEBv4A/wQH+vACAPEG/uf2AxT5/xP8DDP//w0C/P36AewBAfcI+OL7/gID/RIR/er//tb///X1AxL4+NPhBBT8CBkE99wHFC8K+N/6BO7z98f6AScKAyIbA/P8/xD4AwQA/80BDBn/+QD88OsE/Qf8BPL5AAz++Q0IAwIJBer8GgsACQj7E90BE/T97ub+BwT8AO8B/vcH990IC/ID9Qj507//+fn85Of7Cvb++Pv+8Qf9CA78/PwEHeP3+BYCAgT/Dvj9/wj+/PcBAwX/AOgDDA/4Ff3/8AUDSMX89wIA3vD5DwH7DBD57gz/GfT+8wn+Eu0B9xP97f4BAPkBAdcA7gP79vkG6hYE+gPrBv74/g0b/gsZ+gAMBf39/tj6Af7vAAzpAPsE/fH0BOUY/BIQ/QoHAQQCBAAGAxQI+v35AwoC/QAB/QAQBP0SAfnzAwzo+QX5APr79/kG+fwI/Qf1BO8GBOYKAgf+/woV+Owt+/Hx+/z+AgD3AwYPBuH++/HvAv7c+/76A/MC/Pvn+QIAANP9/f34+Q4BAvfwEfvu/xz3DAkI9eD8ARz5CBDz9vAHAvPuARXz+w/5B/r/CQgQ/hr4DgD7+O8TBej6AAfv8BcNBOzvBAT4CPEN/AbyBOv7/PT3Fu0E+PP2//b7Aub6AgD+BvMGAvkLBf3+//j/+9QFAeQIDP75BhAMBxr9/wTzBPP39gL0EAf6A/T/E7z0CPcBBPTmBNwEBAb88fkH7Ab2Adn949kKAvbr/cYCAfYPB9/2/PX8ByQCFeMFF/4FCgcHAfgK0ekDC+n/BQgEDPQB7e/17+sOAvEL8QkBAwIAxvD7ACAX/O3mCwwL/B7/9xgAAP4L8+L5CfgDBRIN/sHORT0h+RcVEikU/fUJ8dwC8dXx9hf1+u4G9gf8CO39/OX0Gv79BA33DRsEAQQd/RwUC/wW9PYFDBb/Acz5A/cBBeD//P/+AQHxA+zy/AQDCv7xAwXz/O4G8/cADxMT/fH16/bgEw0d+t0E9REI6vf0OzIvExER+enWFhYg8hjlAvb87NPdCRUJERcRChwX9ujCAgAA/ClMC/EUBg4IBOQZ5+P6/Qr8BtYS/gb9960BCNzs+//t9ejgAAX+5vj97u31A/H5++UFB/by//wEBfTvEQoB9wwLB/oLBP4J9/L1CS8H9ucM7eMH9tf8Bw0EChUECAYW9OQM/QcCAv4SAfz08fj8+QAIAPEB/Q0H/PX/+AEG+uT8+u8DAfoE+wD3//HSAPz09uHsGw8J9v8L7AEKDPUEHRwM/A4CBhwAAesCBPEBBgMBBw37//X2/u4C+BEL++4BBRQAAOP3/vb7Au/5Avv+/vYAAgL9BB0GBAX4+uUA+fkIESgE+ub/AgAIBQMEBAoG/vQKAwYIAyQG+/D8CAHzAfwLAfn2A/b4/gr3Bw4CAPX6A/0FAgwH/wEB99nz+vz//PnvA/YFA/8X/AoS++38BQgG/BEE///6+PEDBfT8/wn4/fXsBfv/Ag0F7eoBAQD5Bwn7Bd8G/uH/AwQEAgX9AxkACc4GAhcBAez9+eIBAAYI/PP/BhIH/fYG/N4CBPIE/wL7A+8KAdL4A9AG+Ob7AAn9/e/8Ae/1+O//BfwFAgH+/gcBAB7+B+X39tL0Ah8ICv4IAAsABykDAur7AO3/+N4D9f7+Ai8A/Af6+/3//OL8AB4D+Ov58AcBHQ/7/wEHAvQBDPz6AOYA/xL/AxUL/Q789egI9AT9Gfj4/RED+RgS+doCBOgCFCkRDOcGCgwEAAb+C+P7BCEJA+8A8unu+/UL+ur99wbj/Rb6BxT/A9n3/OMO89YF997p8tbU+AIC/wvzC/UDA/MP8AAWHhoI/+z9COYD/Rb/+vz9B+YF6vj+/ALz/ezgAQAFCQIHAu/yBBP9Bgv0//sA//f+BQX6APL6+gz2+P39/fT7+/wF9PQJCQ/8Bv0FCfUBBhP8CQwSBAP8/hL7+gf/AwID/AYK//gECAYAAPYBBB32ABsC/xYHBQEFBQAE+gEH9+zF9e/8/A4N9gv1+/MBBP79BBMCGAQa9/j9Ag78A/sFDvkB9/X3+gP4//YI+vYC//X5/ubvCwEAAvD9BgIH/vz6BAMDAvgJCw4MBvoJ/e33BBII9v4DBg4GBP79/xIO/wQA/w0I/wX+/f/+ARgHCBMH/hf2Af////7/Afro/Q8DDwoD/+MFA+n5BgT/Bfv16+TqBt8BCAQDBPH3+gQG/e4CBg4G/PD7BQ0D/ggF+gcBAQH///sBBQYH9gEJ6Ob9+u779RQCCfb/AO3+BOr9Bv0EAPj//PABCNAC+wj8/xH/AvP9+QH/8OUCAwT8FAwB9/v9EhL7B/cD9PkA9AYB/PsD/Pf/Agv//OwCDhABCuv+/g365PwD8/QBBwX+/f388tr9Bgj+/REDCf7/Ghz97fMA4dgDDQf71/IAH/UC/+ACCwj97f8BAiMBACL+AgkA6s3/8+75Ewj1Ctj/+9P8/+cFBxX4BtcABd4EAhb+Ac38+9j//hj9BeMCEfX/AMIC+fwB/+kF9uX9CPQAFuz/B+8F9Pn2EBP/AAgC9foB9vUDBAX//g8ADAv/AQn/B/MA5uQDAxEACAXx/wr//R8BAegIAhb/AOH46RT4/gMGCQ74AxQACwED/QgBBf76DP32BA0D9w0HB+X9/iIBAAn5/PgAA/8ACBbu/wb19/33CP8C/gX+Afr8BvsD/ePv+Pjy/w4L+fr8/vP1Au4U9wv09vX9AwYGBP/z+vsKCBPu+usT/v4HCAn9AfkAAf37AAL1AwsP/P8ACBD5/v0MAg/9BhT6/uwDAgMHChH5Bf4IBuEB/dUOBvIB//j/DzAk9P8ICgHyBvf/7ef+B+PxBcv7/tUECt/98/8H+A8NAQv0AAEABRvyAwMJ7/8Q+NAFCPjv/e36/fT0CQ4sBOsL6wjoBBIHBwQVAQgJ/vjoGRYi/ijn/xH88ezz99f4/h7+/Pb16sfo6+Lv9AD7/fj+8Q8WCsP++8sMDRwIDBIF//b5CeUEEQT8PSgaAvwABAf7DhTnD9v99v4D/+/v+OcBC9L05vMH+P0A8v3tC9UKAP4H9vUDB78BGgH6+wAMAO71A//6DQIEFOj+Cu/4D/769BTsB/MHBP31FAP//fID6wMBCB8PESH3BQj0Cvz/AOz+AfAFpMoX/gbyDB7vEOT9CBAA+OrzAwsE+PX/Bg7xBRX99wn3CxgAARP5Bv/v"},b:[1.7206,.31359,-.2062,.93225,.2975,-1.3697,.17743,.72685,-.81717,.28116,.62245,.038487,.65606,.65371,.59583,.74065,-.14375,.1782,.38128,.090745,.23095,-.074912,.06153,.12158,.018713,.34466,.25065,.24443,-.10432,1.8078,.77921,.54224,-.1821,.47568,.74781,.58168,.02778,.32489,1.0448,-.077362,.32227,-.047404,-.33059,-.039291,.23171,1.0791,.16394,-.043724]},{k:3,dilation:8,residual:!0,w:{shape:[48,48,3],scale:.02836204320192337,data_b64:"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"},b:[.40977,.59899,.21644,.22858,1.5047,.2282,1.0961,1.5619,.70156,-1.3602,-.14413,.35846,-.093414,.16863,1.7523,.58493,.69916,.20671,1.4914,.4477,.4493,.32447,.10877,-.72769,.098431,.79216,-.0092255,.35221,.18134,1.5414,.43936,.038611,.20285,.52693,-.65092,.48794,.7451,.045148,.36787,.21284,-1.3916,-2.2047,.010128,.39447,.085648,-.43788,.017951,.31546]}],bio:{w:{shape:[3,48],scale:.004223219584673643,data_b64:"9BAP/t/w+yvAGv0LF/b6/RH3Nv4BWwfyFq/xBfcPCf309Q4I7RITBnex0/fV+Qwa8g4PAADx+u74GfwK//b0HBH5AfwA+wr1Ff74Bfj8CQHy8wz07xMTBgUeAfsO9w0c8w0PACjy+bMuF/0M8vb32RL50f4AqQr3FUT/BPfrCQ3x8w3j7BQTBp1/MfxB+BQb"},b:[.3298,-1.0277,-.017153]},cls:{w:{shape:[120,48],scale:.004936628974974155,data_b64:"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"},b:[2.1812,1.1932,-.12909,.99489,-1.0059,-1.5953,-.73583,-.11399,.73543,.30603,-.61356,.014246,.51264,-.22961,-.77544,.47317,-.036083,.41667,-.2461,-.89269,-.30756,-.84472,-.82134,-.46859,-.87589,-.3564,-1.2778,-.43376,-.31977,-.47586,-.31124,-.59335,-.28646,-.94846,-.53685,-.60465,-1.015,-.36367,-.87949,-.38464,-.2511,-.42145,-.50176,-.66217,-.42143,-.1735,-.36331,-.19983,-.25013,-.43281,-.35854,-.44943,-.53251,-.75929,-.42566,.054378,-.62883,.090769,-.62326,-.34156,-.68823,-.21448,-.60644,-.5597,-.86791,-.48415,-.83884,-.6919,-.48049,-.47518,-.14021,-.35018,-.7899,-.025957,-.44889,-.38806,-.35918,-.29211,-.22144,-.47468,-.43834,-.53023,-.49121,-.30336,-.49787,-.44441,-.46111,-.55548,-.21931,-.80624,-.19708,-.39377,-.59085,-.64261,-.34571,-.49424,-.27933,.12296,-.46782,-.38657,-.57408,-.29697,-.76351,-.54065,-.78931,-.96345,-.2801,-.44264,-.33914,-.68746,-.11425,-.29714,-.15539,.84044,1.1134,-.40905,.44269,.36281,-.58235,-.017571]}};var $=class{weights;charToId;gpu=null;defaultBackend;scratch;idsScratch=new Int32Array(R);bioIdsScratch=new Int32Array(128);clsIdsScratch=new Int32Array(128);bioProbsScratch=Array.from({length:128},()=>new Float32Array(3));constructor(e={}){this.weights=oA(e.weights??xA),this.charToId=wA(this.weights.charset),this.defaultBackend=e.backend??"cpu",this.scratch=new j(this.weights)}parse(e,B={}){if(typeof e!="string")return[];let n=e;e=k(e);let t=n.length===e.length,r,f=eA(e.length);if(f.length===1&&f[0].length===e.length){let s=x(e.length),g=z(e,this.charToId,this.idsScratch,s),P=S(this.weights,g,this.scratch);r=this.decodeForward(e,P,0,e.length)}else{let s=[],g=new Set;for(let P of f){let o=e.slice(P.offset,P.offset+P.length),w=x(o.length),D=z(o,this.charToId,this.idsScratch,w),C=S(this.weights,D,this.scratch),u=this.decodeForward(o,C,P.offset,o.length);for(let v of u){let I=`${v.start}:${v.end}`;g.has(I)||(g.add(I),s.push(v))}}s.sort((P,o)=>P.start-o.start),r=s}if(t)for(let s of r)s.span=n.slice(s.start,s.end);return r}decodeForward(e,B,n,t=B.length){let r=t,f=r<=128,s=f?this.bioIdsScratch:new Int32Array(r),g=f?this.clsIdsScratch:new Int32Array(r),P=f?this.bioProbsScratch:Array.from({length:r},()=>new Float32Array(3));for(let D=0;D<r;D++)s[D]=p(B.bioLogits,D*3,3),g[D]=p(B.clsLogits,D*B.nCls,B.nCls),BA(B.bioLogits,D*3,3,P[D]);let o=HA(e,s.subarray(0,r),g.subarray(0,r),P),w=[];for(let D of o){let C=D.tokens.map(([I,l])=>[F[I],l]),u=LA(e,D.start,D.end,ie);if(dA(C)&&u===null)continue;let v=MA(C);w.push({span:D.text,start:D.start+n,end:D.end+n,value:v.value,...v.range?{range:v.range}:{},unit:v.unit??null,currency:u,confidence:D.confidence??0,classes:v.classes})}return w}inspect(e){let B=performance.now();typeof e!="string"&&(e="");let n=k(e),t=eA(n.length),r=new Array(n.length),f=new Array(n.length).fill(!1);for(let P of t){let o=n.slice(P.offset,P.offset+P.length),w=x(o.length),D=z(o,this.charToId,this.idsScratch,w),C=S(this.weights,D,this.scratch);for(let u=0;u<o.length;u++){let v=P.offset+u;if(f[v])continue;f[v]=!0;let I=p(C.bioLogits,u*3,3),l=new Float32Array(3);BA(C.bioLogits,u*3,3,l);let Q=p(C.clsLogits,u*C.nCls,C.nCls);r[v]={ch:o[u],bio:I,bioProb:[l[0],l[1],l[2]],cls:F[Q],clsId:Q}}}let s=this.parse(e),g=performance.now()-B;return{text:n,chars:r,spans:s,ms:g}}modelInfo(){let e=this.weights,B=e.embed.data.length;for(let t of e.conv)B+=t.w.data.length+t.b.length;B+=e.bio.w.data.length+e.bio.b.length,B+=e.cls.w.data.length+e.cls.b.length;let n=e.conv.length?Math.max(...e.conv.map(t=>t.w.shape[0])):e.embed.shape[1];return{version:e.version,params:B,channels:n,embedDim:e.embed.shape[1],vocab:e.embed.shape[0],classes:e.classes.length,layers:e.conv.map(t=>({k:t.k,dilation:t.dilation,residual:t.residual}))}}async parseBatch(e,B={}){e=e.map(o=>typeof o=="string"?o:"");let n=B.backend??this.defaultBackend;if(!(n==="webgpu"||n==="auto"&&e.length>=32&&await sA()))return e.map(o=>this.parse(o,{backend:"cpu"}));let r=e,f=e.map(k),s=new Array(e.length),g=[],P=[];for(let o=0;o<f.length;o++)f[o].length<=128?g.push(o):P.push(o);for(let o of P)s[o]=this.parse(r[o],{backend:"cpu"});if(g.length>0){this.gpu||(this.gpu=new q(this.weights));let o=Math.max(...g.map(Q=>f[Q].length),1),w=x(o),D=g.length,C=new Int32Array(D*w),u=this.charToId.get("<pad>")??0;C.fill(u);for(let Q=0;Q<D;Q++){let b=f[g[Q]],i=z(b,this.charToId);C.set(i,Q*w)}let{bio:v,cls:I}=await this.gpu.run(C,D,w),l=this.weights.cls.w.shape[0];for(let Q=0;Q<D;Q++){let b=g[Q],i=f[b],M=r[b],L=M.length===i.length,a=i.length,c=new Float32Array(a*3),E=new Float32Array(a*l);for(let h=0;h<a;h++)c.set(v.subarray((Q*w+h)*3,(Q*w+h)*3+3),h*3),E.set(I.subarray((Q*w+h)*l,(Q*w+h)*l+l),h*l);let H={bioLogits:c,clsLogits:E,length:a,nCls:l},d=this.decodeForward(i,H,0,a);if(L)for(let h of d)h.span=M.slice(h.start,h.end);s[b]=d}}return s}},gA=null;function AA(){return gA||(gA=new $),gA}function Xe(A,e={}){return AA().parse(A,e)}function Ne(A,e={}){return AA().parseBatch(A,e)}function je(A){return AA().inspect(A)}function Se(){return AA().modelInfo()}function Je(A={}){return new $(A)}var ie=FA(RA,OA);export{F as CLASSES,$ as Parser,Je as createParser,je as inspect,fA as isWebGPUAvailable,Se as modelInfo,k as normalizeText,Xe as parse,Ne as parseBatch,sA as probeWebGPU};
|
|
79
|
+
`;function gA(){return typeof navigator<"u"&&!!navigator.gpu}var V=null;function sA(){return V||(V=(async()=>{if(!gA())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(!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 n=await e.requestDevice(),B=(t,s)=>{let o=n.createBuffer({size:Math.max(4,t.byteLength),usage:s,mappedAtCreation:!0});return new Float32Array(o.getMappedRange()).set(t),o.unmap(),o},f=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,r=this.weights,g=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:g,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,g=this.weights,t=g.embed.shape[1],s=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},D=r.limits?.maxComputeWorkgroupsPerDimension??65535,C=E=>{let c=Math.max(1,Math.ceil(E/64)),a=Math.min(c,D),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}),M=r.createCommandEncoder(),h=M.beginComputePass();h.setPipeline(E),h.setBindGroup(0,H),h.dispatchWorkgroups(a.x,a.y),h.end(),r.queue.submit([M.finish()])},Q=r.createBuffer({size:n*t*B*4,usage:s});{let E=C(n*B),c=w(new Uint32Array([n,B,t,g.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=g.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,M=c.dilation,h=c.padding,z=r.createBuffer({size:n*a*B*4,usage:s}),Y=C(n*a*B),zA=w(new Uint32Array([n,B,l,a,H,h,M,1,c.residual?1:0,Y.stride]));u(v,[{binding:0,resource:{buffer:zA}},{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:z}}],Y),Q=z,l=a}let b=r.createComputePipeline({layout:"auto",compute:{module:f.headModule,entryPoint:"main"}}),i=async(E,c)=>{let a=r.createBuffer({size:n*B*c*4,usage:s}),H=C(n*B*c),M=w(new Uint32Array([n,B,l,c,H.stride]));u(b,[{binding:0,resource:{buffer:M}},{binding:1,resource:{buffer:Q}},{binding:2,resource:{buffer:E.w}},{binding:3,resource:{buffer:E.b}},{binding:4,resource:{buffer:a}}],H);let h=r.createBuffer({size:n*B*c*4,usage:GPUBufferUsage.COPY_DST|GPUBufferUsage.MAP_READ}),z=r.createCommandEncoder();z.copyBufferToBuffer(a,0,h,0,n*B*c*4),r.queue.submit([z.finish()]),await h.mapAsync(GPUMapMode.READ);let Y=new Float32Array(h.getMappedRange().slice(0));return h.unmap(),Y},d=await i(f.bioBuf,g.bio.w.shape[0]),L=await i(f.clsBuf,g.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:.031428899616003036,data_b64:"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"},conv:[{k:5,dilation:1,residual:!1,w:{shape:[48,16,5],scale:.006290150806307793,data_b64:"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"},b:[-.17364,-.38739,-.2607,-.45207,-.18537,.080982,-.17033,-.093565,-.14781,97265e-8,-.20138,.12032,-.32839,-.31072,-.077194,.20015,-.21796,-.7154,.010095,-.9235,-.26263,.13311,-.10266,-.55403,-.25231,-.6246,-.60348,31976e-8,-.63929,-.65831,.041219,-.36931,-.15309,-.059742,-.37661,-.37382,-.38717,-.27458,-.14118,.0038513,-.11354,.014295,-.33004,-.37157,.31551,-.65493,.013061,-.27978]},{k:3,dilation:1,residual:!0,w:{shape:[48,48,3],scale:.01307241152971983,data_b64:"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"},b:[.12728,.23057,-.049862,-.12345,.051526,.16247,.038686,.31777,-5044e-7,.45052,.2731,-.034255,.21069,.33912,.37254,.35973,-.03793,.49118,.20192,.23636,.074086,-.096358,.044678,.088321,.012345,.099132,.1955,.041173,-.11149,-.076147,-.11371,.22511,.059769,.059321,-.065647,.48298,-.17765,.29159,-.28504,.24442,.21738,.17888,-.18307,.052557,.15735,-.38273,-.15942,.015911]},{k:3,dilation:2,residual:!0,w:{shape:[48,48,3],scale:.012118758633732796,data_b64:"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"},b:[.42526,-.018646,-.046902,.085615,-.097236,.043131,.26146,.52447,-.15482,.89498,.85283,-.070978,.9454,.34617,.5114,.49209,.021658,.7805,.90902,.58875,-.18753,.24967,-.24721,-.1591,-.18904,-.1032,-.058184,.71993,.44409,.20453,.12519,.26645,.032874,-.16234,.52653,1.2787,.1312,.79518,-.26286,.88507,.0070287,.38067,.10993,.39889,-.023762,.38479,-.38521,-.13663]},{k:3,dilation:4,residual:!0,w:{shape:[48,48,3],scale:.02247241884469986,data_b64:"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"},b:[.25465,.30112,22528e-8,.25806,-.3583,-.17637,.3427,.72967,.010093,.73045,1.2951,-.0064023,.94117,.26018,.34947,.61163,-.16288,2.3975,.67294,.52789,.32498,-1.1242,.1412,.020151,1.2105,-.087648,.32267,.5233,-.056027,-.0055481,1.0103,.96197,-.13409,.60131,.60142,1.9709,.11829,1.0262,1.8891,.27538,-.073567,.64638,.23707,-.059397,-.15365,1.5563,-.036813,.42758]},{k:3,dilation:8,residual:!0,w:{shape:[48,48,3],scale:.01787199079990387,data_b64:"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"},b:[.91862,.65436,-.13312,.65764,.92847,-.037449,.013942,1.5821,.81311,.11236,1.6626,.66674,-.11374,.40245,.38364,.041558,-2.1116,.73693,1.5589,.16456,.12314,.24958,.24521,.26361,.013116,.66216,.013609,.39799,-.18088,1.4454,.55458,.02579,.19249,.40514,1.2981,.97078,.063668,.62026,1.1519,.60559,-1.4828,.021215,.29938,.35468,.31701,-.24198,.028639,.29068]}],bio:{w:{shape:[3,48],scale:.004835921339690685,data_b64:"9AkM/gnx+g3/GB3lDff3xqvwNP8DOAP4G6PhBPULBgLz9hcG8BAJBH8FCfoS+/UV9Q8K/hDu+f8BEQjPAfj4FRvK6/8A8An8Hiz8BvnpCAb19hP57RENBf4UCv8V7xgW8wwN/Qzw+tX/FcpA9vn3HmkP3P8A1Qz7BDIHBvf+BwX09//l7xEUBKsaB/0U9RQV"},b:[.36122,-.65132,-.16829]},cls:{w:{shape:[120,48],scale:.006135262083262205,data_b64:"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"},b:[2.0723,1.0607,-.24934,1.0107,-.080326,-1.2843,-.85037,-.32558,.030327,-.018597,-.45833,.23256,.43774,-.02813,-.80853,.19507,-.28852,.22684,-.55874,-.44662,-.83283,-.86144,-.43801,-.299,-.57308,-.15609,-.95885,-.37369,-.33408,-.36452,.13161,.014104,-.10553,-.92234,-.64867,-.5208,-1.1172,-.74943,-.69722,-.93611,-.50387,-.45246,-.57126,-1.1437,-.19268,-.007911,-.9375,-.78199,-.88571,-.78928,-.74557,-.46453,-.55509,-1.452,-.54216,-.056653,-.83677,-.51795,-.99961,-.53138,-.85038,-.41498,-.59241,-.41867,-1.3204,-.20875,-1.0603,-1.3353,-.93781,-.63768,-.28795,-.1241,-.89149,-1.0132,-.39317,-.37804,-.41038,-.5451,-.28891,-.77723,-.51958,-.0060439,-.62825,-.86789,.021334,-.43327,-1.0298,-.90527,-.60219,-.73554,-.53358,-.28367,-.60228,-.98779,-.45318,-.34428,-.70306,-.72602,-.68318,-1.0351,-.19452,-.38778,-.79516,-.22651,-.67388,-.36044,-.51191,-.67856,-.34167,-.37624,-.15197,-.09546,.3639,.33022,1.4654,-.45574,.38083,-1.189,.10367,.2199]}};var $=class{weights;charToId;gpu=null;defaultBackend;scratch;idsScratch=new Int32Array(R);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 j(this.weights)}parse(e,n={}){if(typeof e!="string")return[];let B=e;e=k(e);let f=B.length===e.length,r,g=eA(e.length);if(g.length===1&&g[0].length===e.length){let t=U(e.length),s=G(e,this.charToId,this.idsScratch,t),o=S(this.weights,s,this.scratch);r=this.decodeForward(e,o,0,e.length)}else{let t=[],s=new Set;for(let o of g){let P=e.slice(o.offset,o.offset+o.length),w=U(P.length),D=G(P,this.charToId,this.idsScratch,w),C=S(this.weights,D,this.scratch),u=this.decodeForward(P,C,o.offset,P.length);for(let Q of u){let l=`${Q.start}:${Q.end}`;s.has(l)||(s.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,g=r<=128,t=g?this.bioIdsScratch:new Int32Array(r),s=g?this.clsIdsScratch:new Int32Array(r),o=g?this.bioProbsScratch:Array.from({length:r},()=>new Float32Array(3));for(let D=0;D<r;D++)t[D]=p(n.bioLogits,D*3,3),s[D]=p(n.clsLogits,D*n.nCls,n.nCls),BA(n.bioLogits,D*3,3,o[D]);let P=HA(e,t.subarray(0,r),s.subarray(0,r),o),w=[];for(let D of P){let C=D.tokens.map(([l,I])=>[F[l],I]),u=LA(e,D.start,D.end,be);if(MA(C)&&u===null)continue;let Q=dA(C);w.push({span:D.text,start:D.start+B,end:D.end+B,value:Q.value,...Q.range?{range:Q.range}:{},unit:Q.unit??null,currency:u,confidence:D.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),g=new Array(B.length).fill(!1);for(let o of f){let P=B.slice(o.offset,o.offset+o.length),w=U(P.length),D=G(P,this.charToId,this.idsScratch,w),C=S(this.weights,D,this.scratch);for(let u=0;u<P.length;u++){let Q=o.offset+u;if(g[Q])continue;g[Q]=!0;let l=p(C.bioLogits,u*3,3),I=new Float32Array(3);BA(C.bioLogits,u*3,3,I);let v=p(C.clsLogits,u*C.nCls,C.nCls);r[Q]={ch:P[u],bio:l,bioProb:[I[0],I[1],I[2]],cls:F[v],clsId:v}}}let t=this.parse(e),s=performance.now()-n;return{text:B,chars:r,spans:t,ms:s}}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 sA()))return e.map(P=>this.parse(P,{backend:"cpu"}));let r=e,g=e.map(k),t=new Array(e.length),s=[],o=[];for(let P=0;P<g.length;P++)g[P].length<=128?s.push(P):o.push(P);for(let P of o)t[P]=this.parse(r[P],{backend:"cpu"});if(s.length>0){this.gpu||(this.gpu=new q(this.weights));let P=Math.max(...s.map(v=>g[v].length),1),w=U(P),D=s.length,C=new Int32Array(D*w),u=this.charToId.get("<pad>")??0;C.fill(u);for(let v=0;v<D;v++){let b=g[s[v]],i=G(b,this.charToId);C.set(i,v*w)}let{bio:Q,cls:l}=await this.gpu.run(C,D,w),I=this.weights.cls.w.shape[0];for(let v=0;v<D;v++){let b=s[v],i=g[b],d=r[b],L=d.length===i.length,E=i.length,c=new Float32Array(E*3),a=new Float32Array(E*I);for(let h=0;h<E;h++)c.set(Q.subarray((v*w+h)*3,(v*w+h)*3+3),h*3),a.set(l.subarray((v*w+h)*I,(v*w+h)*I+I),h*I);let H={bioLogits:c,clsLogits:a,length:E,nCls:I},M=this.decodeForward(i,H,0,E);if(L)for(let h of M)h.span=d.slice(h.start,h.end);t[b]=M}}return t}},oA=null;function AA(){return oA||(oA=new $),oA}function Se(A,e={}){return AA().parse(A,e)}function Ke(A,e={}){return AA().parseBatch(A,e)}function Je(A){return AA().inspect(A)}function _e(){return AA().modelInfo()}function We(A={}){return new $(A)}var be=FA(RA,xA);export{F as CLASSES,$ as Parser,We as createParser,Je as inspect,gA as isWebGPUAvailable,_e as modelInfo,k as normalizeText,Se as parse,Ke as parseBatch,sA as probeWebGPU};
|