使用自然语言处理进行查询 [PYTHON]

3
我正在处理一个项目,需要从文本中提取“输入”和“查询意图”。
例如,“资产X26TH的状态是什么?”
在这种情况下,主要问题是提取资产ID,即X26TH,但是如何让我的代码理解它是一个ID呢?
另一件事是了解查询意图,这是资产状态。我发现了一个很好的库quepy,但它是为Linux设计的,我无法在Windows上设置它。
请帮我解决技术和库相关的问题。

你使用过POS标记吗?试试Spacy POS标记,然后找出它的主语。 - Himanshu Kriplani
1个回答

2
所以你有两个问题,ID提取意图检测

ID提取

如果您的ID遵循规律,并且看起来肯定不像英语,那么您可以使用正则表达式捕获它们-如果可能,那非常好,因为这很容易做到。如果您有一个固定的产品ID列表,请检查其中是否有任何输入。如果以上两种方法都不起作用,则必须变得更加复杂。

您能让用户记住一些语法吗?如果您可以请求他们使用类似于id:X26TH的前缀编写内容,那么您的工作将变得更加容易。您可能会发现Plan9中的plumber的工作方式很有启发性。

如果您需要处理用户提交的任何内容,则应考虑使用序列标注器命名实体识别(NER)系统获取ID。 CRF可能非常适合此任务;这里是一个很好的技术介绍,纽约时报也成功地使用了其中的一个。除了需要更复杂的设置外,这种方法的缺点是需要训练数据,但确实没有避免的方法。


意图检测

通常将其建模为文本分类问题。您可以在此处找到如何做到这一点的概述。以下是文章中的一些培训示例:

training_data.append({"class":"greeting", "sentence":"how are you?"})
training_data.append({"class":"greeting", "sentence":"how is your day?"})
training_data.append({"class":"greeting", "sentence":"good day"})
training_data.append({"class":"greeting", "sentence":"how is it going today?"})

training_data.append({"class":"goodbye", "sentence":"have a nice day"})
training_data.append({"class":"goodbye", "sentence":"see you later"})
training_data.append({"class":"goodbye", "sentence":"have a nice day"})
training_data.append({"class":"goodbye", "sentence":"talk to you soon"})

training_data.append({"class":"sandwich", "sentence":"make me a sandwich"})
training_data.append({"class":"sandwich", "sentence":"can you make a sandwich?"})
training_data.append({"class":"sandwich", "sentence":"having a sandwich today?"})
training_data.append({"class":"sandwich", "sentence":"what's for lunch?"})

那篇博客文章真的很有帮助。谢谢。 - iitum studant

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