判断句子是否为问题的机器学习算法
我有一个表单,用户应该用它来提问寻求支持。不过我们发现,很多人其实是在用这个表单提交反馈或者更新他们记录中的信息。
我想要把所有记录都过一遍,把问题和反馈或声明分开(假设反馈和声明不是问题)。
有没有人知道有什么好的预训练模型或者方法可以用来解决这个问题?
我最开始想用Spacy来找一些关键词(比如“怎么”、“哪里”、“什么时候”、“为什么”)或者问号“?”来识别问题,但我意识到,有些问题的表达方式并不是标准的提问格式(例如:“我能要一份文件A的副本吗?”)。我去HuggingFace看了一些文本分析模型,但没找到能很好处理这种情况的模型。
1 个回答
1
硬规则方法
你可以使用NLTK的词性标注功能。通过创建一些硬性规则来识别与问题相关的模式。
import nltk
nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
from nltk.tokenize import word_tokenize
from nltk import pos_tag
text = "could I please have a copy of file A."
# Tokenization
tokens = word_tokenize(text)
pos_tags = pos_tag(tokens)
tags_only = [tag[1] for tag in pos_tags]
仅标签:
['MD', 'PRP', 'VB', 'VB', 'DT', 'NN', 'IN', 'NN', 'NNP', '.']
像'MD', 'PRP', 'VB'
这样的序列总是可以和问题联系在一起。
再加上用正则表达式检查是否出现了"how", "where", "when", "why", "wondering"
或者"?"
,可能就能解决问题了。
聚类方法
不过,你也可以对你的文本进行简单的聚类,以识别不同类型的内容。在这种方法中,你可以进行两种不同的聚类:
- 对文本本身进行基本聚类
- 进行词性标注聚类,以为你的文本添加更多信息