edgeflowjs 0.1.0
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 +473 -0
- package/dist/backends/index.d.ts +13 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +32 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/onnx.d.ts +46 -0
- package/dist/backends/onnx.d.ts.map +1 -0
- package/dist/backends/onnx.js +249 -0
- package/dist/backends/onnx.js.map +1 -0
- package/dist/backends/wasm.d.ts +78 -0
- package/dist/backends/wasm.d.ts.map +1 -0
- package/dist/backends/wasm.js +358 -0
- package/dist/backends/wasm.js.map +1 -0
- package/dist/backends/webgpu.d.ts +143 -0
- package/dist/backends/webgpu.d.ts.map +1 -0
- package/dist/backends/webgpu.js +326 -0
- package/dist/backends/webgpu.js.map +1 -0
- package/dist/backends/webnn.d.ts +115 -0
- package/dist/backends/webnn.d.ts.map +1 -0
- package/dist/backends/webnn.js +202 -0
- package/dist/backends/webnn.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/memory.d.ts +234 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +554 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/runtime.d.ts +129 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +352 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scheduler.d.ts +118 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +600 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/tensor.d.ts +149 -0
- package/dist/core/tensor.d.ts.map +1 -0
- package/dist/core/tensor.js +719 -0
- package/dist/core/tensor.js.map +1 -0
- package/dist/core/types.d.ts +367 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +54 -0
- package/dist/core/types.js.map +1 -0
- package/dist/edgeflow.browser.js +5601 -0
- package/dist/edgeflow.browser.js.map +7 -0
- package/dist/edgeflow.browser.min.js +19 -0
- package/dist/edgeflow.browser.min.js.map +7 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/pipelines/base.d.ts +122 -0
- package/dist/pipelines/base.d.ts.map +1 -0
- package/dist/pipelines/base.js +155 -0
- package/dist/pipelines/base.js.map +1 -0
- package/dist/pipelines/feature-extraction.d.ts +68 -0
- package/dist/pipelines/feature-extraction.d.ts.map +1 -0
- package/dist/pipelines/feature-extraction.js +197 -0
- package/dist/pipelines/feature-extraction.js.map +1 -0
- package/dist/pipelines/image-classification.d.ts +61 -0
- package/dist/pipelines/image-classification.d.ts.map +1 -0
- package/dist/pipelines/image-classification.js +140 -0
- package/dist/pipelines/image-classification.js.map +1 -0
- package/dist/pipelines/index.d.ts +58 -0
- package/dist/pipelines/index.d.ts.map +1 -0
- package/dist/pipelines/index.js +72 -0
- package/dist/pipelines/index.js.map +1 -0
- package/dist/pipelines/text-classification.d.ts +71 -0
- package/dist/pipelines/text-classification.d.ts.map +1 -0
- package/dist/pipelines/text-classification.js +175 -0
- package/dist/pipelines/text-classification.js.map +1 -0
- package/dist/tools/index.d.ts +143 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +294 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/utils/cache.d.ts +162 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +443 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-loader.d.ts +107 -0
- package/dist/utils/model-loader.d.ts.map +1 -0
- package/dist/utils/model-loader.js +694 -0
- package/dist/utils/model-loader.js.map +1 -0
- package/dist/utils/preprocessor.d.ts +147 -0
- package/dist/utils/preprocessor.d.ts.map +1 -0
- package/dist/utils/preprocessor.js +423 -0
- package/dist/utils/preprocessor.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +140 -0
- package/dist/utils/tokenizer.d.ts.map +1 -0
- package/dist/utils/tokenizer.js +397 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Feature Extraction Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Extract embeddings/features from text, images, or other data.
|
|
5
|
+
*/
|
|
6
|
+
import { EdgeFlowTensor } from '../core/tensor.js';
|
|
7
|
+
import { createBasicTokenizer } from '../utils/tokenizer.js';
|
|
8
|
+
import { BasePipeline, registerPipeline, } from './base.js';
|
|
9
|
+
/**
|
|
10
|
+
* FeatureExtractionPipeline - Extract embeddings from text
|
|
11
|
+
*/
|
|
12
|
+
export class FeatureExtractionPipeline extends BasePipeline {
|
|
13
|
+
tokenizer = null;
|
|
14
|
+
embeddingDim;
|
|
15
|
+
constructor(config, embeddingDim = 768) {
|
|
16
|
+
super(config);
|
|
17
|
+
this.embeddingDim = embeddingDim;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Initialize pipeline
|
|
21
|
+
*/
|
|
22
|
+
async initialize() {
|
|
23
|
+
await super.initialize();
|
|
24
|
+
if (!this.tokenizer) {
|
|
25
|
+
this.tokenizer = createBasicTokenizer();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Run feature extraction
|
|
30
|
+
*/
|
|
31
|
+
async run(input, options) {
|
|
32
|
+
const isBatch = Array.isArray(input);
|
|
33
|
+
const inputs = isBatch ? input : [input];
|
|
34
|
+
await this.initialize();
|
|
35
|
+
const startTime = performance.now();
|
|
36
|
+
const results = [];
|
|
37
|
+
for (const text of inputs) {
|
|
38
|
+
// Preprocess
|
|
39
|
+
const tensorInputs = await this.preprocess(text);
|
|
40
|
+
// Run inference
|
|
41
|
+
const outputs = await this.runInference(tensorInputs);
|
|
42
|
+
// Postprocess
|
|
43
|
+
const result = await this.postprocess(outputs, options);
|
|
44
|
+
results.push(result);
|
|
45
|
+
}
|
|
46
|
+
const processingTime = performance.now() - startTime;
|
|
47
|
+
for (const result of results) {
|
|
48
|
+
result.processingTime = processingTime / results.length;
|
|
49
|
+
}
|
|
50
|
+
return isBatch ? results : results[0];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Preprocess text input
|
|
54
|
+
*/
|
|
55
|
+
async preprocess(input) {
|
|
56
|
+
const text = Array.isArray(input) ? input[0] : input;
|
|
57
|
+
const encoded = this.tokenizer.encode(text, {
|
|
58
|
+
maxLength: 128,
|
|
59
|
+
padding: 'max_length',
|
|
60
|
+
truncation: true,
|
|
61
|
+
});
|
|
62
|
+
const inputIds = new EdgeFlowTensor(new Float32Array(encoded.inputIds), [1, encoded.inputIds.length], 'float32');
|
|
63
|
+
const attentionMask = new EdgeFlowTensor(new Float32Array(encoded.attentionMask), [1, encoded.attentionMask.length], 'float32');
|
|
64
|
+
return [inputIds, attentionMask];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Run model inference
|
|
68
|
+
*/
|
|
69
|
+
async runInference(inputs) {
|
|
70
|
+
// Generate mock embeddings for demo
|
|
71
|
+
// In production, this would call the actual model
|
|
72
|
+
const seqLen = inputs[0]?.shape[1] ?? 128;
|
|
73
|
+
const embeddings = new Float32Array(seqLen * this.embeddingDim);
|
|
74
|
+
// Generate deterministic pseudo-embeddings based on input
|
|
75
|
+
const inputData = inputs[0]?.toFloat32Array() ?? new Float32Array(0);
|
|
76
|
+
for (let i = 0; i < seqLen; i++) {
|
|
77
|
+
for (let j = 0; j < this.embeddingDim; j++) {
|
|
78
|
+
const inputVal = inputData[i] ?? 0;
|
|
79
|
+
embeddings[i * this.embeddingDim + j] =
|
|
80
|
+
Math.sin(inputVal * (j + 1) * 0.01) * 0.1;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return [new EdgeFlowTensor(embeddings, [1, seqLen, this.embeddingDim], 'float32')];
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Postprocess model outputs
|
|
87
|
+
*/
|
|
88
|
+
async postprocess(outputs, options) {
|
|
89
|
+
const hiddenStates = outputs[0];
|
|
90
|
+
if (!hiddenStates) {
|
|
91
|
+
return { embeddings: [] };
|
|
92
|
+
}
|
|
93
|
+
const pooling = options?.pooling ?? 'mean';
|
|
94
|
+
const normalize = options?.normalize ?? true;
|
|
95
|
+
let embeddings;
|
|
96
|
+
switch (pooling) {
|
|
97
|
+
case 'cls':
|
|
98
|
+
// Use first token (CLS) embedding
|
|
99
|
+
embeddings = this.extractCLSEmbedding(hiddenStates);
|
|
100
|
+
break;
|
|
101
|
+
case 'max':
|
|
102
|
+
// Max pooling
|
|
103
|
+
embeddings = this.maxPooling(hiddenStates);
|
|
104
|
+
break;
|
|
105
|
+
case 'none':
|
|
106
|
+
// Return all token embeddings (flattened)
|
|
107
|
+
embeddings = hiddenStates.toArray();
|
|
108
|
+
break;
|
|
109
|
+
case 'mean':
|
|
110
|
+
default:
|
|
111
|
+
// Mean pooling
|
|
112
|
+
embeddings = this.meanPooling(hiddenStates);
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
// Normalize if requested
|
|
116
|
+
if (normalize) {
|
|
117
|
+
embeddings = this.normalizeVector(embeddings);
|
|
118
|
+
}
|
|
119
|
+
// Dimension reduction if requested
|
|
120
|
+
if (options?.outputDim && options.outputDim < embeddings.length) {
|
|
121
|
+
embeddings = embeddings.slice(0, options.outputDim);
|
|
122
|
+
}
|
|
123
|
+
return { embeddings };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Extract CLS token embedding
|
|
127
|
+
*/
|
|
128
|
+
extractCLSEmbedding(hiddenStates) {
|
|
129
|
+
const data = hiddenStates.toFloat32Array();
|
|
130
|
+
const embeddingDim = hiddenStates.shape[2] ?? this.embeddingDim;
|
|
131
|
+
return Array.from(data.slice(0, embeddingDim));
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Mean pooling over sequence
|
|
135
|
+
*/
|
|
136
|
+
meanPooling(hiddenStates) {
|
|
137
|
+
const data = hiddenStates.toFloat32Array();
|
|
138
|
+
const seqLen = hiddenStates.shape[1] ?? 1;
|
|
139
|
+
const embeddingDim = hiddenStates.shape[2] ?? this.embeddingDim;
|
|
140
|
+
const result = new Float32Array(embeddingDim);
|
|
141
|
+
for (let i = 0; i < seqLen; i++) {
|
|
142
|
+
for (let j = 0; j < embeddingDim; j++) {
|
|
143
|
+
result[j] = (result[j] ?? 0) + (data[i * embeddingDim + j] ?? 0) / seqLen;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return Array.from(result);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Max pooling over sequence
|
|
150
|
+
*/
|
|
151
|
+
maxPooling(hiddenStates) {
|
|
152
|
+
const data = hiddenStates.toFloat32Array();
|
|
153
|
+
const seqLen = hiddenStates.shape[1] ?? 1;
|
|
154
|
+
const embeddingDim = hiddenStates.shape[2] ?? this.embeddingDim;
|
|
155
|
+
const result = new Array(embeddingDim).fill(-Infinity);
|
|
156
|
+
for (let i = 0; i < seqLen; i++) {
|
|
157
|
+
for (let j = 0; j < embeddingDim; j++) {
|
|
158
|
+
const val = data[i * embeddingDim + j] ?? 0;
|
|
159
|
+
if (val > (result[j] ?? -Infinity)) {
|
|
160
|
+
result[j] = val;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return result;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* L2 normalize vector
|
|
168
|
+
*/
|
|
169
|
+
normalizeVector(vec) {
|
|
170
|
+
let norm = 0;
|
|
171
|
+
for (const v of vec) {
|
|
172
|
+
norm += v * v;
|
|
173
|
+
}
|
|
174
|
+
norm = Math.sqrt(norm);
|
|
175
|
+
if (norm === 0)
|
|
176
|
+
return vec;
|
|
177
|
+
return vec.map(v => v / norm);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// ============================================================================
|
|
181
|
+
// Factory Function
|
|
182
|
+
// ============================================================================
|
|
183
|
+
/**
|
|
184
|
+
* Create feature extraction pipeline
|
|
185
|
+
*/
|
|
186
|
+
export function createFeatureExtractionPipeline(config = {}) {
|
|
187
|
+
return new FeatureExtractionPipeline({
|
|
188
|
+
task: 'feature-extraction',
|
|
189
|
+
model: config.model ?? 'default',
|
|
190
|
+
runtime: config.runtime,
|
|
191
|
+
cache: config.cache ?? true,
|
|
192
|
+
quantization: config.quantization,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
// Register pipeline
|
|
196
|
+
registerPipeline('feature-extraction', (config) => new FeatureExtractionPipeline(config));
|
|
197
|
+
//# sourceMappingURL=feature-extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-extraction.js","sourceRoot":"","sources":["../../src/pipelines/feature-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Image Classification Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Classify images into categories using vision models.
|
|
5
|
+
*/
|
|
6
|
+
import { PipelineConfig, PipelineOptions } from '../core/types.js';
|
|
7
|
+
import { EdgeFlowTensor } from '../core/tensor.js';
|
|
8
|
+
import { BasePipeline, ImageClassificationResult } from './base.js';
|
|
9
|
+
/**
|
|
10
|
+
* Image classification options
|
|
11
|
+
*/
|
|
12
|
+
export interface ImageClassificationOptions extends PipelineOptions {
|
|
13
|
+
/** Return all labels with scores */
|
|
14
|
+
returnAllScores?: boolean;
|
|
15
|
+
/** Custom labels */
|
|
16
|
+
labels?: string[];
|
|
17
|
+
/** Number of top predictions to return */
|
|
18
|
+
topK?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Image classification input types
|
|
22
|
+
*/
|
|
23
|
+
export type ImageInput = HTMLImageElement | HTMLCanvasElement | ImageBitmap | ImageData | string;
|
|
24
|
+
/**
|
|
25
|
+
* ImageClassificationPipeline - Classify images
|
|
26
|
+
*/
|
|
27
|
+
export declare class ImageClassificationPipeline extends BasePipeline<ImageInput | ImageInput[], ImageClassificationResult | ImageClassificationResult[]> {
|
|
28
|
+
private preprocessor;
|
|
29
|
+
private labels;
|
|
30
|
+
private numClasses;
|
|
31
|
+
constructor(config: PipelineConfig, labels?: string[], numClasses?: number);
|
|
32
|
+
/**
|
|
33
|
+
* Initialize pipeline
|
|
34
|
+
*/
|
|
35
|
+
initialize(): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Set custom labels
|
|
38
|
+
*/
|
|
39
|
+
setLabels(labels: string[]): void;
|
|
40
|
+
/**
|
|
41
|
+
* Run classification
|
|
42
|
+
*/
|
|
43
|
+
run(input: ImageInput | ImageInput[], options?: ImageClassificationOptions): Promise<ImageClassificationResult | ImageClassificationResult[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Preprocess image input
|
|
46
|
+
*/
|
|
47
|
+
protected preprocess(input: ImageInput | ImageInput[]): Promise<EdgeFlowTensor[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Run model inference
|
|
50
|
+
*/
|
|
51
|
+
private runInference;
|
|
52
|
+
/**
|
|
53
|
+
* Postprocess model outputs
|
|
54
|
+
*/
|
|
55
|
+
protected postprocess(outputs: EdgeFlowTensor[], options?: ImageClassificationOptions): Promise<ImageClassificationResult>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Create image classification pipeline
|
|
59
|
+
*/
|
|
60
|
+
export declare function createImageClassificationPipeline(config?: Partial<PipelineConfig>, labels?: string[]): ImageClassificationPipeline;
|
|
61
|
+
//# sourceMappingURL=image-classification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-classification.d.ts","sourceRoot":"","sources":["../../src/pipelines/image-classification.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAW,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,YAAY,EACZ,yBAAyB,EAG1B,MAAM,WAAW,CAAC;AAMnB;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,eAAe;IACjE,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,MAAM,CAAC;AAEX;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,YAAY,CAC3D,UAAU,GAAG,UAAU,EAAE,EACzB,yBAAyB,GAAG,yBAAyB,EAAE,CACxD;IACC,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,UAAU,CAAS;gBAGzB,MAAM,EAAE,cAAc,EACtB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,UAAU,GAAE,MAAa;IAO3B;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKjC;;OAEG;IACY,GAAG,CAChB,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,EAChC,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,yBAAyB,GAAG,yBAAyB,EAAE,CAAC;IA8BnE;;OAEG;cACsB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAchG;;OAEG;YACW,YAAY;IAmB1B;;OAEG;cACsB,WAAW,CAClC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,yBAAyB,CAAC;CAkCtC;AAMD;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,EACpC,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,2BAA2B,CAW7B"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Image Classification Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Classify images into categories using vision models.
|
|
5
|
+
*/
|
|
6
|
+
import { EdgeFlowTensor, softmax } from '../core/tensor.js';
|
|
7
|
+
import { createImagePreprocessor } from '../utils/preprocessor.js';
|
|
8
|
+
import { BasePipeline, registerPipeline, IMAGENET_LABELS, } from './base.js';
|
|
9
|
+
/**
|
|
10
|
+
* ImageClassificationPipeline - Classify images
|
|
11
|
+
*/
|
|
12
|
+
export class ImageClassificationPipeline extends BasePipeline {
|
|
13
|
+
preprocessor = null;
|
|
14
|
+
labels;
|
|
15
|
+
numClasses;
|
|
16
|
+
constructor(config, labels, numClasses = 1000) {
|
|
17
|
+
super(config);
|
|
18
|
+
this.labels = labels ?? IMAGENET_LABELS;
|
|
19
|
+
this.numClasses = numClasses;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Initialize pipeline
|
|
23
|
+
*/
|
|
24
|
+
async initialize() {
|
|
25
|
+
await super.initialize();
|
|
26
|
+
if (!this.preprocessor) {
|
|
27
|
+
this.preprocessor = createImagePreprocessor('imagenet');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Set custom labels
|
|
32
|
+
*/
|
|
33
|
+
setLabels(labels) {
|
|
34
|
+
this.labels = labels;
|
|
35
|
+
this.numClasses = labels.length;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Run classification
|
|
39
|
+
*/
|
|
40
|
+
async run(input, options) {
|
|
41
|
+
const isBatch = Array.isArray(input);
|
|
42
|
+
const inputs = isBatch ? input : [input];
|
|
43
|
+
await this.initialize();
|
|
44
|
+
const startTime = performance.now();
|
|
45
|
+
const results = [];
|
|
46
|
+
for (const image of inputs) {
|
|
47
|
+
// Preprocess
|
|
48
|
+
const tensorInputs = await this.preprocess(image);
|
|
49
|
+
// Run inference
|
|
50
|
+
const outputs = await this.runInference(tensorInputs);
|
|
51
|
+
// Postprocess
|
|
52
|
+
const result = await this.postprocess(outputs, options);
|
|
53
|
+
results.push(result);
|
|
54
|
+
}
|
|
55
|
+
const processingTime = performance.now() - startTime;
|
|
56
|
+
for (const result of results) {
|
|
57
|
+
result.processingTime = processingTime / results.length;
|
|
58
|
+
}
|
|
59
|
+
return isBatch ? results : results[0];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Preprocess image input
|
|
63
|
+
*/
|
|
64
|
+
async preprocess(input) {
|
|
65
|
+
const image = Array.isArray(input) ? input[0] : input;
|
|
66
|
+
// Process image
|
|
67
|
+
const tensor = await this.preprocessor.process(image);
|
|
68
|
+
// Add batch dimension if needed
|
|
69
|
+
if (tensor.shape.length === 3) {
|
|
70
|
+
return [tensor.reshape([1, ...tensor.shape])];
|
|
71
|
+
}
|
|
72
|
+
return [tensor];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Run model inference
|
|
76
|
+
*/
|
|
77
|
+
async runInference(inputs) {
|
|
78
|
+
// Generate mock classification logits for demo
|
|
79
|
+
// In production, this would call the actual model
|
|
80
|
+
const logits = new Float32Array(this.numClasses);
|
|
81
|
+
// Generate deterministic pseudo-logits based on input
|
|
82
|
+
const inputData = inputs[0]?.toFloat32Array() ?? new Float32Array(0);
|
|
83
|
+
let sum = 0;
|
|
84
|
+
for (let i = 0; i < Math.min(1000, inputData.length); i++) {
|
|
85
|
+
sum += inputData[i] ?? 0;
|
|
86
|
+
}
|
|
87
|
+
for (let i = 0; i < this.numClasses; i++) {
|
|
88
|
+
logits[i] = Math.sin(sum * (i + 1) * 0.1) * 3;
|
|
89
|
+
}
|
|
90
|
+
return [new EdgeFlowTensor(logits, [1, this.numClasses], 'float32')];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Postprocess model outputs
|
|
94
|
+
*/
|
|
95
|
+
async postprocess(outputs, options) {
|
|
96
|
+
const logits = outputs[0];
|
|
97
|
+
if (!logits) {
|
|
98
|
+
return { label: 'unknown', score: 0 };
|
|
99
|
+
}
|
|
100
|
+
// Apply softmax
|
|
101
|
+
const probs = softmax(logits, -1);
|
|
102
|
+
const probsArray = probs.toFloat32Array();
|
|
103
|
+
const topK = options?.topK ?? 1;
|
|
104
|
+
if (topK > 1 || options?.returnAllScores) {
|
|
105
|
+
// Return top-K results (simplified to top-1 here)
|
|
106
|
+
}
|
|
107
|
+
// Find argmax
|
|
108
|
+
let maxIdx = 0;
|
|
109
|
+
let maxScore = probsArray[0] ?? 0;
|
|
110
|
+
for (let i = 1; i < probsArray.length; i++) {
|
|
111
|
+
if ((probsArray[i] ?? 0) > maxScore) {
|
|
112
|
+
maxScore = probsArray[i] ?? 0;
|
|
113
|
+
maxIdx = i;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const label = options?.labels?.[maxIdx] ?? this.labels[maxIdx] ?? `class_${maxIdx}`;
|
|
117
|
+
return {
|
|
118
|
+
label,
|
|
119
|
+
score: maxScore,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// Factory Function
|
|
125
|
+
// ============================================================================
|
|
126
|
+
/**
|
|
127
|
+
* Create image classification pipeline
|
|
128
|
+
*/
|
|
129
|
+
export function createImageClassificationPipeline(config = {}, labels) {
|
|
130
|
+
return new ImageClassificationPipeline({
|
|
131
|
+
task: 'image-classification',
|
|
132
|
+
model: config.model ?? 'default',
|
|
133
|
+
runtime: config.runtime,
|
|
134
|
+
cache: config.cache ?? true,
|
|
135
|
+
quantization: config.quantization,
|
|
136
|
+
}, labels);
|
|
137
|
+
}
|
|
138
|
+
// Register pipeline
|
|
139
|
+
registerPipeline('image-classification', (config) => new ImageClassificationPipeline(config));
|
|
140
|
+
//# sourceMappingURL=image-classification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-classification.js","sourceRoot":"","sources":["../../src/pipelines/image-classification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Pipeline Exports
|
|
3
|
+
*/
|
|
4
|
+
import { RuntimeType, QuantizationType } from '../core/types.js';
|
|
5
|
+
export { BasePipeline, registerPipeline, getPipelineFactory, SENTIMENT_LABELS, EMOTION_LABELS, IMAGENET_LABELS, type PipelineResult, type TextClassificationResult, type FeatureExtractionResult, type ImageClassificationResult, type ObjectDetectionResult, } from './base.js';
|
|
6
|
+
export { TextClassificationPipeline, SentimentAnalysisPipeline, createTextClassificationPipeline, createSentimentAnalysisPipeline, type TextClassificationOptions, } from './text-classification.js';
|
|
7
|
+
export { FeatureExtractionPipeline, createFeatureExtractionPipeline, type FeatureExtractionOptions, } from './feature-extraction.js';
|
|
8
|
+
export { ImageClassificationPipeline, createImageClassificationPipeline, type ImageClassificationOptions, type ImageInput, } from './image-classification.js';
|
|
9
|
+
/**
|
|
10
|
+
* Pipeline options for the factory function
|
|
11
|
+
*/
|
|
12
|
+
export interface PipelineFactoryOptions {
|
|
13
|
+
/** Model ID or URL */
|
|
14
|
+
model?: string;
|
|
15
|
+
/** Runtime to use */
|
|
16
|
+
runtime?: RuntimeType;
|
|
17
|
+
/** Enable caching */
|
|
18
|
+
cache?: boolean;
|
|
19
|
+
/** Quantization type */
|
|
20
|
+
quantization?: QuantizationType;
|
|
21
|
+
/** Custom labels for classification */
|
|
22
|
+
labels?: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Supported pipeline task mapping
|
|
26
|
+
*/
|
|
27
|
+
type PipelineTaskMap = {
|
|
28
|
+
'text-classification': TextClassificationPipeline;
|
|
29
|
+
'sentiment-analysis': SentimentAnalysisPipeline;
|
|
30
|
+
'feature-extraction': FeatureExtractionPipeline;
|
|
31
|
+
'image-classification': ImageClassificationPipeline;
|
|
32
|
+
};
|
|
33
|
+
import { TextClassificationPipeline, SentimentAnalysisPipeline } from './text-classification.js';
|
|
34
|
+
import { FeatureExtractionPipeline } from './feature-extraction.js';
|
|
35
|
+
import { ImageClassificationPipeline } from './image-classification.js';
|
|
36
|
+
/**
|
|
37
|
+
* Create a pipeline for a specific task
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* // Create a sentiment analysis pipeline
|
|
42
|
+
* const sentiment = await pipeline('sentiment-analysis');
|
|
43
|
+
* const result = await sentiment.run('I love this product!');
|
|
44
|
+
*
|
|
45
|
+
* // Create an image classifier with custom model
|
|
46
|
+
* const classifier = await pipeline('image-classification', {
|
|
47
|
+
* model: 'https://example.com/model.bin',
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function pipeline<T extends keyof PipelineTaskMap>(task: T, options?: PipelineFactoryOptions): Promise<PipelineTaskMap[T]>;
|
|
52
|
+
/**
|
|
53
|
+
* Create multiple pipelines at once
|
|
54
|
+
*/
|
|
55
|
+
export declare function createPipelines<T extends (keyof PipelineTaskMap)[]>(tasks: T, options?: PipelineFactoryOptions): Promise<{
|
|
56
|
+
[K in T[number]]: PipelineTaskMap[K];
|
|
57
|
+
}>;
|
|
58
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAGL,WAAW,EACX,gBAAgB,EACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAChC,+BAA+B,EAC/B,KAAK,yBAAyB,GAC/B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,KAAK,0BAA0B,EAC/B,KAAK,UAAU,GAChB,MAAM,2BAA2B,CAAC;AAMnC;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,KAAK,eAAe,GAAG;IACrB,qBAAqB,EAAE,0BAA0B,CAAC;IAClD,oBAAoB,EAAE,yBAAyB,CAAC;IAChD,oBAAoB,EAAE,yBAAyB,CAAC;IAChD,sBAAsB,EAAE,2BAA2B,CAAC;CACrD,CAAC;AAGF,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,QAAQ,CAAC,CAAC,SAAS,MAAM,eAAe,EAC5D,IAAI,EAAE,CAAC,EACP,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAgC7B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,CAAC,SAAS,CAAC,MAAM,eAAe,CAAC,EAAE,EACvE,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;CAAE,CAAC,CAanD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Pipeline Exports
|
|
3
|
+
*/
|
|
4
|
+
// Base
|
|
5
|
+
export { BasePipeline, registerPipeline, getPipelineFactory, SENTIMENT_LABELS, EMOTION_LABELS, IMAGENET_LABELS, } from './base.js';
|
|
6
|
+
// Text Classification
|
|
7
|
+
export { TextClassificationPipeline, SentimentAnalysisPipeline, createTextClassificationPipeline, createSentimentAnalysisPipeline, } from './text-classification.js';
|
|
8
|
+
// Feature Extraction
|
|
9
|
+
export { FeatureExtractionPipeline, createFeatureExtractionPipeline, } from './feature-extraction.js';
|
|
10
|
+
// Image Classification
|
|
11
|
+
export { ImageClassificationPipeline, createImageClassificationPipeline, } from './image-classification.js';
|
|
12
|
+
// Import pipeline classes
|
|
13
|
+
import { TextClassificationPipeline, SentimentAnalysisPipeline } from './text-classification.js';
|
|
14
|
+
import { FeatureExtractionPipeline } from './feature-extraction.js';
|
|
15
|
+
import { ImageClassificationPipeline } from './image-classification.js';
|
|
16
|
+
/**
|
|
17
|
+
* Create a pipeline for a specific task
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Create a sentiment analysis pipeline
|
|
22
|
+
* const sentiment = await pipeline('sentiment-analysis');
|
|
23
|
+
* const result = await sentiment.run('I love this product!');
|
|
24
|
+
*
|
|
25
|
+
* // Create an image classifier with custom model
|
|
26
|
+
* const classifier = await pipeline('image-classification', {
|
|
27
|
+
* model: 'https://example.com/model.bin',
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export async function pipeline(task, options) {
|
|
32
|
+
const config = {
|
|
33
|
+
task: task,
|
|
34
|
+
model: options?.model ?? 'default',
|
|
35
|
+
runtime: options?.runtime,
|
|
36
|
+
cache: options?.cache ?? true,
|
|
37
|
+
quantization: options?.quantization,
|
|
38
|
+
};
|
|
39
|
+
let pipelineInstance;
|
|
40
|
+
switch (task) {
|
|
41
|
+
case 'text-classification':
|
|
42
|
+
pipelineInstance = new TextClassificationPipeline(config, options?.labels);
|
|
43
|
+
break;
|
|
44
|
+
case 'sentiment-analysis':
|
|
45
|
+
pipelineInstance = new SentimentAnalysisPipeline(config);
|
|
46
|
+
break;
|
|
47
|
+
case 'feature-extraction':
|
|
48
|
+
pipelineInstance = new FeatureExtractionPipeline(config);
|
|
49
|
+
break;
|
|
50
|
+
case 'image-classification':
|
|
51
|
+
pipelineInstance = new ImageClassificationPipeline(config, options?.labels);
|
|
52
|
+
break;
|
|
53
|
+
default:
|
|
54
|
+
throw new Error(`Unknown pipeline task: ${task}`);
|
|
55
|
+
}
|
|
56
|
+
// Initialize the pipeline
|
|
57
|
+
await pipelineInstance.initialize();
|
|
58
|
+
return pipelineInstance;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create multiple pipelines at once
|
|
62
|
+
*/
|
|
63
|
+
export async function createPipelines(tasks, options) {
|
|
64
|
+
const pipelines = await Promise.all(tasks.map(task => pipeline(task, options)));
|
|
65
|
+
const result = {};
|
|
66
|
+
for (let i = 0; i < tasks.length; i++) {
|
|
67
|
+
const task = tasks[i];
|
|
68
|
+
result[task] = pipelines[i];
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipelines/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO;AACP,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,eAAe,GAMhB,MAAM,WAAW,CAAC;AAEnB,sBAAsB;AACtB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,gCAAgC,EAChC,+BAA+B,GAEhC,MAAM,0BAA0B,CAAC;AAElC,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAEhC,MAAM,yBAAyB,CAAC;AAEjC,uBAAuB;AACvB,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,GAGlC,MAAM,2BAA2B,CAAC;AAgCnC,0BAA0B;AAC1B,OAAO,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAO,EACP,OAAgC;IAEhC,MAAM,MAAM,GAAmB;QAC7B,IAAI,EAAE,IAAoB;QAC1B,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,SAAS;QAClC,OAAO,EAAE,OAAO,EAAE,OAAO;QACzB,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,YAAY,EAAE,OAAO,EAAE,YAAY;KACpC,CAAC;IAEF,IAAI,gBAAkI,CAAC;IAEvI,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,qBAAqB;YACxB,gBAAgB,GAAG,IAAI,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3E,MAAM;QACR,KAAK,oBAAoB;YACvB,gBAAgB,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM;QACR,KAAK,oBAAoB;YACvB,gBAAgB,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;YACzD,MAAM;QACR,KAAK,sBAAsB;YACzB,gBAAgB,GAAG,IAAI,2BAA2B,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5E,MAAM;QACR;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,0BAA0B;IAC1B,MAAM,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAEpC,OAAO,gBAAsC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAQ,EACR,OAAgC;IAEhC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAC3C,CAAC;IAEF,MAAM,MAAM,GAAsD,EAAE,CAAC;IAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,CAAC,IAAiB,CAAC,GAAG,SAAS,CAAC,CAAC,CAA+B,CAAC;IACzE,CAAC;IAED,OAAO,MAAkD,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Text Classification Pipeline
|
|
3
|
+
*
|
|
4
|
+
* High-level API for text classification tasks including
|
|
5
|
+
* sentiment analysis, topic classification, etc.
|
|
6
|
+
*/
|
|
7
|
+
import { PipelineConfig, PipelineOptions } from '../core/types.js';
|
|
8
|
+
import { EdgeFlowTensor } from '../core/tensor.js';
|
|
9
|
+
import { BasePipeline, TextClassificationResult } from './base.js';
|
|
10
|
+
/**
|
|
11
|
+
* Text classification options
|
|
12
|
+
*/
|
|
13
|
+
export interface TextClassificationOptions extends PipelineOptions {
|
|
14
|
+
/** Return all labels with scores */
|
|
15
|
+
returnAllScores?: boolean;
|
|
16
|
+
/** Custom labels */
|
|
17
|
+
labels?: string[];
|
|
18
|
+
/** Number of labels to return */
|
|
19
|
+
topK?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* TextClassificationPipeline - Classify text into categories
|
|
23
|
+
*/
|
|
24
|
+
export declare class TextClassificationPipeline extends BasePipeline<string | string[], TextClassificationResult | TextClassificationResult[]> {
|
|
25
|
+
private tokenizer;
|
|
26
|
+
private labels;
|
|
27
|
+
constructor(config: PipelineConfig, labels?: string[]);
|
|
28
|
+
/**
|
|
29
|
+
* Initialize pipeline
|
|
30
|
+
*/
|
|
31
|
+
initialize(): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Set custom labels
|
|
34
|
+
*/
|
|
35
|
+
setLabels(labels: string[]): void;
|
|
36
|
+
/**
|
|
37
|
+
* Run classification
|
|
38
|
+
*/
|
|
39
|
+
run(input: string | string[], options?: TextClassificationOptions): Promise<TextClassificationResult | TextClassificationResult[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Preprocess text input
|
|
42
|
+
*/
|
|
43
|
+
protected preprocess(input: string | string[]): Promise<EdgeFlowTensor[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Run model inference
|
|
46
|
+
*/
|
|
47
|
+
private runInference;
|
|
48
|
+
/**
|
|
49
|
+
* Postprocess model outputs
|
|
50
|
+
*/
|
|
51
|
+
protected postprocess(outputs: EdgeFlowTensor[], options?: TextClassificationOptions): Promise<TextClassificationResult>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* SentimentAnalysisPipeline - Specialized for sentiment analysis
|
|
55
|
+
*/
|
|
56
|
+
export declare class SentimentAnalysisPipeline extends TextClassificationPipeline {
|
|
57
|
+
constructor(config: PipelineConfig);
|
|
58
|
+
/**
|
|
59
|
+
* Analyze sentiment
|
|
60
|
+
*/
|
|
61
|
+
analyze(text: string | string[], options?: TextClassificationOptions): Promise<TextClassificationResult | TextClassificationResult[]>;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create text classification pipeline
|
|
65
|
+
*/
|
|
66
|
+
export declare function createTextClassificationPipeline(config?: Partial<PipelineConfig>): TextClassificationPipeline;
|
|
67
|
+
/**
|
|
68
|
+
* Create sentiment analysis pipeline
|
|
69
|
+
*/
|
|
70
|
+
export declare function createSentimentAnalysisPipeline(config?: Partial<PipelineConfig>): SentimentAnalysisPipeline;
|
|
71
|
+
//# sourceMappingURL=text-classification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-classification.d.ts","sourceRoot":"","sources":["../../src/pipelines/text-classification.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAW,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EACL,YAAY,EACZ,wBAAwB,EAGzB,MAAM,WAAW,CAAC;AAMnB;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,oCAAoC;IACpC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,YAAY,CAC1D,MAAM,GAAG,MAAM,EAAE,EACjB,wBAAwB,GAAG,wBAAwB,EAAE,CACtD;IACC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,MAAM,CAAW;gBAEb,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE;IAKrD;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAS1C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjC;;OAEG;IACY,GAAG,CAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,EAAE,CAAC;IA+BjE;;OAEG;cACsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0BxF;;OAEG;YACW,YAAY;IAkB1B;;OAEG;cACsB,WAAW,CAClC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,CAAC;CAqCrC;AAMD;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,0BAA0B;gBAC3D,MAAM,EAAE,cAAc;IAIlC;;OAEG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,GAAG,wBAAwB,EAAE,CAAC;CAGlE;AAMD;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,0BAA0B,CAQ5B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,yBAAyB,CAQ3B"}
|