Skip to content

Commit db8a19b

Browse files
authored
Merge pull request #57 from cp2boston/RCB-464_text-embedding
Rcb 464 text embedding
2 parents 4674c15 + 8e3693e commit db8a19b

File tree

9 files changed

+162
-20
lines changed

9 files changed

+162
-20
lines changed

examples/entities.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@ var args = parser.parseArgs();
1313

1414
var api = new Api(args.key, args.url);
1515
var endpoint = "entities";
16+
var entities_text_data = "Bill Murray will appear in new Ghostbusters film: Dr. Peter Venkman was spotted filming a cameo in Boston this… http://dlvr.it/BnsFfS";
1617

17-
api.parameters.content = "Bill Murray will appear in new Ghostbusters film: Dr. Peter Venkman was spotted filming a cameo in Boston this… http://dlvr.it/BnsFfS";
18+
api.parameters.content = entities_text_data;
1819
api.parameters.genre = "social-media";
1920
api.rosette(endpoint, function(err, res){
2021
if(err){
2122
console.log(err);
2223
} else {
2324
console.log(JSON.stringify(res, null, 2));
2425
}
25-
});
26+
});

examples/entities_linked.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ parser.addArgument(["--url"], {help: "Rosette API alt-url", required: false});
1212
var args = parser.parseArgs();
1313
var api = new Api(args.key, args.url);
1414
var endpoint = "entities";
15+
var entities_linked_text_data = "Last month director Paul Feig announced the movie will have an all-star female cast including Kristen Wiig, Melissa McCarthy, Leslie Jones and Kate McKinnon.";
1516

16-
api.parameters.content = "Last month director Paul Feig announced the movie will have an all-star female cast including Kristen Wiig, Melissa McCarthy, Leslie Jones and Kate McKinnon.";
17+
api.parameters.content = entities_linked_text_data;
1718
// this parameter is deprecated
1819
api.parameters.linked = true;
1920
api.parameters.genre = "social-media";

examples/language.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ appHeader[0] = "X-RosetteAPI-App"
1717
appHeader[1] = "app";
1818
api.parameters.customHeaders = [appHeader];
1919

20-
var content = "Por favor Señorita, says the man.";
20+
var language_data = "Por favor Señorita, says the man.";
2121

22-
api.parameters.content = content;
22+
api.parameters.content = language_data;
2323
var appHeader = [];
2424
appHeader[0] = "X-RosetteAPI-App"
2525
appHeader[1] = "app";

examples/name_similarity.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ var args = parser.parseArgs();
1313
var api = new Api(args.key, args.url);
1414
var endpoint = "nameSimilarity";
1515

16-
var name_similarity_data1 = "Michael Jackson";
17-
var name_similarity_data2 = "迈克尔·杰克逊";
16+
var matched_name_data1 = "Michael Jackson";
17+
var matched_name_data2 = "迈克尔·杰克逊";
1818

19-
api.parameters.name1 = {"text": name_similarity_data1, "language": "eng", "entityType": "PERSON"};
20-
api.parameters.name2 = {"text": name_similarity_data2, "entityType": "PERSON"};
19+
api.parameters.name1 = {"text": matched_name_data1, "language": "eng", "entityType": "PERSON"};
20+
api.parameters.name2 = {"text": matched_name_data2, "entityType": "PERSON"};
2121

2222
api.rosette(endpoint, function(err, res){
2323
if(err){
2424
console.log(err);
2525
} else {
2626
console.log(JSON.stringify(res, null, 2));
2727
}
28-
});
28+
});

examples/name_translation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ var args = parser.parseArgs();
1313
var api = new Api(args.key, args.url);
1414
var endpoint = "nameTranslation";
1515

16-
var name_translation_data = "معمر محمد أبو منيار القذاف";
17-
api.parameters.name = name_translation_data;
16+
var translated_name_data = "معمر محمد أبو منيار القذاف";
17+
api.parameters.name = translated_name_data;
1818
api.parameters.entityType = "PERSON";
1919
api.parameters.targetLanguage = "eng";
2020
api.parameters.targetScript = "Latn";

examples/text_embedding.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
"use strict";
2+
3+
var Api = require("../lib/Api");
4+
var ArgumentParser = require("argparse").ArgumentParser;
5+
6+
var parser = new ArgumentParser({
7+
addHelp: true,
8+
description: "Get the text embedding from a piece of text"
9+
});
10+
parser.addArgument(["--key"], {help: "Rosette API key", required: true});
11+
parser.addArgument(["--url"], {help: "Rosette API alt-url", required: false});
12+
var args = parser.parseArgs();
13+
14+
var api = new Api(args.key, args.url);
15+
var endpoint = "textEmbedding";
16+
var embeddings_data = 'Cambridge, Massachusetts'
17+
18+
api.parameters.content = embeddings_data;
19+
api.rosette(endpoint, function(err, res){
20+
if(err){
21+
console.log(err);
22+
} else {
23+
console.log(JSON.stringify(res, null, 2));
24+
}
25+
});

lib/Api.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,19 @@ var rosetteConstants = require("./rosetteConstants");
2121
var RosetteException = require("./rosetteExceptions");
2222
var paramObj = require("./parameters");
2323

