具有不完整训练集的文档分类

时间:2012-06-28 11:39:17

标签: artificial-intelligence neural-network document-classification

请咨询。我有一组所有共享属性的文件(例如,出现了法语单词)这些文件中的一些已被标记为与此集合无关(例如,出现法国吻),但并非所有文件都被保证已被识别。用什么来确定哪些其他文件不属于哪种方法的最佳方法。

3 个答案:

答案 0 :(得分:0)

  1. 首先,你应该关注如何提取示例文档的功能。计算每个单词都不是一个好方法。您可能需要一些像TFIDF这样的技术来教授分类器哪些单词对分类很重要而哪些不重要。

  2. 构建正确的词典。在你的情况下,法语吻这个词应该是一个独特的单词,而不是一系列法语+吻。使用正确的技术来构建正确的字典非常重要。

  3. 样本中的遗留错误是正常的,我们称之为“非线性可分离”。关于如何解决这个问题,有大量的高级研究。例如, SVM (支持向量机)将是您想要使用的。请注意,单层Rosenblatt感知器通常对数据集表现出非常差的性能,这些性能不是线性可分的。

答案 1 :(得分:0)

假设

鉴于您的示例“法语”,我将假设该功能是文档中出现的单词。另外,既然你提到“法式吻”是不相关的,我将进一步假设在你的情况下,一个特征是一个特定意义上使用的词。例如,如果“泳池”是一个功能,你可能会说提到游泳池的文件是相关的,但那些谈论游泳池(这项运动,如斯诺克台球或台球)是不相关的。

  • 注意:虽然字义消歧(WSD)方法可行,但它们需要付出太多努力,并且为此目的而言过于苛刻。

建议:本地化语言模型+ bootstrapping

以这种方式思考:你没有一套不完整的训练集,而是一套较小的训练集。这个想法是使用这个小的训练数据来构建更大的训练数据。这是 bootstrapping

对于训练数据中每次出现的要素,仅根据周围的单词构建语言模型。您不需要为整个文档构建模型。理想情况下,只需包含该功能的句子就足够了。这就是我所说的 本地化语言模型 (LLM)。

从训练数据中构建两个这样的LLM(我们称之为T_0):一个用于相关文档,比如M1,另一个用于不相关的文档,比如说M0。现在,为了构建更大的训练数据,基于M1和M0对文档进行分类。对于每个新文档 d ,如果 d 不包含要素词,则会自动将其添加为“错误”文档。如果 d 包含要素词,则考虑 d 中与该词相关的本地窗口(与用于构建LLM的窗口大小相同),并计算困惑度这个词序列与M0和M1。将文档归类为属于较低困惑的类。

要形式化,伪代码是:

T_0 := initial training set (consisting of relevant/irrelevant documents)
D0 := additional data to be bootstrapped
N := iterations for bootstrapping

for i = 0 to N-1
  T_i+1 := empty training set
  Build M0 and M1 as discussed above using a window-size w
  for d in D0
    if feature-word not in d
    then add d to irrelevant documents of T_i+1
    else
      compute perplexity scores P0 and P1 corresponding to M0 and M1 using
      window size w around the feature-word in d.
      if P0 < P1 - delta
        add d to irrelevant documents of T_i+1
      else if P1 < P0 - delta
        add d to relevant documents of T_i+1
      else
        do not use d in T_i+1
      end
    end
  end
  Select a small random sample from relevant and irrelevant documents in
  T_i+1, and (re)classify them manually if required.
end
  • T_N是您的最终训练集。在上面的引导中,参数 delta 需要通过对一些保持数据(也称为开发数据)的实验来确定。
  • 对小样本进行手动重新分类,以便在此引导期间的噪声不会通过所有 N 迭代累积。

答案 2 :(得分:-1)

  1. 某些类型的神经网络(如Rosenblatt perceptron)可以在错误的数据集上进行教育,并且可以显示比tranier更好的性能。此外,在许多情况下,您应该犯错误以避免过度训练。
  2. 您可以随机标记所有未标记的文档,训练几个网并估计它们在测试集上的性能(当然,您不应在测试集中包含未标记的文档)。之后,您可以循环重新计算未标记文档的权重,如w_i =质量总和(j)* w_ij,然后重复训练并重新计算权重等。由于程序相当于引入新的隐藏层并通过Hebb程序重新计算权重,如果在一些网络特征空间中正负集合是线性可分的,则整个过程应该收敛。