训练LUIS了解“我感兴趣”和“我不感兴趣”之间的区别

时间:2017-04-10 10:40:21

标签: nlp botframework luis

我有一个场景,我必须训练LUIS模型,以了解“我感兴趣”和“我不感兴趣”之间的区别。如何在不直接提及Intents中的话语的情况下实现它。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用其他认知服务端点来检测sentiment。看看:http://www.pveller.com/smarter-conversations-part-1-sentiment/

答案 1 :(得分:0)

您在询问Sentiment Analysis。根据我的理解,如果不训练正面和负面的意图,就不可能训练LUIS模型来破译正面或负面的情绪。正如Pavel所说,还有另一个微软提供的服务,Text Analytics API

此API提供多种服务,但在这种情况下,将采用您提供的字符串,测量情绪,并将测量值(id)返回为0到1之间的数字。数字接近0比接近1的那些更负。数字越大,字符串越正。要包含Text Analytics,我已使用Promise进行API调用:

let sentimentAnalysis = function (string) {
    let payload = {
        "documents": [{
            "id": "1",
            "text": string ? string : 'No string? This is sad...'
        }]
    }

    return new Promise(function(resolve, reject) {
        request.post(
        'https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment/', 
            {
                "headers": {
                    "Ocp-Apim-Subscription-Key": process.env.TEXT_ANALYTICS_KEY,
                    "Content-Type": "application/json",
                    "Accept": "application/json",
                },
                "body": JSON.stringify(payload)
            }, (err, res, body) => {
                if (err) {
                    return reject(err);
                } else {
                    return resolve(JSON.parse(res.body));
                }
            }
        )
    })
}

请注意,有效内容包含一个"documents"属性,该属性接受一组对象。您既可以传入整个段落,也可以将其缩小到逐句分隔。但是,我会把这个决定(和设计)留给你:)

然而,官方声明确实说将字符串拆分为句子将改善情绪分析(response to the comments by Lowellkitchen on 2016.12.9)。

在我的瀑布内部,我会调用此Promise并使用结果来确定聊天机器人的响应。

sentimentAnalysis(results.response).then(analyticsResponse => {
    session.send(`You said "${results.response}"!`);
    let score = Math.round(analyticsResponse["documents"][0]["score"] * 100) / 100;
    session.send(`The score of that utterance is ${score}`);
    if(score > 0.7) {
        session.endDialog("Wow that's positive!");
    } else if (score > 0.4) {
        session.endDialog("Wow that's neutral-ish...");
    } else {
        session.endDialog("Wow that is not positive.");
    }
})

GitHub