如何将情绪分析脚本与聊天机器人集成在一起,以便在同一控制台屏幕上分析用户的答复? [英] How to integrate the sentiment analysis script with the chatbot for analysing the user's reply in the same console screen?

查看:122
本文介绍了如何将情绪分析脚本与聊天机器人集成在一起,以便在同一控制台屏幕上分析用户的答复?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想创建一个使用情感分析器脚本的聊天机器人,以了解我已经完成聊天机器人制作的用户回复的情绪。

I want to make a chatbot that uses Sentiment analyser script for knowing the sentiment of the user's reply for which I have completed the Chatbot making.

现在我只做一件事要做的就是使用此脚本使用我创建的聊天机器人来分析用户的回复。

我应如何将此 sentiment_analysis.py 脚本与集成在一起chatbot.py 文件来分析用户的情绪?

Now only thing I want to do is to use this Script to analyse the reply of user using the chatbot that I have made.
How should I integrate this sentiment_analysis.py script with the chatbot.py file to analyse the sentiment's of user?

更新:
总体效果如下:

Chatbot:您今天过得怎么样?

用户:今天真是棒极了。我今天感到非常兴奋和动力。

用户回复:积极的

情感得分=(一些随机值)


预先感谢您。

Update: The overall performance will be like this :
Chatbot: How was your day?
User: It was an awesome day. I feel so elated and motivated today.
User Reply: Positive
Sentiment score = (some random value)

Thanking you in advance.

推荐答案

将类从情感分析脚本导入聊天机器人脚本。然后根据您的要求做必要的事情。例如。我修改了您的chatbot脚本:

Import classes from sentiment analysis script to chatbot script. Then do necessary things according to your requirement. For example. I modified your chatbot script:

from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
from sentiment_analysis import Splitter, POSTagger, DictionaryTagger  # import all the classes from sentiment_analysis
import os

bot = ChatBot('Bot')
bot.set_trainer(ListTrainer)

# for files in os.listdir('C:/Users/username\Desktop\chatterbot\chatterbot_corpus\data/english/'):
# data = open('C:/Users/username\Desktop\chatterbot\chatterbot_corpus\data/english/' + files, 'r').readlines()
data = [
    "My name is Tony",
    "that's a good name",
    "Thank you",
    "How you doing?",
    "I am Fine. What about you?",
    "I am also fine. Thanks for asking."]

bot.train(data)

# I included 3 functions from sentiment_analysis here for ease of loading. Alternatively you can create a class for them in sentiment_analysis.py and import here.
def value_of(sentiment):
    if sentiment == 'positive': return 1
    if sentiment == 'negative': return -1
    return 0

def sentence_score(sentence_tokens, previous_token, acum_score):
    if not sentence_tokens:
        return acum_score
    else:
        current_token = sentence_tokens[0]
        tags = current_token[2]
        token_score = sum([value_of(tag) for tag in tags])
        if previous_token is not None:
            previous_tags = previous_token[2]
            if 'inc' in previous_tags:
                token_score *= 2.0
            elif 'dec' in previous_tags:
                token_score /= 2.0
            elif 'inv' in previous_tags:
                token_score *= -1.0
        return sentence_score(sentence_tokens[1:], current_token, acum_score + token_score)

def sentiment_score(review):
    return sum([sentence_score(sentence, None, 0.0) for sentence in review])

# create instances of all classes
splitter = Splitter()
postagger = POSTagger()
dicttagger = DictionaryTagger([ 'dicts/positive.yml', 'dicts/negative.yml',
                            'dicts/inc.yml', 'dicts/dec.yml', 'dicts/inv.yml'])

print("ChatBot is Ready...")
print("ChatBot : Welcome to my world! What is your name?")
message = input("you: ")
print("\n")

while True:
    if message.strip() != 'Bye'.lower():

        reply = bot.get_response(message)

        # process the text
        splitted_sentences = splitter.split(message)
        pos_tagged_sentences = postagger.pos_tag(splitted_sentences)
        dict_tagged_sentences = dicttagger.tag(pos_tagged_sentences)

        # find sentiment score
        score = sentiment_score(dict_tagged_sentences)

        if (score >= 1):
            print('User Reply: Positive')
        else:
            print('User Reply: Negative')

        print("Sentiment score :",score)
        print('ChatBot:',reply)

    if message.strip() == 'Bye'.lower():
        print('ChatBot: Bye')
        break
    message = input("you: ")
    print("\n")

让我知道您何时收到e错误。

Let me know when you get errors.

这篇关于如何将情绪分析脚本与聊天机器人集成在一起,以便在同一控制台屏幕上分析用户的答复?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