聊天机器人的意图分类

3
我正在尝试制作一个聊天机器人,为此我需要执行两个主要任务:意图分类和实体识别,但我在意图分类方面遇到了困难。基本上,我正在为电子商务网站开发一个聊天机器人,它有一个非常具体的用例,就是与客户就产品价格进行协商。为了让事情简单明了,我只考虑了5个意图:
  1. 询问价格
  2. 还价
  3. 谈判
  4. 成功
  5. 购买产品
为了在这些意图上训练分类器,我已经使用自己手写的小语料库训练了一个朴素贝叶斯分类器,但这个数据太少了,无法训练出一个好的分类器。我已经在互联网上搜索了很多并查看了每一个机器学习数据存储库(如kaggle、uci等),但都找不到符合我这种特定用例的数据。你们能指导我应该怎么做吗?如果我得到了像我想要的这样大的数据,那么我将尝试深度学习分类器,这对我来说会更好。任何帮助将不胜感激。
from textblob.classifiers import NaiveBayesClassifier
import joblib # This is used to save the trained classifier in pickle format
training_data = [
     ('i want to buy a jeans pent', 'Buy_a_product'),
     ('i want to purchase a pair of shoes', 'Buy_a_product'),
     ('are you selling laptops', 'Buy_a_product'),
     ('i need an apple jam', 'Buy_a_product'),
     ('can you please tell me the price of this product', 'Buy_a_product'),
     ('please give me some discount.', 'negotition'),
     ("i cannot afford such price", 'negotition'),
     ("could you negotiate", "negotition"),
     ("i agree on your offer", "success"),
     ("yes i accepcted your offer", "success"),
     ("offer accepted", "success"),
     ("agreed", "success"),
     ("what is the price of this watch", "ask_for_price"),
     ("How much it's cost", "ask_for_price"),
     ("i will only give you 3000 for this product", "counter_offer"),
     ("Its too costly i can only pay 1500 for it", "counter_offer"),
]

clf = NaiveBayesClassifier(training_data)

joblib.dump(clf, 'intentClassifier.pkl')
1个回答

2
这实际上是一个很好的尝试深度学习的问题。你可能已经知道:语言模型是一种少样本学习器(参考文章https://arxiv.org/abs/2005.14165)。
如果你不熟悉语言模型,我可以在这里简单解释一下。否则,你可以跳过这一部分。基本上,自然语言处理领域通过对无标记数据进行生成式预训练取得了很大的进展。BERT就是一个流行的例子。其思想是,你可以在一个语言建模任务上(例如下一个单词预测)训练一个模型。通过这样的训练,模型将能够很好地学习“世界知识”。然后,当你想要将该模型用于其他任务时,你就不需要那么多的标记训练数据。如果你想了解更多,请看这个视频(https://www.youtube.com/watch?v=SY5PvZrJhLE)。
针对您的问题,我已经为您的应用程序改编了一个colab(我为我的UC课程准备的): https://colab.research.google.com/drive/1dKCqwNwPCsLfLHw9KkScghBJkOrU9PAs?usp=sharing 在这个colab中,我们使用Google Research提供的预训练BERT,并在您标记的数据上进行微调。微调过程非常快,只需要大约1分钟。colab应该可以直接为您工作,因为它提供GPU支持来训练模型。实际上,我认为您可能需要手动生成更多样化的训练数据,但我不认为您需要拥有庞大的数据集。

非常非常感谢您帮助我实现我的目标。我非常感激您。 - Sheri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接