UNPKG

@botbuildercommunity/middleware-aws-comprehend

Version:

Bot Framework middleware component for the Amazon AWS Comprehend service, including sentiment analysis, language detection, entity extraction, and keyword recognition.

154 lines 5.97 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const middleware_engine_core_1 = require("@botbuildercommunity/middleware-engine-core"); const aws_sdk_1 = require("aws-sdk"); /** * @module botbuildercommunity/middleware-aws-comprehend */ class AWSComprehendEngine extends middleware_engine_core_1.Engine { constructor(options) { super(); this.options = Object.assign({ apiVersion: '2017-11-27', region: 'us-east-1' }, options); this.lang = this.options.lang || 'en'; this.client = new aws_sdk_1.Comprehend(this.options); } entities(input) { return __awaiter(this, void 0, void 0, function* () { const params = { LanguageCode: this.lang, Text: input.documents[0].text }; return new Promise((resolve, reject) => { this.client.detectEntities(params, (err, data) => { if (err) { reject(err); } try { const entities = data.Entities.map((e) => e.Text); resolve({ documents: [ { entities: entities } ] }); } catch (e) { reject(e); } }); }); }); } keyPhrases(input) { return __awaiter(this, void 0, void 0, function* () { const params = { LanguageCode: this.lang, Text: input.documents[0].text }; return new Promise((resolve, reject) => { this.client.detectKeyPhrases(params, (err, data) => { if (err) { reject(err); } try { const keyPhrases = data.KeyPhrases.map((e) => e.Text); resolve({ documents: [ { keyPhrases: keyPhrases } ] }); } catch (e) { reject(e); } }); }); }); } detectLanguage(input) { return __awaiter(this, void 0, void 0, function* () { const params = { LanguageCode: this.lang, Text: input.documents[0].text }; return new Promise((resolve, reject) => { this.client.detectDominantLanguage(params, (err, data) => { if (err) { reject(err); } try { const vals = Object.values(data.Languages).sort((a, b) => b.Score - a.Score); resolve({ documents: [ { detectedLanguages: vals[0].LanguageCode } ] }); } catch (e) { reject(e); } }); }); }); } sentiment(input) { return __awaiter(this, void 0, void 0, function* () { const params = { LanguageCode: this.lang, Text: input.documents[0].text }; return new Promise((resolve, reject) => { this.client.detectSentiment(params, (err, data) => { if (err) { reject(err); } try { const vals = Object.values(data.SentimentScore).sort((a, b) => b - a); resolve({ documents: [ { sentiment: data.Sentiment.toLowerCase(), score: vals[0] } ] }); } catch (e) { reject(e); } }); }); }); } categories(input) { return __awaiter(this, void 0, void 0, function* () { return Promise.reject(`[categories] is not supported by this engine. "${input}" cannot be processed`); }); } concepts(input) { return __awaiter(this, void 0, void 0, function* () { return Promise.reject(`[concepts] is not supported by this engine. "${input}" cannot be processed`); }); } emotion(input) { return __awaiter(this, void 0, void 0, function* () { return Promise.reject(`[emotion] is not supported by this engine. "${input}" cannot be processed`); }); } } exports.AWSComprehendEngine = AWSComprehendEngine; //# sourceMappingURL=engine.js.map