@higher.archi/boe 1.0.25 → 1.0.27

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.
@@ -0,0 +1,397 @@
1
+ "use strict";
2
+ /**
3
+ * Sentiment Engine Strategy
4
+ *
5
+ * Core execution logic for all sentiment strategies:
6
+ * - token-level: Score individual tokens in the full text
7
+ * - document-level: Split into sentences, score each, average compounds
8
+ * - aspect-based: Match sentences to aspect terms, score per aspect
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.sentimentStrategy = exports.SentimentExecutor = void 0;
12
+ const types_1 = require("./types");
13
+ // ========================================
14
+ // Helpers
15
+ // ========================================
16
+ /** Split text into tokens on whitespace and punctuation boundaries */
17
+ function tokenize(text) {
18
+ return text.match(/\w+(?:'\w+)?/g) ?? [];
19
+ }
20
+ /** Check if a token is ALL CAPS (must be >= 2 chars) */
21
+ function isAllCaps(token) {
22
+ return token.length >= 2 && token === token.toUpperCase() && /[A-Z]/.test(token);
23
+ }
24
+ /** Count trailing exclamation marks in text */
25
+ function countTrailingExclamations(text) {
26
+ const match = text.match(/!+\s*$/);
27
+ return match ? match[0].replace(/\s/g, '').length : 0;
28
+ }
29
+ /** Split text into sentences using a regex pattern */
30
+ function splitSentences(text, pattern) {
31
+ return text
32
+ .split(pattern)
33
+ .map(s => s.trim())
34
+ .filter(s => s.length > 0);
35
+ }
36
+ /** Sliding window multi-word idiom matching */
37
+ function scanIdioms(tokens, idioms, maxLen) {
38
+ if (maxLen === 0)
39
+ return [];
40
+ const matches = [];
41
+ const lowerTokens = tokens.map(t => t.toLowerCase());
42
+ for (let i = 0; i < lowerTokens.length; i++) {
43
+ // Try longest match first
44
+ for (let len = Math.min(maxLen, lowerTokens.length - i); len >= 2; len--) {
45
+ const phrase = lowerTokens.slice(i, i + len).join(' ');
46
+ if (phrase in idioms) {
47
+ matches.push({
48
+ startIdx: i,
49
+ endIdx: i + len - 1,
50
+ phrase,
51
+ score: idioms[phrase]
52
+ });
53
+ break; // longest match wins for this position
54
+ }
55
+ }
56
+ }
57
+ return matches;
58
+ }
59
+ /** Core token scoring loop */
60
+ function scoreTokens(tokens, lexicon, capsBoost, negationWindow, onToken) {
61
+ const results = [];
62
+ // Pre-scan idioms
63
+ const idiomMatches = scanIdioms(tokens, lexicon.idioms, lexicon._idiomMaxLength);
64
+ const idiomCovered = new Set();
65
+ for (const match of idiomMatches) {
66
+ for (let i = match.startIdx; i <= match.endIdx; i++) {
67
+ idiomCovered.add(i);
68
+ }
69
+ }
70
+ // Insert idiom scores at their start positions
71
+ const idiomAtStart = new Map();
72
+ for (const match of idiomMatches) {
73
+ idiomAtStart.set(match.startIdx, { phrase: match.phrase, score: match.score });
74
+ }
75
+ let negationCountdown = 0;
76
+ let pendingBooster = 0;
77
+ for (let i = 0; i < tokens.length; i++) {
78
+ const token = tokens[i];
79
+ const normalized = token.toLowerCase();
80
+ // Check if this token starts an idiom
81
+ if (idiomAtStart.has(i)) {
82
+ const idiom = idiomAtStart.get(i);
83
+ let adjustedScore = idiom.score;
84
+ const modifiers = ['idiom'];
85
+ if (negationCountdown > 0) {
86
+ adjustedScore *= -1;
87
+ modifiers.push('negated');
88
+ negationCountdown--;
89
+ }
90
+ if (pendingBooster !== 0) {
91
+ adjustedScore *= pendingBooster;
92
+ modifiers.push('boosted');
93
+ pendingBooster = 0;
94
+ }
95
+ const result = {
96
+ token: idiom.phrase,
97
+ rawScore: idiom.score,
98
+ adjustedScore,
99
+ modifiers
100
+ };
101
+ results.push(result);
102
+ if (onToken)
103
+ onToken(result);
104
+ continue;
105
+ }
106
+ // Skip tokens covered by an idiom (not at start position)
107
+ if (idiomCovered.has(i))
108
+ continue;
109
+ // Check negation
110
+ if (lexicon.negation.has(normalized)) {
111
+ negationCountdown = negationWindow;
112
+ const result = {
113
+ token,
114
+ rawScore: 0,
115
+ adjustedScore: 0,
116
+ modifiers: []
117
+ };
118
+ results.push(result);
119
+ if (onToken)
120
+ onToken(result);
121
+ continue;
122
+ }
123
+ // Check booster
124
+ if (normalized in lexicon.boosters) {
125
+ pendingBooster = lexicon.boosters[normalized];
126
+ const result = {
127
+ token,
128
+ rawScore: 0,
129
+ adjustedScore: 0,
130
+ modifiers: []
131
+ };
132
+ results.push(result);
133
+ if (onToken)
134
+ onToken(result);
135
+ continue;
136
+ }
137
+ // Lexicon lookup
138
+ const rawScore = lexicon.lexicon[normalized] ?? 0;
139
+ if (rawScore === 0) {
140
+ const result = {
141
+ token,
142
+ rawScore: 0,
143
+ adjustedScore: 0,
144
+ modifiers: []
145
+ };
146
+ results.push(result);
147
+ if (onToken)
148
+ onToken(result);
149
+ continue;
150
+ }
151
+ let adjustedScore = rawScore;
152
+ const modifiers = [];
153
+ // Apply pending booster
154
+ if (pendingBooster !== 0) {
155
+ adjustedScore *= pendingBooster;
156
+ modifiers.push('boosted');
157
+ pendingBooster = 0;
158
+ }
159
+ // Apply negation
160
+ if (negationCountdown > 0) {
161
+ adjustedScore *= -1;
162
+ modifiers.push('negated');
163
+ negationCountdown--;
164
+ }
165
+ // Apply caps boost
166
+ if (isAllCaps(token)) {
167
+ adjustedScore *= capsBoost;
168
+ modifiers.push('caps');
169
+ }
170
+ const result = {
171
+ token,
172
+ rawScore,
173
+ adjustedScore,
174
+ modifiers
175
+ };
176
+ results.push(result);
177
+ if (onToken)
178
+ onToken(result);
179
+ }
180
+ return results;
181
+ }
182
+ /** Compute compound score: normalize via sum / sqrt(sum^2 + alpha), apply exclamation boost */
183
+ function computeCompound(tokenScores, exclamationBoost, exclamationCount) {
184
+ const alpha = 15;
185
+ const sum = tokenScores.reduce((acc, t) => acc + t.adjustedScore, 0);
186
+ let compound = sum / Math.sqrt(sum * sum + alpha);
187
+ // Apply exclamation boost
188
+ if (exclamationCount > 0) {
189
+ const boost = Math.pow(exclamationBoost, Math.min(exclamationCount, 4));
190
+ compound = compound * boost;
191
+ }
192
+ // Clamp to [-1, 1]
193
+ return Math.max(-1, Math.min(1, compound));
194
+ }
195
+ /** Compute positive/negative/neutral proportions from token scores */
196
+ function computeProportions(tokenScores) {
197
+ if (tokenScores.length === 0) {
198
+ return { positive: 0, negative: 0, neutral: 1 };
199
+ }
200
+ let pos = 0;
201
+ let neg = 0;
202
+ let neu = 0;
203
+ for (const t of tokenScores) {
204
+ if (t.adjustedScore > 0)
205
+ pos++;
206
+ else if (t.adjustedScore < 0)
207
+ neg++;
208
+ else
209
+ neu++;
210
+ }
211
+ const total = tokenScores.length;
212
+ return {
213
+ positive: round(pos / total, 4),
214
+ negative: round(neg / total, 4),
215
+ neutral: round(neu / total, 4)
216
+ };
217
+ }
218
+ function round(value, decimals) {
219
+ const factor = Math.pow(10, decimals);
220
+ return Math.round(value * factor) / factor;
221
+ }
222
+ // ========================================
223
+ // Executor
224
+ // ========================================
225
+ class SentimentExecutor {
226
+ run(ruleSet, wm, options = {}) {
227
+ const startTime = performance.now();
228
+ // Gather all text facts from working memory
229
+ const facts = wm.getAll();
230
+ const texts = extractTexts(facts);
231
+ const fullText = texts.join(' ');
232
+ return this.scoreText(ruleSet, fullText, options, startTime);
233
+ }
234
+ /** Score a single text string directly (no WorkingMemory involved) */
235
+ scoreText(ruleSet, text, options = {}, startTime = performance.now()) {
236
+ switch (ruleSet.strategy) {
237
+ case 'token-level':
238
+ return this.runTokenLevel(ruleSet, text, options, startTime);
239
+ case 'document-level':
240
+ return this.runDocumentLevel(ruleSet, text, options, startTime);
241
+ case 'aspect-based':
242
+ return this.runAspectBased(ruleSet, text, options, startTime);
243
+ default:
244
+ throw new Error(`Unknown sentiment strategy: '${ruleSet.strategy}'`);
245
+ }
246
+ }
247
+ // ========================================
248
+ // Token-Level Strategy
249
+ // ========================================
250
+ runTokenLevel(ruleSet, text, options, startTime) {
251
+ const tokens = tokenize(text);
252
+ const exclamationCount = countTrailingExclamations(text);
253
+ const tokenScores = scoreTokens(tokens, ruleSet.lexicon, ruleSet.config.capsBoost, ruleSet.config.negationWindow, options.onToken);
254
+ const compound = computeCompound(tokenScores, ruleSet.config.exclamationBoost, exclamationCount);
255
+ const proportions = computeProportions(tokenScores);
256
+ const executionTimeMs = round((performance.now() - startTime) * 100, 0) / 100;
257
+ return {
258
+ compound: round(compound, 4),
259
+ label: (0, types_1.resolveSentimentLabel)(compound),
260
+ positive: proportions.positive,
261
+ negative: proportions.negative,
262
+ neutral: proportions.neutral,
263
+ tokens: tokenScores,
264
+ strategy: 'token-level',
265
+ executionTimeMs
266
+ };
267
+ }
268
+ // ========================================
269
+ // Document-Level Strategy
270
+ // ========================================
271
+ runDocumentLevel(ruleSet, text, options, startTime) {
272
+ const sentences = splitSentences(text, ruleSet.sentenceSplitPattern);
273
+ if (sentences.length === 0) {
274
+ const executionTimeMs = round((performance.now() - startTime) * 100, 0) / 100;
275
+ return {
276
+ compound: 0,
277
+ label: 'neutral',
278
+ positive: 0,
279
+ negative: 0,
280
+ neutral: 1,
281
+ sentences: [],
282
+ strategy: 'document-level',
283
+ executionTimeMs
284
+ };
285
+ }
286
+ const sentenceResults = [];
287
+ for (const sentenceText of sentences) {
288
+ const tokens = tokenize(sentenceText);
289
+ const exclamationCount = countTrailingExclamations(sentenceText);
290
+ const tokenScores = scoreTokens(tokens, ruleSet.lexicon, ruleSet.config.capsBoost, ruleSet.config.negationWindow, options.onToken);
291
+ const compound = computeCompound(tokenScores, ruleSet.config.exclamationBoost, exclamationCount);
292
+ sentenceResults.push({
293
+ text: sentenceText,
294
+ compound: round(compound, 4),
295
+ label: (0, types_1.resolveSentimentLabel)(compound),
296
+ tokens: tokenScores
297
+ });
298
+ }
299
+ // Overall compound is average of sentence compounds
300
+ const avgCompound = sentenceResults.reduce((sum, s) => sum + s.compound, 0) / sentenceResults.length;
301
+ // Aggregate proportions across all tokens
302
+ const allTokens = sentenceResults.flatMap(s => s.tokens);
303
+ const proportions = computeProportions(allTokens);
304
+ const executionTimeMs = round((performance.now() - startTime) * 100, 0) / 100;
305
+ return {
306
+ compound: round(avgCompound, 4),
307
+ label: (0, types_1.resolveSentimentLabel)(avgCompound),
308
+ positive: proportions.positive,
309
+ negative: proportions.negative,
310
+ neutral: proportions.neutral,
311
+ sentences: sentenceResults,
312
+ strategy: 'document-level',
313
+ executionTimeMs
314
+ };
315
+ }
316
+ // ========================================
317
+ // Aspect-Based Strategy
318
+ // ========================================
319
+ runAspectBased(ruleSet, text, options, startTime) {
320
+ // Split into sentences using default pattern
321
+ const sentences = splitSentences(text, /[.!?]+/);
322
+ const aspectResults = [];
323
+ for (const aspect of ruleSet.aspects) {
324
+ const matchingSentences = [];
325
+ for (const sentenceText of sentences) {
326
+ // Check if sentence contains the aspect term
327
+ if (!sentenceText.toLowerCase().includes(aspect))
328
+ continue;
329
+ const tokens = tokenize(sentenceText);
330
+ const exclamationCount = countTrailingExclamations(sentenceText);
331
+ const tokenScores = scoreTokens(tokens, ruleSet.lexicon, ruleSet.config.capsBoost, ruleSet.config.negationWindow, options.onToken);
332
+ const compound = computeCompound(tokenScores, ruleSet.config.exclamationBoost, exclamationCount);
333
+ matchingSentences.push({
334
+ text: sentenceText,
335
+ compound: round(compound, 4),
336
+ label: (0, types_1.resolveSentimentLabel)(compound),
337
+ tokens: tokenScores
338
+ });
339
+ }
340
+ const aspectCompound = matchingSentences.length > 0
341
+ ? matchingSentences.reduce((sum, s) => sum + s.compound, 0) / matchingSentences.length
342
+ : 0;
343
+ aspectResults.push({
344
+ aspect,
345
+ compound: round(aspectCompound, 4),
346
+ label: (0, types_1.resolveSentimentLabel)(aspectCompound),
347
+ sentences: matchingSentences
348
+ });
349
+ }
350
+ // Overall compound is average of aspect compounds (only aspects with data)
351
+ const aspectsWithData = aspectResults.filter(a => a.sentences.length > 0);
352
+ const avgCompound = aspectsWithData.length > 0
353
+ ? aspectsWithData.reduce((sum, a) => sum + a.compound, 0) / aspectsWithData.length
354
+ : 0;
355
+ // Aggregate proportions from all aspect tokens
356
+ const allTokens = aspectResults.flatMap(a => a.sentences.flatMap(s => s.tokens));
357
+ const proportions = computeProportions(allTokens);
358
+ const executionTimeMs = round((performance.now() - startTime) * 100, 0) / 100;
359
+ return {
360
+ compound: round(avgCompound, 4),
361
+ label: (0, types_1.resolveSentimentLabel)(avgCompound),
362
+ positive: proportions.positive,
363
+ negative: proportions.negative,
364
+ neutral: proportions.neutral,
365
+ aspects: aspectResults,
366
+ strategy: 'aspect-based',
367
+ executionTimeMs
368
+ };
369
+ }
370
+ }
371
+ exports.SentimentExecutor = SentimentExecutor;
372
+ // ========================================
373
+ // Module-Level Helpers
374
+ // ========================================
375
+ /** Extract text content from facts - looks for text/content/body/message string fields */
376
+ function extractTexts(facts) {
377
+ const texts = [];
378
+ for (const fact of facts) {
379
+ const data = fact.data;
380
+ if (typeof data === 'string') {
381
+ texts.push(data);
382
+ }
383
+ else if (data && typeof data === 'object') {
384
+ // Try common text field names
385
+ for (const key of ['text', 'content', 'body', 'message', 'review', 'comment', 'feedback']) {
386
+ if (typeof data[key] === 'string') {
387
+ texts.push(data[key]);
388
+ break;
389
+ }
390
+ }
391
+ }
392
+ }
393
+ return texts;
394
+ }
395
+ /** Singleton instance */
396
+ exports.sentimentStrategy = new SentimentExecutor();
397
+ //# sourceMappingURL=strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/engines/sentiment/strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Sentiment Engine Types
3
+ *
4
+ * Text sentiment analysis engine that scores text using dictionary-lookup
5
+ * and heuristic rules. Supports token-level, document-level, and aspect-based
6
+ * analysis strategies with injectable lexicon configuration.
7
+ */
8
+ /** Sentiment analysis strategy */
9
+ export type SentimentStrategy = 'token-level' | 'document-level' | 'aspect-based';
10
+ /** Resolved sentiment label */
11
+ export type SentimentLabel = 'positive' | 'neutral' | 'negative' | 'mixed';
12
+ /** Injectable lexicon configuration (user-facing, optional fields) */
13
+ export type SentimentLexicon = {
14
+ lexicon: Record<string, number>;
15
+ boosters?: Record<string, number>;
16
+ negation?: string[];
17
+ idioms?: Record<string, number>;
18
+ };
19
+ /** Compiled lexicon with all fields required, keys lowercased */
20
+ export type CompiledSentimentLexicon = {
21
+ lexicon: Record<string, number>;
22
+ boosters: Record<string, number>;
23
+ negation: Set<string>;
24
+ idioms: Record<string, number>;
25
+ _idiomMaxLength: number;
26
+ };
27
+ export declare const SENTIMENT_DEFAULTS: {
28
+ readonly capsBoost: 1.2;
29
+ readonly exclamationBoost: 1.1;
30
+ readonly negationWindow: 3;
31
+ };
32
+ export type SentimentConfig = {
33
+ capsBoost?: number;
34
+ exclamationBoost?: number;
35
+ negationWindow?: number;
36
+ };
37
+ type SentimentRuleSetBase = {
38
+ id: string;
39
+ name?: string;
40
+ mode: 'sentiment';
41
+ lexiconConfig: SentimentLexicon;
42
+ config?: SentimentConfig;
43
+ };
44
+ /** Token-level: score individual tokens in the full text */
45
+ export type TokenLevelSentimentRuleSet = SentimentRuleSetBase & {
46
+ strategy: 'token-level';
47
+ };
48
+ /** Document-level: split into sentences, score each, average */
49
+ export type DocumentLevelSentimentRuleSet = SentimentRuleSetBase & {
50
+ strategy: 'document-level';
51
+ sentenceSplitPattern?: string;
52
+ };
53
+ /** Aspect-based: match sentences to aspect terms, score per aspect */
54
+ export type AspectBasedSentimentRuleSet = SentimentRuleSetBase & {
55
+ strategy: 'aspect-based';
56
+ aspects: string[];
57
+ };
58
+ export type SentimentRuleSet = TokenLevelSentimentRuleSet | DocumentLevelSentimentRuleSet | AspectBasedSentimentRuleSet;
59
+ type CompiledSentimentRuleSetBase = {
60
+ id: string;
61
+ name?: string;
62
+ mode: 'sentiment';
63
+ lexicon: CompiledSentimentLexicon;
64
+ config: {
65
+ capsBoost: number;
66
+ exclamationBoost: number;
67
+ negationWindow: number;
68
+ };
69
+ };
70
+ export type CompiledTokenLevelSentimentRuleSet = CompiledSentimentRuleSetBase & {
71
+ strategy: 'token-level';
72
+ };
73
+ export type CompiledDocumentLevelSentimentRuleSet = CompiledSentimentRuleSetBase & {
74
+ strategy: 'document-level';
75
+ sentenceSplitPattern: RegExp;
76
+ };
77
+ export type CompiledAspectBasedSentimentRuleSet = CompiledSentimentRuleSetBase & {
78
+ strategy: 'aspect-based';
79
+ aspects: string[];
80
+ };
81
+ export type CompiledSentimentRuleSet = CompiledTokenLevelSentimentRuleSet | CompiledDocumentLevelSentimentRuleSet | CompiledAspectBasedSentimentRuleSet;
82
+ /** Modifier applied to a token score */
83
+ export type TokenModifier = 'negated' | 'boosted' | 'caps' | 'idiom';
84
+ /** Per-token scoring detail */
85
+ export type TokenScore = {
86
+ token: string;
87
+ rawScore: number;
88
+ adjustedScore: number;
89
+ modifiers: TokenModifier[];
90
+ };
91
+ /** Per-sentence result (document-level and aspect-based) */
92
+ export type SentenceResult = {
93
+ text: string;
94
+ compound: number;
95
+ label: SentimentLabel;
96
+ tokens: TokenScore[];
97
+ };
98
+ /** Per-aspect result (aspect-based only) */
99
+ export type AspectResult = {
100
+ aspect: string;
101
+ compound: number;
102
+ label: SentimentLabel;
103
+ sentences: SentenceResult[];
104
+ };
105
+ /** Full sentiment analysis result */
106
+ export type SentimentResult = {
107
+ compound: number;
108
+ label: SentimentLabel;
109
+ positive: number;
110
+ negative: number;
111
+ neutral: number;
112
+ tokens?: TokenScore[];
113
+ sentences?: SentenceResult[];
114
+ aspects?: AspectResult[];
115
+ strategy: SentimentStrategy;
116
+ executionTimeMs: number;
117
+ };
118
+ /** Runtime options */
119
+ export type SentimentOptions = {
120
+ onToken?: (token: TokenScore) => void;
121
+ };
122
+ /** Result from ingest() -- includes both the individual text score and the running aggregate */
123
+ export type IngestResult = SentimentResult & {
124
+ /** Compound score for just the ingested text (not the aggregate) */
125
+ itemCompound: number;
126
+ /** Label for just the ingested text */
127
+ itemLabel: SentimentLabel;
128
+ /** Total number of texts ingested so far */
129
+ totalIngested: number;
130
+ };
131
+ /** Resolve a compound score (-1 to 1) to a sentiment label */
132
+ export declare function resolveSentimentLabel(compound: number): SentimentLabel;
133
+ export {};
134
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engines/sentiment/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * Sentiment Engine Types
4
+ *
5
+ * Text sentiment analysis engine that scores text using dictionary-lookup
6
+ * and heuristic rules. Supports token-level, document-level, and aspect-based
7
+ * analysis strategies with injectable lexicon configuration.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.SENTIMENT_DEFAULTS = void 0;
11
+ exports.resolveSentimentLabel = resolveSentimentLabel;
12
+ // ========================================
13
+ // Config Defaults
14
+ // ========================================
15
+ exports.SENTIMENT_DEFAULTS = {
16
+ capsBoost: 1.2,
17
+ exclamationBoost: 1.1,
18
+ negationWindow: 3
19
+ };
20
+ // ========================================
21
+ // Resolver Functions
22
+ // ========================================
23
+ /** Resolve a compound score (-1 to 1) to a sentiment label */
24
+ function resolveSentimentLabel(compound) {
25
+ if (compound > 0.05)
26
+ return 'positive';
27
+ if (compound < -0.05)
28
+ return 'negative';
29
+ return 'neutral';
30
+ }
31
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engines/sentiment/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA2LH,sDAIC;AA9JD,2CAA2C;AAC3C,kBAAkB;AAClB,2CAA2C;AAE9B,QAAA,kBAAkB,GAAG;IAChC,SAAS,EAAE,GAAG;IACd,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,CAAC;CACT,CAAC;AA6IX,2CAA2C;AAC3C,qBAAqB;AACrB,2CAA2C;AAE3C,8DAA8D;AAC9D,SAAgB,qBAAqB,CAAC,QAAgB;IACpD,IAAI,QAAQ,GAAG,IAAI;QAAE,OAAO,UAAU,CAAC;IACvC,IAAI,QAAQ,GAAG,CAAC,IAAI;QAAE,OAAO,UAAU,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -25,6 +25,7 @@ export { ConstraintEngine } from './engines/constraint';
25
25
  export { UtilityEngine } from './engines/utility';
26
26
  export { PricingEngine } from './engines/pricing';
27
27
  export { EnsembleEngine } from './engines/ensemble';
28
+ export { SentimentEngine } from './engines/sentiment';
28
29
  export * from './core';
29
30
  export { ForwardChainingStrategy, compileForwardRuleSet, compileForwardRule, forwardStrategy } from './engines/forward';
30
31
  export type { ForwardRule, ForwardRuleSet, ForwardConfig, CompiledForwardRuleSet, CompiledForwardRule, ForwardOptions, ForwardResult, ActionRegistry, ActionHandler } from './engines/forward';
@@ -59,6 +60,8 @@ export { RankingEngine, RankingExecutor, compileRankingRuleSet, rankingStrategy,
59
60
  export type { RankingStrategy, RankingDirection, PercentileLabel, Movement, KFactorPreset, RankingCriterion, CompiledRankingCriterion, ScoreRankingConfig, EloConfig, HeadToHeadConfig, ScoreRankingRuleSet, EloRankingRuleSet, HeadToHeadRankingRuleSet, RankingRuleSet, CompiledScoreRankingRuleSet, CompiledEloRankingRuleSet, CompiledHeadToHeadRankingRuleSet, CompiledRankingRuleSet, PreviousRanking, RankingOptions, RankedEntity, RankingResult } from './engines/ranking';
60
61
  export { PredictionEngine, PredictionExecutor, compilePredictionRuleSet, predictionStrategy, SMOOTHING_PRESET_VALUES, HORIZON_PRESET_VALUES, isSmoothingPreset, isHorizonPreset, resolveConfidenceBracket, resolveTrendDirection } from './engines/prediction';
61
62
  export type { PredictionStrategy, TrendDirection, SmoothingPreset, HorizonPreset, ConfidenceBracket, FieldMapping, ThresholdDefinition, LinearRegressionConfig, ExponentialSmoothingConfig, WeightedMovingAverageConfig, LinearRegressionRuleSet, ExponentialSmoothingRuleSet, WeightedMovingAverageRuleSet, PredictionRuleSet, CompiledLinearRegressionRuleSet, CompiledExponentialSmoothingRuleSet, CompiledWeightedMovingAverageRuleSet, CompiledPredictionRuleSet, ThresholdCrossing, Forecast, EntityPrediction, PredictionResult, PredictionOptions } from './engines/prediction';
63
+ export { SentimentExecutor, compileSentimentRuleSet, sentimentStrategy, SENTIMENT_DEFAULTS, resolveSentimentLabel } from './engines/sentiment';
64
+ export type { SentimentStrategy, SentimentLabel, SentimentLexicon, CompiledSentimentLexicon, SentimentConfig, TokenLevelSentimentRuleSet, DocumentLevelSentimentRuleSet, AspectBasedSentimentRuleSet, SentimentRuleSet, CompiledTokenLevelSentimentRuleSet, CompiledDocumentLevelSentimentRuleSet, CompiledAspectBasedSentimentRuleSet, CompiledSentimentRuleSet, TokenModifier, TokenScore, SentenceResult, AspectResult, SentimentResult, SentimentOptions, IngestResult } from './engines/sentiment';
62
65
  export { soundex, nysiis, caverphone2, cosineSimilarity } from './functions';
63
66
  export { BOEError, CompilationError, RuntimeError } from './core/errors';
64
67
  export type { ErrorContext } from './core/errors';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMpD,cAAc,QAAQ,CAAC;AAOvB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,SAAS,EACT,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,0BAA0B,EAC1B,YAAY,EACZ,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,UAAU,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,8BAA8B,EAC9B,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,WAAW,EACX,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB,WAAW,EAEX,UAAU,EACV,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAEV,YAAY,EACZ,YAAY,EAEZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,WAAW,EAEX,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EAEd,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAC3E,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EAAE,iBAAiB,EAAE,sBAAsB,EAC/D,kBAAkB,EAAE,mBAAmB,EACxC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,wBAAwB,EACxB,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,2BAA2B,EAC3B,yBAAyB,EACzB,gCAAgC,EAChC,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,4BAA4B,EAC5B,iBAAiB,EACjB,+BAA+B,EAC/B,mCAAmC,EACnC,oCAAoC,EACpC,yBAAyB,EACzB,iBAAiB,EACjB,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,UAAU,EACV,aAAa,EACb,WAAW,EACX,SAAS,EACV,MAAM,yBAAyB,CAAC;AAMjC,cAAc,UAAU,CAAC;AAMzB,cAAc,aAAa,CAAC;AAM5B,cAAc,WAAW,CAAC;AAM1B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}