aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/Recommender.ts30
-rw-r--r--src/server/index.ts19
2 files changed, 39 insertions, 10 deletions
diff --git a/src/server/Recommender.ts b/src/server/Recommender.ts
index 6d9ca6486..3c71f3aa1 100644
--- a/src/server/Recommender.ts
+++ b/src/server/Recommender.ts
@@ -3,25 +3,27 @@ var w2v = require('word2vec');
export class Recommender {
private _model: any;
+ static Instance: Recommender;
constructor() {
console.log("creating recommender...");
+ Recommender.Instance = this;
}
- public loadModel(): Promise<any> {
+ private loadModel(): Promise<any> {
let self = this;
return new Promise(res => {
w2v.loadModel("./node_modules/word2vec/vectors.txt", function (err: any, model: any) {
- console.log(err);
- console.log(model);
self._model = model;
- console.log(model.similarity('father', 'mother'));
res(model);
});
});
}
- public testModel() {
+ public async testModel() {
+ if (!this._model) {
+ await this.loadModel();
+ }
if (this._model) {
let similarity = this._model.similarity('father', 'mother');
console.log(similarity);
@@ -30,4 +32,22 @@ export class Recommender {
console.log("model not found :(");
}
}
+
+ public async testInstance(text: string) {
+ if (!this._model) {
+ await this.loadModel();
+ }
+ console.log(text);
+ }
+
+ public async vectorize(text: string[]) {
+ if (!this._model) {
+ await this.loadModel();
+ }
+ if (this._model) {
+ let word_vecs = this._model.getVectors(text);
+ console.log(word_vecs[0]);
+ return word_vecs;
+ }
+ }
}
diff --git a/src/server/index.ts b/src/server/index.ts
index dda5a870a..67087fc1f 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -52,11 +52,6 @@ const probe = require("probe-image-size");
var SolrNode = require('solr-node');
var shell = require('shelljs');
-let recommender = new Recommender();
-recommender.loadModel().then(() => {
- recommender.testModel();
-});
-
const download = (url: string, dest: fs.PathLike) => request.get(url).pipe(fs.createWriteStream(dest));
let youtubeApiKey: string;
YoutubeApi.readApiKey((apiKey: string) => youtubeApiKey = apiKey);
@@ -651,6 +646,20 @@ app.use(RouteStore.corsProxy, (req, res) => {
}).pipe(res);
});
+////
+
+let recommender = new Recommender();
+recommender.testModel();
+
+app.post("/recommender", async (req, res) => {
+ let keyphrases = req.body.keyphrases;
+ let wordvecs = await recommender.vectorize(keyphrases);
+ res.send(wordvecs);
+});
+
+
+/////
+
app.get(RouteStore.delete, (req, res) => {
if (release) {
res.send("no");