我有一个系统,用户可以发送许多聊天消息,其中许多是问题,例如如何注册账号?
我该怎么做?
X在哪里?
为了解决这个问题,我有兴趣创建一个FAQbot
,它可以接收聊天消息,然后决定是否发送一条有帮助的消息,解释如何做某事。例如,当用户输入如何注册账号?
时,机器人应该回复类似你可以通过...注册
的内容。如果用户输入如何注册?
、我无法注册账号!
、请问有人能告诉我如何注册吗?
或其他类似的问题,机器人都应该这样回复。机器人将有一组固定的答案,针对我们预期用户会有的各种问题,因此我计划训练神经网络,对于不需要回复的消息输出0
,或者输出对应特定回复消息的ID号
。
我想我会记录所有聊天消息,逐一分类它们,判断哪些消息或无需消息是适当的回复,然后将这些数据输入神经网络。我还将创建工具来纠正不当的回复或缺乏回复的情况。
我使用C#
,可能会使用如Accord.NET
这样的库,尽管我不是在询问具体的实现方法。我的问题是如何将聊天消息字符串转换为神经网络的有效输入。我想象它会告诉网络使用了哪些单词和标点符号,单词的顺序,以及哪些单词跟随哪些其他单词。然而,具体的实现方法让我困惑。
回答:
首先 – 你的任务似乎是某种自然文本分类
(每个常见问题代表一个类别)。
另外 – 也许可以使用TF-IDF
向量?另一种方法是将输入表示为词向量矩阵(来自word2vec或类似工具),但在这种情况下,人工神经网络将会有很多参数 – 因此似乎你无法正确地训练它。
p.s. 另外 – 你可能更喜欢使用api.ai,或者基于Watson nlc的机器人?