如何估计文本的不同类别的概率

数据挖掘 nlp 文本挖掘 可能性
2022-02-25 04:25:12

假设我有一篇文章,我想根据其内容将概率分配给不同的流派(类)。例如

文字#1:喜剧 10%,戏剧 50%,小说 20%,浪漫 1%,神话 5%,冒险 10%

文本#2:喜剧 40%,戏剧 3%,小说 2%,浪漫 30%,神话 5%,冒险 10%

我们在每个类别中都给出了关键字,可能是 ngram,我们通过这些关键字进行比较

1 类喜剧:k11, k12, ..., k1m

2级戏剧:k21,k22,...,k2n

第 3 类小说:k31、k32、...、k3o

4级浪漫:k41,k42,...,k4p

5级神话:k51,k52,...,k5q

6 级冒险:k61、k62、...、k6r

我们可以用于此任务的最佳概率模型是什么

1个回答

如果我理解正确,我们对软多标签分类感兴趣,其中单个文本可以有多个正确的流派。

根据您的评论,我们没有任何训练数据,只有与每种类型相关的关键字列表。

我们可以尝试计算每个文档和每个关键字列表之间的相似度:

  1. 规范化文档(转换为小写,删除标点符号、变音符号、非字母数字等)
  2. 删除停用词
  3. 在我们的流派关键字词汇表上将文档转换为tf-idf向量:每个文档都有一个长度为 n 的向量,其中每个条目是文档中第 i 个流派关键字的频率。将此向量归一化为幅度 1。
  4. 以相同的方式将每个流派关键字列表转换为 tf-idf 向量(再次针对所有流派的关键字词汇表)。
  5. 计算文档向量和每个类型向量之间的余弦相似度。

对于每个文档,这将为我们提供每个类型的 [0,1] 范围内的数字。例如:

         Comedy Drama Fiction Romance Mythology Adventure
Text #1: 0.15   0.11  0.03    0.00    0.00      0.07

如果我们进行单标签分类,我们可以将每一行归一化为加起来为 1,我们可能会有一个工作模型。然而,这里没有多标签分类的技巧。我们没有将这些值校准为概率估计的好方法。

在这一点上,我看到的唯一解决方案是构建一个小型训练集,以便我们可以将我们的模型拟合到实际数据中。

在收集了一些训练示例之后,我们可以使用sigmoid 激活和二元交叉熵损失运行多标签回归,并将余弦相似度作为输入特征,以获得每个类的概率估计。

使用这种方法,我们的流派关键字列表至少可以避免我们构建一个大型训练集来直接使用词袋或类似方法解决问题。