24-
var relationships = require("./relationships");
25-
var matchedName = require("./nameSimilarity");
26-
var translatedName = require("./nameTranslation");
27-
var sentiment = require("./sentiment");
2824
var categories = require("./categories");
2925
var entities = require("./entities");
30-
var morphology = require("./morphology");
31-
var tokens = require("./tokens");
32-
var sentences = require("./sentences");
26+
var info = require("./info");
3327
var language = require("./language");
28+
var matchedName = require("./nameSimilarity");
29+
var morphology = require("./morphology");
3430
var ping = require("./ping");
35-
var info = require("./info");
31+
var relationships = require("./relationships");
32+
var sentences = require("./sentences");
33+
var sentiment = require("./sentiment");
34+
var textEmbedding = require("./textEmbedding");
35+
var translatedName = require("./nameTranslation");
36+
var tokens = require("./tokens");
3637

3738
/**
3839
* @class

lib/textEmbedding.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/**
2+
* Rosette API.
3+
*
4+
* @copyright 2014-2015 Basis Technology Corporation.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
7+
* with the License. You may obtain a copy of the License at
8+
* @license http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software distributed under the License is
11+
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and limitations under the License.
13+
**/
14+
"use strict";
15+
16+
var URL = require("url");
17+
18+
var rosetteConstants = require("./rosetteConstants");
19+
var RosetteException = require("./rosetteExceptions");
20+
var rosetteRequest = require("./rosetteRequest");
21+
22+
/**
23+
* @class
24+
*
25+
* @copyright 2014-2015 Basis Technology Corporation.
26+
* @license http://www.apache.org/licenses/LICENSE-2.0
27+
*/
28+
function textEmbedding() {
29+
30+
};
31+
32+
/**
33+
* Makes an HTTP request to the specified Rosette API endpoint and returns the result
34+
* @param {string} parameters - The Rosette API endpoint parameters
35+
* @param {string} userKey - The Rosette API user access key
36+
* @param {string} serviceURL - The base service URL to be used to access the Rosette API
37+
* @param {function} callback - Callback function to be exectuted after the function to which it is passed is complete
38+
*/
39+
textEmbedding.prototype.getResults = function(parameters, userKey, protocol, serviceURL, callback) {
40+
41+
if (parameters.documentFile != null) {
42+
parameters.loadFile(parameters.loadParams().documentFile, parameters, userKey, protocol, serviceURL, "text-embedding", callback);
43+
} else {
44+
45+
// validate parameters
46+
if (parameters.loadParams().content == null && parameters.loadParams().contentUri == null) {
47+
return callback(new RosetteException("badArgument", "Must supply one of Content or ContentUri", "bad arguments"));
48+
} else if (parameters.loadParams().content != null && parameters.loadParams().contentUri != null) {
49+
return callback(new RosetteException("badArgument", "Cannot supply both Content and ContentUri", "bad arguments"));
50+
} else {
51+
// configure URL
52+
var urlParts = URL.parse(serviceURL + "text-embedding");
53+
var req = new rosetteRequest();
54+
req.makeRequest('POST', userKey, protocol, urlParts, parameters, callback);
55+
}
56+
}
57+
58+
};
59+
60+
module.exports = textEmbedding;

tests/unittests.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,60 @@ describe("Sentences Endpoint", function() {
615615

616616
});
617617

618+
describe("Text Embedding Endpoint", function() {
619+
beforeEach(function(done) {
620+
var mockResponse = JSON.stringify({'name': 'Rosette API', 'versionChecked': true});
621+
622+
nock('https://api.rosette.com', {"encodedQueryParams": true })
623+
.post('/rest/v1/text-embedding')
624+
.query({"clientVersion": "1.1"})
625+
.reply(200, JSON.parse(mockResponse));
626+
done();
627+
});
628+
629+
afterEach(function(done) {
630+
nock.cleanAll();
631+
done();
632+
});
633+
634+
it("successfully calls the textEmbedding endpoint", function(done) {
635+
var api = new Api('123456789', 'https://api.rosette.com/rest/v1');
636+
api.parameters.content = "Some Content";
637+
638+
api.rosette("textEmbedding", function(err, res) {
639+
chai.expect(err).to.be.null;
640+
chai.expect(res.name).to.equal('Rosette API');
641+
done();
642+
});
643+
644+
});
645+
646+
it("detects content and contentUri are defined", function(done) {
647+
var api = new Api('123456789', 'https://api.rosette.com/rest/v1');
648+
api.parameters.content = "Sample Content";
649+
api.parameters.contentUri = "http://some.url.com";
650+
651+
api.rosette("textEmbedding", function(err, res) {
652+
chai.expect(err).to.not.be.null;
653+
chai.expect(err.name).to.equal('RosetteException');
654+
chai.expect(err.message).to.contain('badArgument');
655+
done();
656+
});
657+
});
658+
659+
it("detects neither content nor contentUri are defined", function(done) {
660+
var api = new Api('123456789', 'https://api.rosette.com/rest/v1');
661+
662+
api.rosette("textEmbedding", function(err, res) {
663+
chai.expect(err).to.not.be.null;
664+
chai.expect(err.name).to.equal('RosetteException');
665+
chai.expect(err.message).to.contain('badArgument');
666+
done();
667+
});
668+
});
669+
670+
});
671+
618672
describe("Info Endpoint", function() {
619673
beforeEach(function(done) {
620674
var mockResponse = JSON.stringify({'name': 'Rosette API', 'versionChecked': true});

0 commit comments

Comments
 (0)