在发布这个问题之前,我花了一整天的时间阅读 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"}
我的查询可能与手机、笔记本电脑等有关,并且可能特定于特定型号,也可能不特定。例如,它可能是“最好买什么手机”
这是我计划做的事情,但如果你们认为有更好的方法,我希望得到一些反馈或建议 第一阶段 清理文本、标记、删除停用词 第二阶段 从这句话中提取类别、品牌、型号、产品线。我相信我需要一个包含所有这些信息的某种数据库,并且我只需与句子中的品牌名称进行模糊匹配。不知道如何以最有效的方式做到这一点。
一种方法是扫描可能有 1000 个模型的完整数据库,然后获取句子并检查品牌词是否存在。我相信这必须是模糊搜索,以防万一该人写的是 i-Ball 而不是 iBall
第三阶段 玫瑰金、16GB内存等特征提取。我应该在这里使用正则表达式还是有更复杂的方法来提取此类信息。
我想到的一种方法是从输入句子中提取一元词、二元词和三元词,然后以模糊方式将其与产品规范进行比较。记录链接库怎么样?
第四阶段
如何去掉句子中所有多余的垃圾,例如产品名称和功能,并将其分类为折扣或价格范围或评论类型查询?我假设当句子中没有填充产品信息时分类器可以很好地工作,否则分类器将需要巨大的训练集。
第 5 阶段 我如何知道何时展示特定产品以及何时展示通用产品。例如,上面关于 iPhone 的查询是非常具体的,而如果我询问最好的手机,它是一个通用的手机。我应该使用朴素贝叶斯分类器还是逻辑回归。
终极问题 实现此类实现的最佳方法是什么 NLTK + Scikitlearn TF学习 TensorFlow
我假设神经网络只会接受数字并输出数字。这是否意味着我必须将输入转换为向量表示。
感谢您提前提出的建议。
最佳答案
如果您刚刚开始,我的建议是不要担心 Tensorflow。您可以将 sklearn 与朴素贝叶斯等内置分类器一起使用。有一些教程将向您展示如何从文本获取数字向量并将其输入分类器以获得预测标签。
如果您正在处理的分类问题与主题或意图有很大关系,那么一元统计数据会非常有效。您可以从仅使用一元词开始,如果这不能让您到达需要的位置,那么尝试连接多词表达式来进行输入,例如“iPhone_6S可能是rose_gold,内存为16_GB”
关于machine-learning - 在这种情况下,从自然语言输入中提取意图的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40245769/