给定用户的评论/反馈,如何收集有关看不见的错误的信息?

数据挖掘 Python nlp 数据清理
2022-02-11 23:13:46

我有一个看起来像这样的数据框:

user_id, comment
0, 'Functional but Horrible UI'
1, 'Great everything works well'
2, 'I struggled finding plus button because of theme colors in dark mode'
3, 'Keeps stopping on Android 10'
4, 'I like the functionaity but color theme could be better'
5, 'Consistently crashing. Uninstalled'
6, 'Good overall'
7, 'sfdfsdlfksd'
8, 'I lost in complex settings'
9, 'Configuring app is really a headache'
10, 'aaaaaaaaaaaaa'

我想找出一些数据科学方法来提取有关用户正在努力解决的问题以及出现了多少问题以及诸如此类的东西的信息。即使是一些简单的输出对我也有好处,这样我们就知道应该更多地关注应用程序的哪些部分。就像上面的示例一样,我的目标是简单的输出:

problems = {
'color_theme': 3,
'app_settings': 2,
'crashing' : 2}

所以我有点想要标签,以及根据评论所属的标签出现标签的时间。但问题是我无法训练带有预定义标签的模型,因为:

  1. 我没有评论标签。如果我们必须通过每一次审查来了解它在谈论什么问题(即给它贴上标签),我们就会把它也归档并知道我们必须做什么。

  2. 我事先不知道将来会出现什么问题,所以即使我们在某个时间点以某种方式标记所有问题,这也是不够的,因为可能会出现一些看不见的问题,我们必须再做一次。

  3. 即使我们以某种方式有一个标签系统,我们将如何更新模型,就像我们为不断变化的标签定义一个具有不同架构的新模型一样?

所以在这种情况下,我试图找出一种人工智能方法来缓解我的情况。我非常擅长 python,并且确实具有 keras/tensorflow 和其他库的工作知识,但它们似乎都没有如此灵活的模型方法。我也在使用 Google Cloud Platform 的 AI 平台,但它可以在一定程度上进行情绪分析,但在应用程序上下文中不理解,例如按钮也是 UI 和颜色的一部分。那么我怎样才能以更优雅的方式解决这个问题呢?

2个回答

听起来您正在寻找一种无监督学习方法(这意味着您不需要手动标记数据)。

k-means 聚类这样的东西可以很好地工作。这将允许您将您的评论分组到 k 个不同的集群中。然后,您可以查看这些集群中的评论计数并探索这些集群以确定它们的含义。

为了执行聚类,您需要将数据从文本转换为数值向量空间。一种常见的方法是tf-idf,但您可能会发现其他方法效果更好。

既然你提到了 Python,k-means 和 tf-idf 都可以使用 sklearn 完成:

在 Kaggle 上有一个使用 tf-idf 进行 k-means 聚类的非常好的示例

您可以使用任何标准的英语语言嵌入。然后,您可以根据情绪对其进行分类,并保留带有负面情绪的人。然后,您需要提取情绪并进行主题建模以提取主题。

'配置应用程序真的很头疼'然后可以分解为:

  • 负面情绪
  • 带着情绪的词——头痛
  • 主题 -应用配置

然后,您可以尝试基于主题进行聚类并提出最佳建议。有很好的主题建模库,Attention 可以用来突出带有情感的单词。

所有这些都将完全不受监督,并且可以在线模式下运行。

“标记”数据也可以是另一种方法。您强调的 3 个标签问题是可以克服的。您可以将初始集标记为 1 次活动。如果您的标记数据足够不同,它应该优雅地将后续问题分类或分离到其中一个标签中。如果没有一个标签非常适合,那么可以标记该数据以进行手动分类。你会很快涵盖大部分场景