如何按主题对聊天消息进行分组?

数据挖掘 nlp
2022-03-03 16:45:51

我是这个领域的新手。20 多年以来的开发人员,但从未用 ML、DL 和 NLP 做过任何事情(教程除外)。虽然我已经阅读了大量关于这项技术的文章和教程,但我开始弄清楚使其工作所需的步骤和条件。

我想要实现的(我的问题的原因)是这样的:

我有一个文件,其中包含我和另一个人之间大约 2 年的对话。我想提取与同一主题相关的消息序列。我的意思是消息在时间上是连续的,并且属于关于某个主题的同一对话。

我的目标是提取我们花在每个主题上的时间。

有没有为这项任务训练过的模型?(这当然是显而易见的问题:-P)

或者,有什么模型可以作为开始训练的基础吗?

或者,如果没有,我自己训练一个人的好方法(步骤、技术、软件)应该是什么?(如果可能的话)。

谢谢

更新

感谢 Erwan 的回应,我做了更多的研究。我不确定 Erwan 的答案是否可以被认为是一个明确的答案,但毫无疑问,它为我指明了一个可能的研究方向“消除我眼前的部分迷雾”。因为,在我的情况下,我没有标记数据集来训练监督模型,所以我开始搜索 LDA 解决方案(正如你隐含的建议,也基于我发现的几个教程)并找到了一些:gensimLDA 模型并行化LDA模型lda-项目我还发现了一个 Java 实现,它是MALLET LDA 类ecc ...

我也开始浏览诸如 Word2Vec、FastText(和家庭——我猜)之类的论点,即使我不确定这些软件与 LDA 相比的目的是什么,可能是因为我对 LDA 的信息没有清晰和完整的看法与其他模型相比,模型可以“捕获”。

虽然第一步是找到一个“本地”支持意大利语的软件,但我发现spaCy是一个提供词形还原、标记化、ecc 的工具......并且似乎有为其他主题检测软件准备文本的目的(即使它似乎它有自己的类,按名称猜测,TextCategorizer即使由于缺乏完整的文档和示例,我无法弄清楚如何使用它)。

所以我的猜测是我可以使用 spaCy 准备要输入到 gensim 的 LDA(或任何其他实现)的文本。

对于数据可视化,我找到了 pyLDAvis

1个回答

此问题与以下标准问题有关:

  • 主题分类/建模,范围从简单的监督文档分类到无监督分配主题分布到每个文档(高级选项,带有潜在狄利克雷分析和变体)
  • 序列标签,一种监督任务,它预测序列中每个实例的类,同时考虑到实例的顺序(例如,它可以利用实例的类n受实例类别的影响n1)。
  • 文本分割,在这种情况下更准确地说是主题分割。

我认为对于前两个问题,可以找到很多很好的实现,这很常见。但是,根据您的情况调整这些和/或组合它们可能会更复杂。

如果您有一小部分主题,并且您拥有(或可以拥有)用这些主题注释的合理消息样本,我建议从使用条件随机字段的序列标签开始。鉴于聊天对话的顺序性,我认为这可能会产生良好的效果。