Skip to content

Commit 6f56bb3

Browse files
author
Léo Guillaume
committed
feat: nlp manager
1 parent 59d5574 commit 6f56bb3

21 files changed

+657
-39
lines changed

package-lock.json

Lines changed: 19 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,24 @@
1414
"url": "git+https://github.com/Leoglme/node-nlp-typescript.git"
1515
},
1616
"keywords": [
17-
"nlp",
1817
"node-nlp",
1918
"typescript",
20-
"ai"
19+
"ai",
20+
"natural language processing",
21+
"artifical intelligence",
22+
"natural language understanding",
23+
"natural language generation",
24+
"NLP",
25+
"NLU",
26+
"NLG",
27+
"sentiment analysis",
28+
"classifier",
29+
"logistic regression",
30+
"Natural",
31+
"entity extraction",
32+
"named entity recognition",
33+
"chatbot",
34+
"bot"
2135
],
2236
"author": "dibodev",
2337
"license": "MIT",
@@ -26,14 +40,25 @@
2640
},
2741
"homepage": "https://github.com/Leoglme/node-nlp-typescript#readme",
2842
"devDependencies": {
43+
"@types/node": "^18.15.10",
2944
"tsup": "^6.7.0",
3045
"typescript": "^5.0.2"
3146
},
3247
"dependencies": {
48+
"@nlpjs/builtin-duckling": "^4.26.1",
49+
"@nlpjs/builtin-microsoft": "^4.26.1",
3350
"@nlpjs/core-loader": "^4.26.1",
51+
"@nlpjs/emoji": "^4.26.1",
52+
"@nlpjs/evaluator": "^4.26.1",
3453
"@nlpjs/lang-all": "^4.26.1",
3554
"@nlpjs/language": "^4.25.0",
36-
"node-nlp": "^4.26.1",
37-
"node-nlp-typescript": "^0.1.30"
55+
"@nlpjs/neural": "^4.25.0",
56+
"@nlpjs/nlg": "^4.26.1",
57+
"@nlpjs/nlp": "^4.26.1",
58+
"@nlpjs/nlu": "^4.26.1",
59+
"@nlpjs/request": "^4.25.0",
60+
"@nlpjs/sentiment": "^4.26.1",
61+
"@nlpjs/similarity": "^4.26.1",
62+
"@nlpjs/xtables": "^4.25.0"
3863
}
3964
}

src/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@
2222
*/
2323

2424
import { Language } from './language';
25-
import { NlpUtil } from './nlp';
25+
import { NlpUtil, NlpManager } from './nlp';
2626

2727
export {
2828
Language,
29-
NlpUtil
29+
NlpUtil,
30+
NlpManager
3031
};

src/nlp/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
*/
2323

2424
import NlpUtil from './nlp-util';
25+
import NlpManager from './nlp-manager';
2526

2627
export {
27-
NlpUtil
28+
NlpUtil,
29+
NlpManager
2830
}

src/nlp/nlp-excel-reader.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { XDoc } from '@nlpjs/xtables';
2+
import NlpManager from './nlp-manager';
3+
4+
class NlpExcelReader {
5+
private manager: NlpManager;
6+
private xdoc: XDoc;
7+
8+
constructor(manager: NlpManager) {
9+
this.manager = manager;
10+
this.xdoc = new XDoc();
11+
}
12+
13+
load(filename: string): void {
14+
this.xdoc.read(filename);
15+
this.loadSettings();
16+
this.loadLanguages();
17+
this.loadNamedEntities();
18+
this.loadRegexEntities();
19+
this.loadIntents();
20+
this.loadResponses();
21+
}
22+
23+
loadSettings(): void {}
24+
25+
loadLanguages(): void {
26+
const rows: Record<string, string>[] = this.xdoc.getTable('Languages').data;
27+
rows.forEach((row: Record<string, string>) => {
28+
this.manager.addLanguage(row.iso2);
29+
});
30+
}
31+
32+
loadNamedEntities(): void {
33+
const rows: Record<string, string>[] = this.xdoc.getTable('Named Entities').data;
34+
rows.forEach((row: Record<string, string>) => {
35+
const languages = row.language.split(',').map((x) => x.trim());
36+
this.manager.addNamedEntityText(row.entity, row.option, languages, [row.text]);
37+
});
38+
}
39+
40+
loadRegexEntities(): void {
41+
const table = this.xdoc.getTable('Regex Entities');
42+
if (table) {
43+
const rows: Record<string, string>[] = table.data;
44+
rows.forEach((row: Record<string, string>) => {
45+
const languages = row.language.split(',').map((x) => x.trim());
46+
this.manager.addRegexEntity(row.entity, languages, row.regex);
47+
});
48+
}
49+
}
50+
51+
loadIntents(): void {
52+
const rows: Record<string, string>[] = this.xdoc.getTable('Intents').data;
53+
rows.forEach((row: Record<string, string>) => {
54+
this.manager.addDocument(row.language, row.utterance, row.intent);
55+
});
56+
}
57+
58+
loadResponses(): void {
59+
const rows: Record<string, string>[] = this.xdoc.getTable('Responses').data;
60+
rows.forEach((row: Record<string, string>) => {
61+
this.manager.addAnswer(row.language, row.intent, row.response, row.condition);
62+
// this.manager.addAnswer(row.language, row.intent, row.response, row.condition, row.url);
63+
});
64+
}
65+
}
66+
67+
export default NlpExcelReader;

0 commit comments

Comments
 (0)