在这种情况下,从自然语言输入中提取意图的正确方法是什么?

时间:2016-10-25 17:06:51

标签: machine-learning nlp

在发布这个问题之前,我花了一整天的时间阅读机器学习和Stackoverflow上标签下的nlp。

我有以下表格的输入声明

"I am looking for an iPhone 6S possibly rose gold with 16 GB memory, what is the best deal that I can get on this"

这是我想要的那一行

{intent: "discount", brand: "Apple", productLine: "iPhone", model: "6S", color: "rose gold", memory: "16GB"}

我的查询可能是关于手机,笔记本电脑,任何东西,可能是也可能不是特定型号的具体信息。例如,它可能是“什么是最好买的手机”

这是我打算做的,但是如果你们认为有更好的方法可以做一些反馈或建议 第1阶段 清理文本,标记化,删除停用词 第2阶段 从这句话中提取类别,品牌,型号,产品系列。我相信我需要一个具有所有这些信息的某种数据库,我只需要与句子中的品牌名称进行模糊匹配。不知道如何以最有效的方式做到这一点。

一种方法是使用可能的1000个模型扫描整个数据库,然后取出句子并检查品牌词是否存在。我相信这必须是一个模糊的搜索,以防万一人写i-Ball而不是iBall

第3阶段 玫瑰金和16 GB内存等特征提取。我应该在这里使用正则表达式还是有更复杂的方法来提取这些信息。

我想到的一种方法是从输入句中提取unigrams,bigrams和trigrams,然后以模糊的方式将其与产品规范进行比较。那么记录链接库呢?

第4阶段

如何释放所有额外垃圾(如产品名称和功能)的句子,并将其分类为折扣或价格范围或评论类型查询?我假设当一个分类器里面没有产品信息时分类器很好用,否则分类器需要一个庞大的训练集。

第5阶段 我如何知道何时展示特定产品以及何时显示通用内容。例如,上面关于iPhone的查询是非常具体的,而如果我问的是最好的手机,它是一个通用的。我应该使用朴素贝叶斯分类器进行此逻辑回归。

终极问题 这种实施的最佳方式是什么? NLTK + Scikitlearn TFLearn TensorFlow

我假设神经网络只接受数字和输出数字。这是否意味着我必须将输入转换为矢量表示。

提前感谢您的建议。

1 个答案:

答案 0 :(得分:2)

如果你刚刚开始,我的建议是不要担心Tensorflow。你可以使用sklearn和内置的分类器,如朴素的贝叶斯。有一些教程将向您展示如何从文本到数字向量并将其输入分类器以获得预测标签。

如果您正在处理的分类问题与主题或意图有很大关系,那么unigram统计数据会非常有效。你可以从使用unigrams开始,如果那不是你需要的地方,那么尝试加入多字表达式来输入像#34; iPhone_6S可能是rose_gold和16_GB内存"