in lambda/es-proxy-layer/lib/keywords.js [10:50]
function get_keywords_from_comprehend(params) {
// get keywords from question using Comprehend syntax api
var keywords="";
var keyword_syntax_types = _.get(params,'keyword_syntax_types') || "NOUN,PROPN,VERB,INTJ";
var syntax_confidence_limit = _.get(params,'syntax_confidence_limit') || .20;
var comprehend = new aws.Comprehend();
var comprehend_params = {
LanguageCode: 'en',
Text: params.question
};
return(Promise.resolve(comprehend.detectSyntax(comprehend_params).promise()))
.then(function(data) {
for (var syntaxtoken of data.SyntaxTokens) {
qnabot.debug(
"WORD = '" + syntaxtoken.Text + "', "
+ "PART OF SPEECH = " + syntaxtoken.PartOfSpeech.Tag + ", "
+ "SCORE: " + syntaxtoken.PartOfSpeech.Score);
if (keyword_syntax_types.split(",").indexOf(syntaxtoken.PartOfSpeech.Tag) != -1) {
if (stopwords.split(",").indexOf(syntaxtoken.Text.toLowerCase()) == -1) {
if (syntaxtoken.PartOfSpeech.Score >= syntax_confidence_limit) {
qnabot.debug("+KEYWORD: " + syntaxtoken.Text);
if(!(syntaxtoken.Text.startsWith("'") || syntaxtoken.Text.startsWith("`"))){
keywords = keywords + syntaxtoken.Text + " ";
}else{
qnabot.debug("Not including " + syntaxtoken.Text)
}
} else {
qnabot.debug("X score < ", syntax_confidence_limit, " (threshold)");
}
} else {
qnabot.debug("X '" + syntaxtoken.Text + "' is a stop word");
}
} else {
qnabot.debug("X part of speech not in list:", keyword_syntax_types);
}
}
if (keywords.length == 0) {qnabot.debug("Keyword list empty - no query filter applied")}
else {qnabot.debug("KEYWORDS:",keywords)}
return keywords;
});
}