文本对话分类

数据挖掘 分类 nlp
2021-10-12 13:13:37

我正在尝试选择一种对会话文本进行分类的技术。我担心在每个单独消息的保真度级别上处理问题,因为人们经常说诸如“好的”或没有可推断意义的简短回复之类的话。典型的对话分类如何处理这些类型的问题?

详细地说,对话可能是:

P1: Hi I want to buy a car?
P2: Ok. Great!
P1: What cars do you have?
P2: A large variety!

主题是汽车,但这不能从 P2 所说的任何内容中推断出来,也不应该如此。那么,您会将对话分成多个时间段,还是有一种划分技术?

4个回答

有多种技术可以帮助您解决所描绘的问题,其适用性通常取决于分类技术和语料库。但我明白一些实际例子会帮助你。所以让我们来看看其中的一些。如果我涉足熟悉的领域,或者您希望我详细说明其中一些,请随时发表评论。或者从哪里开始试验它们

  • 停止一个简单的技术是应用一个停止列表:应该删除的常用词列表。有预先打包的列表,但大多数包允许您提供自己的。
  • TF/IDF一种技术,通过按词频(它们在文档中出现的频率)除以文档频率(单词在其他文档中出现的频率)来衡量词的权重,从而转换特征。这种方式使频繁词的相关性降低到文件
  • POS许多软件包为您提供了一个部分句子标记器,它将通过它们的语法功能(例如动词)标记单词。您可以在标记化步骤中利用它来过滤掉单词(通常您会寻找动词和名词)。一些矢量化器可以直接做到这一点。(这也可以用NER来完成)
  • 词干将词的变化(例如:train/trains)转换为词干。这可能会使你的一些词更有相关性,因为它们会增加一对词发生碰撞的机会
  • 限制你的矢量化器:大多数包都有一个矢量化器,你可以指示它寻找最小/最大文档数(忽略出现在许多不同文档或不同文档中的单词),或者限制特征数量(字)。限制词的数量通常选择最常用的词。
  • 将基于词/标记的特征编码为更多语义特征:Word2Vec,以及 LDA/LSI 等较旧的技术。
  • 选择分类算法:一些算法非常有能力处理大型特征空间(例如朴素贝叶斯),一些算法学习转换特征空间以找到更好的方法来衡量特征。

Sklearn、NLTK 和 Gensim 等软件包提供了这些技术中的大部分。

让我知道这是否有帮助

谈话的主题应该在谈话中用一个词来表达。因此,不要让您的模型从一堆不同的字符组合中猜测,而是尝试训练您的模型来猜测对话中的哪个词是主题。您可能不应该插入 P1,P2,... 的东西,因为说话的人不相关。

这个问题不必使用 ML 来解决,因为已经有一个传统的解决方案。检查此链接:https ://github.com/vgrabovets/multi_rake

这是一个自然语言处理问题,有很多工具可以解决这个问题,包括上下文中的关键字、词性识别、停用词、标记化等。例如,参见 Python 中的 NLTK 包。要记住的关键是,我们正在发展不符合正式书面英语惯例的非正式写作方言(电子邮件、短信等),这意味着某些工具可能需要针对每个语料库进行调整。

为时已晚,但这里有一个示例,说明如何在具有特殊神经网络架构的 keras 中执行此操作。