function get_keywords_from_comprehend()

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;
    });
}