我正在使用Enron 语料库开发诉讼支持应用程序,其中包含大约 600,000 个独特的文本文档。
在诉讼中,人们经常关心一份文件是响应性的还是非响应性的。一个人向对方提供响应文件,除非它们是特权的(例如,律师客户通信)。
在这里,我有 200 多个响应式和非响应式文档的样本集。
这里的挑战是响应式文档的主题是关于一件事,而非响应式文档可能涉及任意数量的主题,从垃圾邮件到足球练习,再到商业文档等。非响应式文档是什么我会称之为稀释。
我不知道那些无响应的类是什么,预先打破它们没有任何目的或价值。如果文档没有响应,则需要快速(且廉价地)将其关闭。
如果在将分类应用于语料库时样本是随机的,我的客户希望语料库响应和非响应之间的拆分接近样本的拆分。
在这种情况下,区分响应与非响应的最佳方法是什么?
下面我简要描述一下我所尝试的。如果有更好的方法,请分享。
- 使用 tf-idf,为每个文档类(响应式和非响应式)创建一个平均向量。
- 取前 1000 个项(按权重排序),使每个向量的长度相同。
标准化向量。
注意:这两个向量彼此之间的余弦相似度仅为 0.03。对于响应样本集中的每个文档,计算与单个平均向量的余弦相似度。
注:平均值为 0.06。这是一个很小的数字,因为样本集中的文档大约有 40 个术语,而平均向量为 1000。在非响应中执行相同的分析(将每个非响应样本文档与非响应平均向量进行比较)。
在无响应的情况下,相同的比较是 0.03。基本上,非响应平均向量被稀释了。
基于这种方法,我无法真正得出结论,与非响应相比,文档与响应的余弦相似度是否更高,那么它是响应的。通过该测量,非响应样本集中 1/3 的文档将被归类为响应。
没有反应的人需要有障碍。在这种方法中,我该如何设置它?是否有另一种方法可以完成同样的事情?