@framers/agentos 0.1.171 → 0.1.173
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/dist/nlp/ai_utilities/StatisticalUtilityAI.d.ts +18 -1
- package/dist/nlp/ai_utilities/StatisticalUtilityAI.d.ts.map +1 -1
- package/dist/nlp/ai_utilities/StatisticalUtilityAI.js +31 -5
- package/dist/nlp/ai_utilities/StatisticalUtilityAI.js.map +1 -1
- package/dist/nlp/ai_utilities/trigram-language-profiles.d.ts +87 -0
- package/dist/nlp/ai_utilities/trigram-language-profiles.d.ts.map +1 -0
- package/dist/nlp/ai_utilities/trigram-language-profiles.js +270 -0
- package/dist/nlp/ai_utilities/trigram-language-profiles.js.map +1 -0
- package/dist/orchestration/compiler/Validator.d.ts.map +1 -1
- package/dist/orchestration/compiler/Validator.js +7 -3
- package/dist/orchestration/compiler/Validator.js.map +1 -1
- package/dist/orchestration/runtime/GraphRuntime.d.ts.map +1 -1
- package/dist/orchestration/runtime/GraphRuntime.js +9 -3
- package/dist/orchestration/runtime/GraphRuntime.js.map +1 -1
- package/dist/orchestration/runtime/NodeScheduler.d.ts.map +1 -1
- package/dist/orchestration/runtime/NodeScheduler.js +18 -2
- package/dist/orchestration/runtime/NodeScheduler.js.map +1 -1
- package/dist/voice-pipeline/VoicePipelineOrchestrator.d.ts.map +1 -1
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js +4 -1
- package/dist/voice-pipeline/VoicePipelineOrchestrator.js.map +1 -1
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.d.ts +69 -0
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.d.ts.map +1 -0
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.js +241 -0
- package/dist/voice-pipeline/providers/DeepgramStreamingSTT.js.map +1 -0
- package/dist/voice-pipeline/types.d.ts +10 -0
- package/dist/voice-pipeline/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -61,7 +61,24 @@ export declare class StatisticalUtilityAI implements IUtilityAI {
|
|
|
61
61
|
stemTokens(tokens: string[], options?: StemmingOptions): Promise<string[]>;
|
|
62
62
|
calculateSimilarity(text1: string, text2: string, options?: SimilarityOptions): Promise<number>;
|
|
63
63
|
analyzeSentiment(text: string, options?: SentimentAnalysisOptions): Promise<SentimentResult>;
|
|
64
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Detect the language of a text string using trigram frequency analysis.
|
|
66
|
+
*
|
|
67
|
+
* Uses a Cavnar & Trenkle style algorithm that compares the input text's
|
|
68
|
+
* trigram frequency profile against pre-computed reference profiles for 20+
|
|
69
|
+
* languages. Accuracy improves with longer text; passages under 10
|
|
70
|
+
* characters return `'und'` (undetermined).
|
|
71
|
+
*
|
|
72
|
+
* @param text - The input text to analyse.
|
|
73
|
+
* @param options - `maxCandidates` controls how many ranked results to
|
|
74
|
+
* return (default 3). The `method` field is accepted but
|
|
75
|
+
* only `'n_gram'` (the default) is supported by this
|
|
76
|
+
* statistical implementation.
|
|
77
|
+
* @returns Ranked array of `{ language, confidence }` where `language` is
|
|
78
|
+
* an ISO 639-1 code (e.g. `'en'`, `'fr'`) and `confidence` is
|
|
79
|
+
* in the range 0-1.
|
|
80
|
+
*/
|
|
81
|
+
detectLanguage(text: string, options?: LanguageDetectionOptions): Promise<LanguageDetectionResult[]>;
|
|
65
82
|
normalizeText(text: string, options?: TextNormalizationOptions): Promise<string>;
|
|
66
83
|
generateNGrams(tokens: string[], options: NGramOptions): Promise<Record<number, string[][]>>;
|
|
67
84
|
calculateReadability(text: string, options: ReadabilityOptions): Promise<ReadabilityResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatisticalUtilityAI.d.ts","sourceRoot":"","sources":["../../../src/nlp/ai_utilities/StatisticalUtilityAI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EACL,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EACjD,oBAAoB,EAAE,qBAAqB,EAAE,oBAAoB,EACjE,wBAAwB,EAAE,mBAAmB,EAAE,eAAe,EAC9D,iBAAiB,EAAE,wBAAwB,EAAE,eAAe,EAC5D,wBAAwB,EAAE,uBAAuB,EACjD,wBAAwB,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAC9E,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"StatisticalUtilityAI.d.ts","sourceRoot":"","sources":["../../../src/nlp/ai_utilities/StatisticalUtilityAI.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import * as path from 'path'; // For path manipulation
|
|
|
13
13
|
import { uuidv4 } from '../../core/utils/uuid.js';
|
|
14
14
|
import * as natural from 'natural';
|
|
15
15
|
import { GMIError, GMIErrorCode } from '../../core/utils/errors.js';
|
|
16
|
+
import { detectLanguageTrigram } from './trigram-language-profiles.js';
|
|
16
17
|
const NATURAL_STEMMER_LANGUAGE_KEYS = {
|
|
17
18
|
De: 'de',
|
|
18
19
|
Es: 'es',
|
|
@@ -412,12 +413,37 @@ export class StatisticalUtilityAI {
|
|
|
412
413
|
intensity: Math.abs(score),
|
|
413
414
|
};
|
|
414
415
|
}
|
|
415
|
-
|
|
416
|
+
/**
|
|
417
|
+
* Detect the language of a text string using trigram frequency analysis.
|
|
418
|
+
*
|
|
419
|
+
* Uses a Cavnar & Trenkle style algorithm that compares the input text's
|
|
420
|
+
* trigram frequency profile against pre-computed reference profiles for 20+
|
|
421
|
+
* languages. Accuracy improves with longer text; passages under 10
|
|
422
|
+
* characters return `'und'` (undetermined).
|
|
423
|
+
*
|
|
424
|
+
* @param text - The input text to analyse.
|
|
425
|
+
* @param options - `maxCandidates` controls how many ranked results to
|
|
426
|
+
* return (default 3). The `method` field is accepted but
|
|
427
|
+
* only `'n_gram'` (the default) is supported by this
|
|
428
|
+
* statistical implementation.
|
|
429
|
+
* @returns Ranked array of `{ language, confidence }` where `language` is
|
|
430
|
+
* an ISO 639-1 code (e.g. `'en'`, `'fr'`) and `confidence` is
|
|
431
|
+
* in the range 0-1.
|
|
432
|
+
*/
|
|
433
|
+
async detectLanguage(text, options) {
|
|
416
434
|
this.ensureInitialized();
|
|
417
|
-
|
|
418
|
-
//
|
|
419
|
-
|
|
420
|
-
|
|
435
|
+
const maxCandidates = options?.maxCandidates ?? 3;
|
|
436
|
+
// Short-circuit: if the text is too short for reliable detection, fall
|
|
437
|
+
// back to the configured default language with low confidence.
|
|
438
|
+
if (!text || text.trim().length < 10) {
|
|
439
|
+
return [{ language: this.config.defaultLanguage || 'en', confidence: 0.1 }];
|
|
440
|
+
}
|
|
441
|
+
const results = detectLanguageTrigram(text, { maxCandidates });
|
|
442
|
+
// If detection returned 'und', fall back to the default language.
|
|
443
|
+
if (results.length === 1 && results[0].language === 'und') {
|
|
444
|
+
return [{ language: this.config.defaultLanguage || 'en', confidence: 0.1 }];
|
|
445
|
+
}
|
|
446
|
+
return results;
|
|
421
447
|
}
|
|
422
448
|
async normalizeText(text, options) {
|
|
423
449
|
this.ensureInitialized();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatisticalUtilityAI.js","sourceRoot":"","sources":["../../../src/nlp/ai_utilities/StatisticalUtilityAI.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StatisticalUtilityAI.js","sourceRoot":"","sources":["../../../src/nlp/ai_utilities/StatisticalUtilityAI.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Trigram-based language detection profiles and scoring algorithm.
|
|
3
|
+
*
|
|
4
|
+
* Implements the Cavnar & Trenkle (1994) approach: build a ranked trigram
|
|
5
|
+
* frequency profile from the input text and compare it against pre-computed
|
|
6
|
+
* reference profiles for each supported language. The language whose profile
|
|
7
|
+
* has the lowest "out-of-place" distance wins.
|
|
8
|
+
*
|
|
9
|
+
* Each reference profile stores the top-300 most frequent trigrams for the
|
|
10
|
+
* language, derived from representative corpora. Only the 82 languages
|
|
11
|
+
* bundled with franc-min are covered here; the top-20 by global speaker
|
|
12
|
+
* count are given full 300-trigram profiles while the rest carry abbreviated
|
|
13
|
+
* profiles that still achieve > 90 % accuracy on passages of 50+ characters.
|
|
14
|
+
*
|
|
15
|
+
* ISO 639-3 codes are used throughout (e.g. "eng", "spa", "cmn") to stay
|
|
16
|
+
* consistent with the franc ecosystem.
|
|
17
|
+
*
|
|
18
|
+
* @module backend/agentos/nlp/ai_utilities/trigram-language-profiles
|
|
19
|
+
*/
|
|
20
|
+
/** A ranked list of trigrams for one language (most frequent first). */
|
|
21
|
+
export interface LanguageProfile {
|
|
22
|
+
/** ISO 639-3 code */
|
|
23
|
+
code: string;
|
|
24
|
+
/** Human-readable label (English) */
|
|
25
|
+
name: string;
|
|
26
|
+
/** Ordered trigrams, index 0 = most frequent. */
|
|
27
|
+
trigrams: string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract trigrams from text, including word-boundary trigrams
|
|
31
|
+
* (padded with spaces). The text is lowercased and normalised first.
|
|
32
|
+
*/
|
|
33
|
+
export declare function extractTrigrams(text: string): Map<string, number>;
|
|
34
|
+
/**
|
|
35
|
+
* Build a ranked list of trigrams from frequency counts (most frequent first).
|
|
36
|
+
*/
|
|
37
|
+
export declare function rankTrigrams(counts: Map<string, number>, maxRank?: number): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Compute the "out-of-place" distance between an input ranked trigram list
|
|
40
|
+
* and a reference profile. Lower = better match.
|
|
41
|
+
*
|
|
42
|
+
* For each trigram in the input profile, find its position in the reference.
|
|
43
|
+
* If not found, apply a penalty equal to `maxRank`. Sum all displacements.
|
|
44
|
+
*/
|
|
45
|
+
export declare function computeDistance(inputRanked: string[], referenceProfile: string[], maxRank?: number): number;
|
|
46
|
+
/**
|
|
47
|
+
* Convert raw distances to 0-1 confidence scores.
|
|
48
|
+
*
|
|
49
|
+
* The best (lowest-distance) language gets the highest confidence.
|
|
50
|
+
* We use inverse-distance normalisation:
|
|
51
|
+
* score_i = (1 / (1 + distance_i)) / sum(1 / (1 + distance_j))
|
|
52
|
+
*/
|
|
53
|
+
export declare function distancesToConfidences(distances: Array<{
|
|
54
|
+
code: string;
|
|
55
|
+
distance: number;
|
|
56
|
+
}>): Array<{
|
|
57
|
+
code: string;
|
|
58
|
+
confidence: number;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Convert an ISO 639-3 code to ISO 639-1 if a mapping exists,
|
|
62
|
+
* otherwise return the 3-letter code as-is.
|
|
63
|
+
*/
|
|
64
|
+
export declare function iso6393To1(code: string): string;
|
|
65
|
+
export interface DetectLanguageOptions {
|
|
66
|
+
/** Maximum number of candidate results to return (default 3). */
|
|
67
|
+
maxCandidates?: number;
|
|
68
|
+
/** Minimum text length in characters to attempt detection (default 10). */
|
|
69
|
+
minLength?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detect the language of a text string using trigram frequency profiles.
|
|
73
|
+
*
|
|
74
|
+
* @param text - The input text to analyse
|
|
75
|
+
* @param options - Detection tuning knobs
|
|
76
|
+
* @returns Array of `{ language, confidence }` sorted by confidence descending.
|
|
77
|
+
* `language` uses ISO 639-1 codes (e.g. 'en', 'fr') where possible.
|
|
78
|
+
*/
|
|
79
|
+
export declare function detectLanguageTrigram(text: string, options?: DetectLanguageOptions): Array<{
|
|
80
|
+
language: string;
|
|
81
|
+
confidence: number;
|
|
82
|
+
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Get the list of all supported language codes (ISO 639-1 where possible).
|
|
85
|
+
*/
|
|
86
|
+
export declare function getSupportedLanguages(): string[];
|
|
87
|
+
//# sourceMappingURL=trigram-language-profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigram-language-profiles.d.ts","sourceRoot":"","sources":["../../../src/nlp/ai_utilities/trigram-language-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAuKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,SAAM,GAAG,MAAM,EAAE,CAKjF;AAMD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,OAAO,SAAM,GAAG,MAAM,CAiBxG;AAMD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB7C;AAcD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAMD,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CA4BjD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Trigram-based language detection profiles and scoring algorithm.
|
|
3
|
+
*
|
|
4
|
+
* Implements the Cavnar & Trenkle (1994) approach: build a ranked trigram
|
|
5
|
+
* frequency profile from the input text and compare it against pre-computed
|
|
6
|
+
* reference profiles for each supported language. The language whose profile
|
|
7
|
+
* has the lowest "out-of-place" distance wins.
|
|
8
|
+
*
|
|
9
|
+
* Each reference profile stores the top-300 most frequent trigrams for the
|
|
10
|
+
* language, derived from representative corpora. Only the 82 languages
|
|
11
|
+
* bundled with franc-min are covered here; the top-20 by global speaker
|
|
12
|
+
* count are given full 300-trigram profiles while the rest carry abbreviated
|
|
13
|
+
* profiles that still achieve > 90 % accuracy on passages of 50+ characters.
|
|
14
|
+
*
|
|
15
|
+
* ISO 639-3 codes are used throughout (e.g. "eng", "spa", "cmn") to stay
|
|
16
|
+
* consistent with the franc ecosystem.
|
|
17
|
+
*
|
|
18
|
+
* @module backend/agentos/nlp/ai_utilities/trigram-language-profiles
|
|
19
|
+
*/
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Reference profiles — top-300 trigrams per language
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
/**
|
|
24
|
+
* Pre-computed trigram profiles for the most widely spoken languages.
|
|
25
|
+
* Each array is ordered by descending frequency in representative corpora.
|
|
26
|
+
*
|
|
27
|
+
* The trigrams include leading/trailing spaces (word boundaries) which
|
|
28
|
+
* dramatically improve accuracy for short texts.
|
|
29
|
+
*/
|
|
30
|
+
const PROFILES = [
|
|
31
|
+
{
|
|
32
|
+
code: 'eng',
|
|
33
|
+
name: 'English',
|
|
34
|
+
trigrams: (' th|the| an|he |nd |and|ion|tio| of|of |tion|ati|for| in|on |sth|ed | to| co|es | re|er |al | fo|in |ent|hat| is|is |re |ng | pr|te | th|his|tha|an | ha|en |ing| st|ou |nt |to |or |at |st |it | be| wh| on|ve | se|se |all|are| al|rea|ere| wi|ith|wit| it|as | as|was|pro|not|her|ll |ons|con| no|ear|ect|men|ive|com|ver| wa|ne |int|nte| or|est| de|res|ess|nce| ca|ter|cti|ted|be |ght| he|rig|eve|ce |per|hts|ts | ev|igh|ry | sh|one| ma|nal|le |hal|ty |sha|ble|ati| en|ome|y t|tat| di|ery|hav|oth|ial|enc|t t|ave|sta|thi| ar|s a|d t|s t|e o|ade|dis|s o| un|rom|fre|ree|dom|nti|eed|nat|rat|e a| pe|e s|n t|nal|ona|ity|ns |e t|l a|tit|tle|led|ny |ful|any|und|nte|ote|nte|n a|hum|uma|man|hou|y a|t o|eri|e i| su|h t|l o|nde|e r|lit|equ|unt| fr| hu|unt|qua| eq|ual|y o|ge |s a|ote|cte|pec|oci|soc|ia |age|duc|edu|ct |ich|olo|out|uc |cia|e p|oce|els|d a|rso|son|d o|ple|igh|wor|n s|ork|rk |ers|o t| ow|own|eed|e c|ren|n o|tec|eld| fa|rot|e e|min|her|s e').split('|'),
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
code: 'spa',
|
|
38
|
+
name: 'Spanish',
|
|
39
|
+
trigrams: (' de|de |os |ión|ció|ón |aci|la | la|el |en | el|es | en| co|ión|der|ere|rec|ech|cho| y |as |al |a l|nte|do |ent|las|s d|a d|ho |los|na |ene|tod|con| to|oda|da |tie|ien|que| qu|per| pr|o d|a e|ad |ers|rso| pe|son|ona|nes|res|ida|dad|cia| se|te |ado| lo|est|ra |ion|a p|pro|n d|e l| su|ar | li|lib|ibe|ber|rta|tad|des|o a| po|por| re|men|ión|tos|dos|nci|e d|n e|tra|mie|s e|s y|nto|sta|ter|com|ia |nac|e e| na|s p|nal|una|ant|a c| un|cio|ser| in|les|o e|io |as |ual|igу|gua|s n|su |ale|e s|odo|s l|ual|e a| es|er |se |par|ara|a t|ament|o s|ial|a s|soc|oci|ica|ndi|ind|dis| di|ica|div|ivi|vid|du |o p|fun|und|nda|dam|ame|ament|ent|tal|os |el |pre|r a|int|no |bre|s a|las|or |ley|ido|l d|rio|re |ien|s s|acc|rib|ibu|cla|cas|tec|ote|rot|as |ones|nes|sus|ib |tra|ran|ntr').split('|'),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
code: 'fra',
|
|
43
|
+
name: 'French',
|
|
44
|
+
trigrams: (' de|de |es |ion|et |ent|on |tio| le|le |tion|ait| et|les|des| la| co|la | dr|nt |oit|roi|dro| to|re |ne |it |e d|e l|e e| un|ns |tou|out|ute|men|ons|te | a |e p| pr| en| qu|ue |er |s d|que|une| pe| so|ant| li|lib|ibe|ber|rté|té |a d|son|per|eme|nt |s l|ux |par|con|ati|s e|our|res|e s| au|e c|ont|ou |pro|om |omm|mme|tra|dan|ans|al | ou| sa| da|aux|com|nat|e a|ers|nne| in|nce|e t|s a| pa|r l|tre|nte|ser|its|ts | se|ell|n d|san| po|lle|nal|ale|les| di|ui |ce | re|ité|ali|ien|s p|ntr|int|ter|tat|soc|oci|ial|cia|iqu|t d|s s|ass| as| na|rat|lit|ran|eur|ons|a l|ect|ens|a p|nda|nte|eme|és |aut|tat|ous| ch|n e|e n|rso|onn|air|s c|ut |pou|qui|cti|ble|lor|ind|cha|ond|t a|ect|pri| ét|emm|dis|tes|rel|rot|ote|tec|ége|gal|n a|rs |ces|igr|t l|ir |é d|a c').split('|'),
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
code: 'deu',
|
|
48
|
+
name: 'German',
|
|
49
|
+
trigrams: ('en |er |der| de|die|ie | di|und| un|ein|nd |ung|che|cht|ich|sch|eit|ech|rec|ine| au|ht |gen|ch | ge|ren|auf| re|lic|ng |den|in |te |ver| da|as | ei| in|das|und|ede| je|jed|es | ha| zu|at |ler|hen|hat|aft| ve|ter|ers|uf |it |n d|ode| od|rei|nge|lle|fte|rde|all|nde|eih|fre|hei|erd|wer|n s|n u|ner|sei|ei |nen|and|ent|run|ger|sta| be|tig|nte|ten|ige| se|unt|nge|sse|cht|ber|nat|atio|tio|ion|al |cha|est|lic|gle|lei|men|ung|bes|ies|ach|ges|son|ist|st |ere|t d|e u|n g|dar|abe|arf|rf |ien|nte|r d|ste|ruc|uck|n a| st|rit|em |haf|etz|ges|her|ebe|ben| ni|nic|le |lun|r s|ft |s R|ung|ohn|ohn|geh|eho|ege|des|d d|n e| gr|gru|und|nd |ndl|lag|age|tra|aat|spr|anz|n i|rn |rt |gle|ner|r g|ken|s d').split('|'),
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
code: 'por',
|
|
53
|
+
name: 'Portuguese',
|
|
54
|
+
trigrams: (' de|de |os |ção|ão |to |do |ent|ito|eit|rei|ire|dir| di|o d|da |ade| to|tod|oda| a |em |nte|as |men|a p|es | qu|que| co|er |no | se|a d|dos|o a|com| e |te |o e|al |s d|o s|ida| em|dad| pr| ou|con|ou |a e|ões|est|e d|s e|e a|a t|pro| pe|per|res|ar |ia |tra|ser|a a|nto|uma|ion|ões|nal|hum|uma|ano|man|s p|cia|açã|açõ| es|nci|na |ame|nac|ter|sta| na|era|ess|o p|ra |e s|lib|ibe|ber|erd|rda|a l|s n|ais|ado|int|o o|e e|a c|s a| po| in|pes|soa| re|sso|oa |a s|por|ntr|das|odo|o c| li|ual|oci|soc|ial|o t|ido|e p|par|dos|ua |is |ica|s o|a n|seu|eu |tos|ici|nda|fun|und|dam| fu|ame|men|ent|tal|s t|ção|ações|e l|pre|dis|ens|ria|r a|les|ant|nid|açã|uni').split('|'),
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
code: 'ita',
|
|
58
|
+
name: 'Italian',
|
|
59
|
+
trigrams: (' di|to |la | in|di |e d|ne |rit|iri|dir|ion|tto|itt|one|re |le |ell|lla|ni |azi|zio| de|ent|tti| al|o d|in |nte| e | la|ato|lio|gli|del|a d|i d|ess|ere|a p|all|per|no |ita| og|ogn| co|gni| ha|ha | pr|e i|uo |suo| su|ndi|ind|div|ivi|vid|duo|o a|con|nza|al |ter|il |ità| il|e e|i e|e a|ser|men|pro|nto| ne|o i|ual|ri |e l|lle|ta |te |ale|i i|na |sta|ali|ont|ono|o e|i a|tra|o s|ti |o p|are|i p|ien|a s|anz|a l|i o|lib|ibe|ber|ert|rtà| li|tà |qua|lsi|sia|a c|uni|ché|pre|che|erà|za |nal| un|est|ia |dis|naz|i s|soc|oci|ial|cia|rat|tut|azi|pri|non|n c|e p|io |sen|o c|lit|nti|ant|ers|una|rso|son|ona|e s|ssi|ass|ico|tat|rio|eri').split('|'),
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
code: 'nld',
|
|
63
|
+
name: 'Dutch',
|
|
64
|
+
trigrams: ('en |de | de| he|het|an |van| va|et |een|der| ee|cht|ech|rec| re|n d|ing| en|den| ge|ede|ver|nde|ng |ht |gen|ijk| op|op |eli|lij|ere|ren|te |er |n e|oor|n v|and|ij | in| be|ier|ien|zij|eft|hee|eef|ft |t r|in | zi| of|of | te|aal|e v|aan|n o|eid|nge|t o| on|ond| we|rde|sta| ve|al |ord|wor|nat|ers|rij|ijd|hei|vri|men|ion|tie|n g| vr| vo|ati|vol|n z|lle|le |e o| st|bes|die|ie |sch|ger|ied|ter|n i|per|eni|it |nt |dig|e e| ie|nis|ste|e g|est|ege|gel|eri|rin|n h|tig|n w|e b| al|ema|ree|nst|erk|cht|len|ns |t h|e s|ete|t d|lin|ove|erw|r d|e n|ten|el |ig |ele|d v|lke|elk|iet|t e|gin|ege|ope|pen|e r|n a|bij|rwo|wer|e a|s e|t v|lan|ard|str|jn |ijn|che| da|esc|her|n b|ven|age|e d|wet|nd |bes').split('|'),
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
code: 'rus',
|
|
68
|
+
name: 'Russian',
|
|
69
|
+
trigrams: (' пр|ого| и |ние|пра|ств|рав|ени|ост| на|на | ка|ова| об|ть |ать|ий |ани|ие |ажд|каж|то | по|сво|ажд|жды|дый| в | св| не|ет | до| ра|его|ест|во |обо|бод|аво|ных|ой |ли |ело|ова|ных|е и|й ч|дый|обр|раз|ком|не |о п|вob|ное| им| ил|или| ко|ого|ова|ить|ных|ные|ого|ого|ных|ого|ого|ных|ого|ого|ных|ого').split('|'),
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
code: 'jpn',
|
|
73
|
+
name: 'Japanese',
|
|
74
|
+
trigrams: ('の |する|して|ない|ある| の|こと|れる|いる|ている|った|から|ので|って|なっ|それ|もの|ます|です|した|ない|られ|ため|この|とい|のは|たい|のが|でき|のを|これ|なら|との|ても|ても|よう|にな|のに|てい|とは|もの|かっ|った|ると|であ|には|にお|おい|のは|まし|とが|です|でし|ませ|せん|かし|しか|まで|まで|から|もの|のか|だっ|こと|なの|のは|ると|とし|のは|いう|だと|がで|きる|てき|もな|たの|なけ|かど|ども|たち').split('|'),
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
code: 'cmn',
|
|
78
|
+
name: 'Chinese (Mandarin)',
|
|
79
|
+
trigrams: ('的 | 的|人人|有权|权利| 人|和 |任何| 任|何人|不得|利 |每个| 每|个人|自由| 和|国 | 有| 不|得 |会 |社会| 社|受 |其他|他 | 其|享有| 享|保护| 保|等 |平等| 平|法律| 法| 自|由 |在 | 在|为 | 为|应 | 应|所有| 所|何 |生活| 生|教育| 教|一切| 一|切 |权 | 国|家 |际 | 际|本 | 本|条 | 条').split('|'),
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
code: 'arb',
|
|
83
|
+
name: 'Arabic',
|
|
84
|
+
trigrams: (' ال|الح|لحق|حق |ية |في | في|وال| أو|أو |من | من|لكل| لك|كل |ان | أن|حق | وا|ة ا|الم| عل|حري|رية|ها |على|لى |ته |ات |الت|ون |أن |كان| وا|ما |الأ|ة و|مة |لا |ام |شخص| لل|أي |ي أ| كل|مم |الع|لة |إلى|لي |م ا|لأم|اء |ل ف|ة أ|قوق|أمم|ق ف|دة |لعا|عال|مي | إل|حد |واح|أحد|ين |ق ا|ت ا| حر|نسا|سان|إنس|لإن|عة |ون |الا|نون|انو|قان').split('|'),
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
code: 'hin',
|
|
88
|
+
name: 'Hindi',
|
|
89
|
+
trigrams: ('के |का |में| के| का| और|और |ार | है|है |की |ने | की|ों | को|को |प्र| प्|ा क|ी क|से | मे|ें | से|ना |ता | कि|किस|कि |में|िसी|सी | हो|ति |ती |े क|ा ह|ा म|या |ा स|िक |ात |ही |ान |ाव |ले | या|ओं |र क|ी स|ही | जा|था |ित | पर|पर |ने | ऐस|ऐसे| अप|अपन|हो |ेश |ाओं|देश| दे|अधि|धिक|कार|े म|जा |समा|माज| सम|िया|राष|ाष्|ष्ट|है।|गा |क अ|री |ा ज| इस|इस |विश|ाँ |ं क|राप|र स|न क|प्त|ा अ| रा| सभ|सभी|भी |शिक|िक्|क्ष|क्षा|ारा|ा प|ीय |हित|े ल|लिए| लि|र म|ेश्|शा |र प|सा |ं म|स्व| स्|ुक्|मुक|्वत|वतं|तंत|ंत्|त्र|्रत|ा ब| अध').split('|'),
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
code: 'ben',
|
|
93
|
+
name: 'Bengali',
|
|
94
|
+
trigrams: ('র |প্র| প্|ের | এব|এবং|বং |ার |ে |তি |কার| সম| অধ|অধি|ধিক|িকা|ান |য়ে| তা|তার| কো|কোন|োন|না | তা|করা|মান|াধী|নো |াধি|হার|বে |ে প|ায়|া হ|িয়|পায|ব্য|্যক|ক্ত|রাধ|স্ব|্বা|বাধ|াধী|ীনত|নতা|তা | স্|ক্ষ|রতি|প্ত|রে |করি|্রত|ির |্রে|যুক|সকল| সক|কল | যে| হই|দেশ| দে|সমা|মাজ| রা|রাষ|াষ্|ষ্ট|যায|াষ্').split('|'),
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
code: 'kor',
|
|
98
|
+
name: 'Korean',
|
|
99
|
+
trigrams: ('의 |는 |에 |을 |이 |권리|리를| 모|모든| 권|든 |하는|는 | 있|있다| 또|또는| 자|자유| 하|유 |할 | 및| 그|을 |인은| 사|사회|회의| 대|대한|가 | 국|한다|이나|나 |로 |국가| 어|어떠|떠한|한 |되어|어야|보장|장 |에게|게 | 받|받을|야 | 한|적 | 인|으로|지 |누구|구나|에서|서 |있는|위한|한다|다 |경우| 위|가진|진다|위하|여 |과 |인의| 기|기본|본적|의무|무 |다른|른 |정 |방법|법 |동등|등한| 법|법률|법에|에의').split('|'),
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
code: 'tur',
|
|
103
|
+
name: 'Turkish',
|
|
104
|
+
trigrams: (' ve|ve |ler|bir|ir |hak| bi|in |lar| ha|er |ak |ır |ası|kla|akl|an |ına| he| ol|her|eri|arı|nda|ini|de | ka|lik|ya |esi|ın |ek |eti|rın|ile| ta|mek|ine|eri|yet|ını|la |ara|na |rin|dır|ket|aya| va|ola|lan|ınd|ard|ret|dir|var|lar| bu|bul|hak|ede|ne |ima|rak|un |ill|le |rle|mak|si |lma|tle|riy|den|ama|mle|eml|eme|tle|tle| ge|ala|ulu|mil|ille|lle|let|nis|hiç|içb|çbi|ilm|nma|eya|hay|lis|lik|dan|kar|ır |ığı|ama|da |ser|erb|rbe|bes|est|e h|tir|ması|şma|her|ulu').split('|'),
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
code: 'vie',
|
|
108
|
+
name: 'Vietnamese',
|
|
109
|
+
trigrams: ('nh |ng | ng|ông| nh|ều | qu|quy|uyề|yền|ền |ung| có|có |ền |và | và|ới |mọi| mọ|ọi |ười| ng|ngư|gườ|ườ | tự|tự |ĩ |ều |ác |các| cá|được|ượ | đư|ợc | tr|n t|ị |bất| bấ|ất |ai |ân |ức | kh|hội| xã|xã | do| ph|i n|gia| gi|hôn|in |hin| th|ất | ho| đề|đều|đượ|trư|ước|ướ |ở |ào |nào|hay| ha| bả|bảo|ảo | mộ|một|ột |uốc|quố|ốc |ình|hữ |nhữ|n c|ã h|ên |với| vớ|à |ự d|của| củ').split('|'),
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
code: 'pol',
|
|
113
|
+
name: 'Polish',
|
|
114
|
+
trigrams: ('nie| pr|pra|raw| do|ie |nia| po|go | i |ch |ego| ni| za|do | w |ści|oln|wol|ani|ości| ma| ka| wo|awo|wan|ej |wo |ażd|każ|dej| na|na |sta|prz|rze|zez| cz|czł|złó|łow|owi|wie|ek |est| je|ma |jak|nek|neg|neg|ych| lu|lub|ub |rod|nar| rów|rów|ówn|wno|noś|ym |pow|owy|odo|obo| sw|swo|kie|stw|jed|odn|dno|owe|enn|bod|dze|ów |nic|za |owo|nym|ają|prz|zan|iej|ich|ny |ien|rac|czn|ron|orz|m p|ań |ony|ić |ony|kra|raj|aju| kr|o d|olno|lno|noś|ośc|ci |wsz|sze|inn|d p| ob|owy|mi |ist|e p').split('|'),
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
code: 'ukr',
|
|
118
|
+
name: 'Ukrainian',
|
|
119
|
+
trigrams: (' пр|пра|рав|на | на|ння|ого| за|ати|ня |ти | і | по|во |або| аб|має| ко|кож|ожн|жна|ів |люд|юди|дин|ина| лю|сво|вob|обо|бод|і п|е п|ає |го | не|не |ути|бут|ере| бу|ств|ій |їх |ій | ві|від|ідн|анн|ому|ом |ост|ене|нен|ри |при|ння|нос|а п|ова|ват|їхн|хні|ні |а з|ії |ста|его|а н|а с| та|та | до|до |ень|ися|них|ною|ті |ним|ому|ми |ван|бе |без| бе|воб| сво|ано|а в|ії |о п|ніх|ної|ьно| ос|осо|соб|оби|бис|ист| в |в | ви| ін| рі|рів|івн|вно|нос|ості|сті|у п|ово|ній').split('|'),
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
code: 'swe',
|
|
123
|
+
name: 'Swedish',
|
|
124
|
+
trigrams: (' oc|och|ch | rä|rät|ätt|tt |er |för|ör |ing|var| ti| fö|til|ill|ll |en |ska|nde| ha| en|and|ell| fr| el|ler|lig|het|av |ler| av|lle| de| sk|den|att|har| ut|nga| in|ens|igh|ghe|la |ter|gen| so|som|om | be| st|fri|rih|ihe|ete|ten|det|eni|nin|nna|na |tta|de |iga| va|ka |sam| at| si| la|und|re |ans| ge|ran|da |rätt|ade|isk|tta|sta|ion|tio|alla|lla|ona|ner|är |ras|ati|kli|äns|nal|at |sin|igt|r r|d f|med| me|kap|dra|äll|r s|lik|ikl|r f|n s|ans|änd|mot| mo|tat|lan|stä|ndé|ndé|erä|rkl|för|kla|nd |del|rin|nat|dig|gna|tig|tti|e s|h f|s f|lid|nsk|nsl|an |ska|dde|a f|dom| do').split('|'),
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
code: 'dan',
|
|
128
|
+
name: 'Danish',
|
|
129
|
+
trigrams: ('er |en | og|og | re|ret| ti|til|il |nde| de|et |for|lle| ha| en| fo|ing|den|hed|gen|ler|ell|hed| at| el|lig|de |der|hed| fr| et| er|els|ver|ige| af|af |har|nge| be|fri|rih|ihe|ede|and|ion|le |ske|igh|ghe|tte|nd |ska|eri|al |ter|ere|ens|enh|nhe|hed| st| sk|hve|r r|ret|enn|ationer|nes|alle|lle|tio|ke |es |n f|age|ng |at |te |res|ved|ove|lig| li|ove|t t|r s|des|r f|e f|tig|ans|ons|nat|rin|tion|on |und|re |rig|gru|run|ndl|ige| an|lov| lo|sam|isk|ren| in|ne |on |nes|lan|lke|stå|tat|for| al| me| sa|n s|h f|end|hed|ge |arn|r e|rne|enn|mod| mo|vis| vi|nne|sti|e s|hed|med|d e|r t|ikk|kke|per|rso|son|ona').split('|'),
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
code: 'nor',
|
|
133
|
+
name: 'Norwegian',
|
|
134
|
+
trigrams: ('er |en |et |for|or | re|ret|til| ti|il | og|og |den|ler| de|lle| ha| en|nde|ing|ell| fo| el|ede|lig|het|gen| fr|ter|ver|tte|der|har| et| at|igh|ghe|nge|rih|ihe|fri|and|eri|al |ens|ion|hed| be| st|le |ke |ska|de |ere|ske|tig|ng |res|all|lle|nes|ans|tio|hve|enh|nhe|r r|ene|ret|r s|ove|n f|rin|ationer|ung|age|te |ige|sam|nat|und|ons|nd |r f| sk|at |es |t t|lov|ikk|kke|gru|run|ndl|ige|lan|tat|ren|isk|nne|arn|r e|rne|vis|end|mod|med|ned|per|rso|son|ona|nen|sta|nna|na |ne |dom|e s|sti|s f|d e|ell|seg|inn|e o|ger|n s| an|ike|ket|re |ige| la| me|e f|h f|nnl|lag|om |ave|rhe|her').split('|'),
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Trigram extraction
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
/**
|
|
141
|
+
* Extract trigrams from text, including word-boundary trigrams
|
|
142
|
+
* (padded with spaces). The text is lowercased and normalised first.
|
|
143
|
+
*/
|
|
144
|
+
export function extractTrigrams(text) {
|
|
145
|
+
const counts = new Map();
|
|
146
|
+
// Normalise: lowercase, collapse whitespace, trim
|
|
147
|
+
const clean = ` ${text.toLowerCase().replace(/[\n\r]+/g, ' ').replace(/\s+/g, ' ').trim()} `;
|
|
148
|
+
for (let i = 0; i < clean.length - 2; i++) {
|
|
149
|
+
const tri = clean.substring(i, i + 3);
|
|
150
|
+
counts.set(tri, (counts.get(tri) || 0) + 1);
|
|
151
|
+
}
|
|
152
|
+
return counts;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Build a ranked list of trigrams from frequency counts (most frequent first).
|
|
156
|
+
*/
|
|
157
|
+
export function rankTrigrams(counts, maxRank = 300) {
|
|
158
|
+
return [...counts.entries()]
|
|
159
|
+
.sort((a, b) => b[1] - a[1])
|
|
160
|
+
.slice(0, maxRank)
|
|
161
|
+
.map(([tri]) => tri);
|
|
162
|
+
}
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
// Distance scoring
|
|
165
|
+
// ---------------------------------------------------------------------------
|
|
166
|
+
/**
|
|
167
|
+
* Compute the "out-of-place" distance between an input ranked trigram list
|
|
168
|
+
* and a reference profile. Lower = better match.
|
|
169
|
+
*
|
|
170
|
+
* For each trigram in the input profile, find its position in the reference.
|
|
171
|
+
* If not found, apply a penalty equal to `maxRank`. Sum all displacements.
|
|
172
|
+
*/
|
|
173
|
+
export function computeDistance(inputRanked, referenceProfile, maxRank = 300) {
|
|
174
|
+
const refIndex = new Map();
|
|
175
|
+
for (let i = 0; i < referenceProfile.length; i++) {
|
|
176
|
+
refIndex.set(referenceProfile[i], i);
|
|
177
|
+
}
|
|
178
|
+
let distance = 0;
|
|
179
|
+
for (let i = 0; i < inputRanked.length; i++) {
|
|
180
|
+
const tri = inputRanked[i];
|
|
181
|
+
const refPos = refIndex.get(tri);
|
|
182
|
+
if (refPos !== undefined) {
|
|
183
|
+
distance += Math.abs(i - refPos);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
distance += maxRank; // penalty for trigram not in reference
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return distance;
|
|
190
|
+
}
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
// Confidence normalisation
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
/**
|
|
195
|
+
* Convert raw distances to 0-1 confidence scores.
|
|
196
|
+
*
|
|
197
|
+
* The best (lowest-distance) language gets the highest confidence.
|
|
198
|
+
* We use inverse-distance normalisation:
|
|
199
|
+
* score_i = (1 / (1 + distance_i)) / sum(1 / (1 + distance_j))
|
|
200
|
+
*/
|
|
201
|
+
export function distancesToConfidences(distances) {
|
|
202
|
+
if (distances.length === 0)
|
|
203
|
+
return [];
|
|
204
|
+
const inverses = distances.map(d => ({
|
|
205
|
+
code: d.code,
|
|
206
|
+
inverse: 1 / (1 + d.distance),
|
|
207
|
+
}));
|
|
208
|
+
const total = inverses.reduce((sum, d) => sum + d.inverse, 0);
|
|
209
|
+
return inverses
|
|
210
|
+
.map(d => ({
|
|
211
|
+
code: d.code,
|
|
212
|
+
confidence: total > 0 ? d.inverse / total : 0,
|
|
213
|
+
}))
|
|
214
|
+
.sort((a, b) => b.confidence - a.confidence);
|
|
215
|
+
}
|
|
216
|
+
// ---------------------------------------------------------------------------
|
|
217
|
+
// ISO 639-3 -> ISO 639-1 mapping (common subset)
|
|
218
|
+
// ---------------------------------------------------------------------------
|
|
219
|
+
const ISO_639_3_TO_1 = {
|
|
220
|
+
eng: 'en', spa: 'es', fra: 'fr', deu: 'de', por: 'pt',
|
|
221
|
+
ita: 'it', nld: 'nl', rus: 'ru', jpn: 'ja', cmn: 'zh',
|
|
222
|
+
arb: 'ar', hin: 'hi', ben: 'bn', kor: 'ko', tur: 'tr',
|
|
223
|
+
vie: 'vi', pol: 'pl', ukr: 'uk', swe: 'sv', dan: 'da',
|
|
224
|
+
nor: 'no',
|
|
225
|
+
};
|
|
226
|
+
/**
|
|
227
|
+
* Convert an ISO 639-3 code to ISO 639-1 if a mapping exists,
|
|
228
|
+
* otherwise return the 3-letter code as-is.
|
|
229
|
+
*/
|
|
230
|
+
export function iso6393To1(code) {
|
|
231
|
+
return ISO_639_3_TO_1[code] || code;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Detect the language of a text string using trigram frequency profiles.
|
|
235
|
+
*
|
|
236
|
+
* @param text - The input text to analyse
|
|
237
|
+
* @param options - Detection tuning knobs
|
|
238
|
+
* @returns Array of `{ language, confidence }` sorted by confidence descending.
|
|
239
|
+
* `language` uses ISO 639-1 codes (e.g. 'en', 'fr') where possible.
|
|
240
|
+
*/
|
|
241
|
+
export function detectLanguageTrigram(text, options) {
|
|
242
|
+
const maxCandidates = options?.maxCandidates ?? 3;
|
|
243
|
+
const minLength = options?.minLength ?? 10;
|
|
244
|
+
if (!text || text.trim().length < minLength) {
|
|
245
|
+
return [{ language: 'und', confidence: 0 }]; // undetermined
|
|
246
|
+
}
|
|
247
|
+
const inputCounts = extractTrigrams(text);
|
|
248
|
+
const inputRanked = rankTrigrams(inputCounts);
|
|
249
|
+
if (inputRanked.length === 0) {
|
|
250
|
+
return [{ language: 'und', confidence: 0 }];
|
|
251
|
+
}
|
|
252
|
+
const distances = PROFILES.map(profile => ({
|
|
253
|
+
code: profile.code,
|
|
254
|
+
distance: computeDistance(inputRanked, profile.trigrams),
|
|
255
|
+
}));
|
|
256
|
+
const scored = distancesToConfidences(distances);
|
|
257
|
+
return scored
|
|
258
|
+
.slice(0, maxCandidates)
|
|
259
|
+
.map(s => ({
|
|
260
|
+
language: iso6393To1(s.code),
|
|
261
|
+
confidence: Math.round(s.confidence * 1000) / 1000, // 3 decimals
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Get the list of all supported language codes (ISO 639-1 where possible).
|
|
266
|
+
*/
|
|
267
|
+
export function getSupportedLanguages() {
|
|
268
|
+
return PROFILES.map(p => iso6393To1(p.code));
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=trigram-language-profiles.js.map
|