我对机器学习和自然语言处理是初学者,我需要基于FAQ数据集创建一个机器人。每个FAQ数据集的Excel文件包含两个列:“问题”和“答案”。
例如,Excel文件中的一条记录(一个问题及其答案)。
问题 – 什么是RASA-NLU?
答案 – Rasa NLU经过训练可以识别意图和实体。训练得越好,识别得越好...
我们有3000多个Excel文件,每个文件包含大约10000到20000条这样的记录。
为了实现这个机器人,我本来会严格按照这个FAQ机器人方法来操作,该方法使用RASA-NLU
,但我的组织不允许使用RASA
、Chatterbot
以及微软的QnA maker
。
而Spacy
对我来说完美地进行了NER提取
,所以我正在寻找使用Spacy创建机器人的方法。但在提取实体之后,我不知道该如何继续进行。(恕我直言,我需要从用户查询中预测数据集中的确切问题(以及来自知识库
的答案))
我不知道应该使用哪种NLP算法/ML流程,或者是否有使用提取的NER创建FAQ机器人的更简单的方法。
回答:
实现你的FAQ机器人的一种方法是将问题转化为分类问题。你有问题,而答案可以作为“标签”。我猜测你总是有多个训练问题映射到同一个答案。你可以对每个答案进行编码,以便获得较小的标签(例如,你可以将答案的文本映射到一个id)。然后,你可以使用你的训练数据(问题)和标签(编码后的答案)来训练一个分类器。训练后,你的分类器可以预测未见过的问题的标签。当然,这是一种监督方法,所以你需要从你的训练句子(问题)中提取特征。在这种情况下,你可以使用词袋表示作为特征,甚至可以包括命名实体。这里有一个在spacy中进行文本分类的示例:https://www.dataquest.io/blog/tutorial-text-classification-in-python-using-spacy/