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

在发布这个问题之前,我花了一整天时间阅读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,然后以模糊的方式将其与产品规范进行比较.为此记录链接库怎么样?

第四阶段

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

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

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

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

提前感谢您的建议.

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

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

点赞