aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorab <abdullah_ahmed@brown.edu>2019-08-12 16:41:23 -0400
committerab <abdullah_ahmed@brown.edu>2019-08-12 16:41:23 -0400
commit9dd2a31b72e5e527e2dae3b68f856ab8da879e93 (patch)
tree09aaebd3e6845019c066fce4eb0f24133b2757cd
parent73ac98d53b80230bb085d71b61254f6c24a3e397 (diff)
documentation
-rw-r--r--package.json2
-rw-r--r--src/client/ClientRecommender.tsx18
-rw-r--r--src/client/cognitive_services/CognitiveServices.ts42
-rw-r--r--src/client/util/SearchUtil.ts13
-rw-r--r--src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx1
-rw-r--r--src/server/Recommender.ts1
6 files changed, 45 insertions, 32 deletions
diff --git a/package.json b/package.json
index 1e2c74411..1c7a10ac8 100644
--- a/package.json
+++ b/package.json
@@ -225,4 +225,4 @@
"xoauth2": "^1.2.0",
"youtube": "^0.1.0"
}
-} \ No newline at end of file
+}
diff --git a/src/client/ClientRecommender.tsx b/src/client/ClientRecommender.tsx
index ddaa8a7fc..63f85c737 100644
--- a/src/client/ClientRecommender.tsx
+++ b/src/client/ClientRecommender.tsx
@@ -75,13 +75,15 @@ export class ClientRecommender extends React.Component<RecommenderProps> {
const n = 200;
const num_words = paragraph.size;
let meanVector = new Array<number>(n).fill(0); // mean vector
- paragraph.forEach((wordvec: number[]) => {
- for (let i = 0; i < n; i++) {
- meanVector[i] += wordvec[i];
- }
- });
- meanVector = meanVector.map(x => x / num_words);
- this.addToDocSet(meanVector);
+ if (num_words > 0) { // check to see if paragraph actually was vectorized
+ paragraph.forEach((wordvec: number[]) => {
+ for (let i = 0; i < n; i++) {
+ meanVector[i] += wordvec[i];
+ }
+ });
+ meanVector = meanVector.map(x => x / num_words);
+ this.addToDocSet(meanVector);
+ }
return meanVector;
}
@@ -106,7 +108,7 @@ export class ClientRecommender extends React.Component<RecommenderProps> {
});
return keyterms;
};
- await CognitiveServices.Text.Manager.analyzer(extDoc, ["key words"], data, converter);
+ await CognitiveServices.Text.Appliers.analyzer(extDoc, ["key words"], data, converter);
}
/***
diff --git a/src/client/cognitive_services/CognitiveServices.ts b/src/client/cognitive_services/CognitiveServices.ts
index 954a05585..75d0760ed 100644
--- a/src/client/cognitive_services/CognitiveServices.ts
+++ b/src/client/cognitive_services/CognitiveServices.ts
@@ -258,32 +258,38 @@ export namespace CognitiveServices {
};
console.log("requested!");
return request.post(options);
- },
- analyzer: async (target: Doc, keys: string[], data: string, converter: Converter) => {
- let results = await ExecuteQuery<string, any>(Service.Text, Manager, data);
+ }
+ };
+
+ export namespace Appliers {
+
+ export async function vectorize(keyterms: any) {
+ console.log("vectorizing...");
+ //keyterms = ["father", "king"];
+ let args = { method: 'POST', uri: Utils.prepend("/recommender"), body: { keyphrases: keyterms }, json: true };
+ await requestPromise.post(args).then(async (wordvecs) => {
+ var vectorValues = new Set<number[]>();
+ wordvecs.forEach((wordvec: any) => {
+ //console.log(wordvec.word);
+ vectorValues.add(wordvec.values as number[]);
+ });
+ ClientRecommender.Instance.mean(vectorValues);
+ //console.log(vectorValues.size);
+ });
+ }
+
+ export const analyzer = async (target: Doc, keys: string[], data: string, converter: Converter) => {
+ let results = await ExecuteQuery(Service.Text, Manager, data);
console.log(results);
let keyterms = converter(results);
//target[keys[0]] = Docs.Get.DocumentHierarchyFromJson(results, "Key Word Analysis");
target[keys[0]] = keyterms;
console.log("analyzed!");
await vectorize(keyterms);
- }
- };
- async function vectorize(keyterms: any) {
- console.log("vectorizing...");
- //keyterms = ["father", "king"];
- let args = { method: 'POST', uri: Utils.prepend("/recommender"), body: { keyphrases: keyterms }, json: true };
- await requestPromise.post(args).then(async (wordvecs) => {
- var vectorValues = new Set<number[]>();
- wordvecs.forEach((wordvec: any) => {
- //console.log(wordvec.word);
- vectorValues.add(wordvec.values as number[]);
- });
- ClientRecommender.Instance.mean(vectorValues);
- //console.log(vectorValues.size);
- });
+ };
}
}
+
} \ No newline at end of file
diff --git a/src/client/util/SearchUtil.ts b/src/client/util/SearchUtil.ts
index 3a3ba1803..1fce995d7 100644
--- a/src/client/util/SearchUtil.ts
+++ b/src/client/util/SearchUtil.ts
@@ -82,18 +82,21 @@ export namespace SearchUtil {
const query = "*";
let response = await rp.get(Utils.prepend('/search'), {
qs: {
- query
+ q: query
}
});
- let res: string[] = JSON.parse(response);
- const fields = await DocServer.GetRefFields(res);
+ let result: IdSearchResult = JSON.parse(response);
+ const { ids, numFound, highlighting } = result;
+ const docMap = await DocServer.GetRefFields(ids);
const docs: Doc[] = [];
- for (const id of res) {
- const field = fields[id];
+ for (const id of ids) {
+ const field = docMap[id];
if (field instanceof Doc) {
docs.push(field);
}
}
return docs;
+ // const docs = ids.map((id: string) => docMap[id]).filter((doc: any) => doc instanceof Doc);
+ // return docs as Doc[];
}
}
diff --git a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
index e9791df4e..d1e8031fd 100644
--- a/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
+++ b/src/client/views/collections/collectionFreeForm/CollectionFreeFormView.tsx
@@ -894,6 +894,7 @@ export class CollectionFreeFormView extends CollectionSubView(PanZoomDocument) {
let activedocs = this.getActiveDocuments();
let allDocs = await SearchUtil.GetAllDocs();
allDocs.forEach(doc => console.log(doc.title));
+ // clears internal representation of documents as vectors
ClientRecommender.Instance.reset_docs();
await Promise.all(activedocs.map((doc: Doc) => {
//console.log(StrCast(doc.title));
diff --git a/src/server/Recommender.ts b/src/server/Recommender.ts
index d175b67c7..1c95d7ea4 100644
--- a/src/server/Recommender.ts
+++ b/src/server/Recommender.ts
@@ -70,6 +70,7 @@ export class Recommender {
}
if (this._model) {
let word_vecs = this._model.getVectors(text);
+
return word_vecs;
}
}