一类是另一类时的分类

数据挖掘 分类
2022-02-19 15:56:57

我正在使用Enron 语料库开发诉讼支持应用程序,其中包含大约 600,000 个独特的文本文档。

在诉讼中,人们经常关心一份文件是响应性的还是非响应性的。一个人向对方提供响应文件,除非它们是特权的(例如,律师客户通信)。

在这里,我有 200 多个响应式和非响应式文档的样本集。

这里的挑战是响应式文档的主题是关于一件事,而非响应式文档可能涉及任意数量的主题,从垃圾邮件到足球练习,再到商业文档等。非响应式文档是什么我会称之为稀释

我不知道那些无响应的类是什么,预先打破它们没有任何目的或价值。如果文档没有响应,则需要快速(且廉价地)将其关闭。

如果在将分类应用于语料库时样本是随机的,我的客户希望语料库响应和非响应之间的拆分接近样本的拆分。

在这种情况下,区分响应与非响应的最佳方法是什么?

下面我简要描述一下我所尝试的。如果有更好的方法,请分享。

  1. 使用 tf-idf,为每个文档类(响应式和非响应式)创建一个平均向量。
  2. 取前 1000 个项(按权重排序),使每个向量的长度相同。
  3. 标准化向量。
    注意:这两个向量彼此之间的余弦相似度仅为 0.03。

  4. 对于响应样本集中的每个文档,计算与单个平均向量的余弦相似度。
    注:平均值为 0.06。这是一个很小的数字,因为样本集中的文档大约有 40 个术语,而平均向量为 1000。

  5. 在非响应中执行相同的分析(将每个非响应样本文档与非响应平均向量进行比较)。
    在无响应的情况下,相同的比较是 0.03。基本上,非响应平均向量被稀释了。

基于这种方法,我无法真正得出结论,与非响应相比,文档与响应的余弦相似度是否更高,那么它是响应的。通过该测量,非响应样本集中 1/3 的文档将被归类为响应。

没有反应的人需要有障碍。在这种方法中,我该如何设置它?是否有另一种方法可以完成同样的事情?

2个回答

作为第一步,您应该尝试对 tf-idf 向量进行逻辑回归它实施起来很简单,并且可以提供一个很好的比较基准。您可以找到您使用的任何语言的实现。您还可以尝试某种(可能是有监督的)主题建模来创建更好的特征空间,但这会涉及更多。

这更像是我所做的,然后是对所述问题的回答。

我还想要一个等级。显然,0.9 对 0.1 的相似度比 0.5 对 0.4 的排名更高。我的问题是 0.43 无响应是与 0.45 响应实际上是无响应(其他)。

我为原始分数所做的是差异的调和平均值和比率的对数。我可以得到 0.35 对 0.20 和 0.1 对 0.01。使用比率的对数似乎可以使绝对差异与相对差异更加均匀。然后调和平均值使较大的数字不再占主导地位。

然后我按照样本集的确切比例进行排序,并将其用作偏移量,因此不知道得分为 0。

这个排名似乎是有效的0,因为在查看样本集与样本集分类时,排名前 1/2 的错误为零。中间的东西错误最多。