diff options
| author | Bob Zeleznik <zzzman@gmail.com> | 2020-04-08 20:56:47 -0400 | 
|---|---|---|
| committer | Bob Zeleznik <zzzman@gmail.com> | 2020-04-08 20:56:47 -0400 | 
| commit | 051aefd6455ccda271377913a486e923aef40efd (patch) | |
| tree | f33e1a52b72bf066e93415a12f47ed74a62f5b4a /src/server/Recommender.ts | |
| parent | 9a795d09127d10f23e3992f899265fd227e49af4 (diff) | |
| parent | b21db9d40c1619df5455ba8ffe3ef76913cc92de (diff) | |
Merge branch 'master' into script_documents
Diffstat (limited to 'src/server/Recommender.ts')
| -rw-r--r-- | src/server/Recommender.ts | 137 | 
1 files changed, 137 insertions, 0 deletions
diff --git a/src/server/Recommender.ts b/src/server/Recommender.ts new file mode 100644 index 000000000..aacdb4053 --- /dev/null +++ b/src/server/Recommender.ts @@ -0,0 +1,137 @@ +// //import { Doc } from "../new_fields/Doc"; +// //import { StrCast } from "../new_fields/Types"; +// //import { List } from "../new_fields/List"; +// //import { CognitiveServices } from "../client/cognitive_services/CognitiveServices"; + +// // var w2v = require('word2vec'); +// var assert = require('assert'); +// var arxivapi = require('arxiv-api-node'); +// import requestPromise = require("request-promise"); +// import * as use from '@tensorflow-models/universal-sentence-encoder'; +// import { Tensor } from "@tensorflow/tfjs-core/dist/tensor"; +// require('@tensorflow/tfjs-node'); + +// //http://gnuwin32.sourceforge.net/packages/make.htm + +// export class Recommender { + +//     private _model: any; +//     static Instance: Recommender; +//     private dimension: number = 0; +//     private choice: string = ""; // Tensorflow or Word2Vec + +//     constructor() { +//         console.log("creating recommender..."); +//         Recommender.Instance = this; +//     } + +//     /*** +//      * Loads pre-trained model from TF +//      */ + +//     public async loadTFModel() { +//         let self = this; +//         return new Promise(res => { +//             use.load().then(model => { +//                 self.choice = "TF"; +//                 self._model = model; +//                 self.dimension = 512; +//                 res(model); +//             }); +//         } + +//         ); +//     } + +//     /*** +//      * Loads pre-trained model from word2vec +//      */ + +//     // private loadModel(): Promise<any> { +//     //     let self = this; +//     //     return new Promise(res => { +//     //         w2v.loadModel("./node_modules/word2vec/examples/fixtures/vectors.txt", function (err: any, model: any) { +//     //             self.choice = "WV"; +//     //             self._model = model; +//     //             self.dimension = model.size; +//     //             res(model); +//     //         }); +//     //     }); +//     // } + +//     /*** +//      * Testing +//      */ + +//     public async testModel() { +//         if (!this._model) { +//             await this.loadTFModel(); +//         } +//         if (this._model) { +//             if (this.choice === "WV") { +//                 let similarity = this._model.similarity('father', 'mother'); +//                 console.log(similarity); +//             } +//             else if (this.choice === "TF") { +//                 const model = this._model as use.UniversalSentenceEncoder; +//                 // Embed an array of sentences. +//                 const sentences = [ +//                     'Hello.', +//                     'How are you?' +//                 ]; +//                 const embeddings = await this.vectorize(sentences); +//                 if (embeddings) embeddings.print(true /*verbose*/); +//                 // model.embed(sentences).then(embeddings => { +//                 //     // `embeddings` is a 2D tensor consisting of the 512-dimensional embeddings for each sentence. +//                 //     // So in this example `embeddings` has the shape [2, 512]. +//                 //     embeddings.print(true /* verbose */); +//                 // }); +//             } +//         } +//         else { +//             console.log("model not found :("); +//         } +//     } + +//     /*** +//      * Uses model to convert words to vectors +//      */ + +//     public async vectorize(text: string[]): Promise<Tensor | undefined> { +//         if (!this._model) { +//             await this.loadTFModel(); +//         } +//         if (this._model) { +//             if (this.choice === "WV") { +//                 let word_vecs = this._model.getVectors(text); +//                 return word_vecs; +//             } +//             else if (this.choice === "TF") { +//                 const model = this._model as use.UniversalSentenceEncoder; +//                 return new Promise<Tensor>(res => { +//                     model.embed(text).then(embeddings => { +//                         res(embeddings); +//                     }); +//                 }); + +//             } +//         } +//     } + +//     // public async trainModel() { +//     //     console.log("phrasing..."); +//     //     w2v.word2vec("./node_modules/word2vec/examples/eng_news-typical_2016_1M-sentences.txt", './node_modules/word2vec/examples/my_phrases.txt', { +//     //         cbow: 1, +//     //         size: 200, +//     //         window: 8, +//     //         negative: 25, +//     //         hs: 0, +//     //         sample: 1e-4, +//     //         threads: 20, +//     //         iter: 200, +//     //         minCount: 2 +//     //     }); +//     //     console.log("phrased!!!"); +//     // } + +// }  | 
