【问题标题】:Document classification with incomplete training set训练集不完整的文档分类
【发布时间】:2012-06-29 22:10:08
【问题描述】:

请指教。我有一个文档集合,它们都有一个共同的属性(例如出现了法语这个词),其中一些文档已被标记为与该集合无关(例如出现法语之吻),但并非所有文档都保证已被识别。找出哪些其他文档不属于的最佳方法是什么。

【问题讨论】:

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


    【解决方案1】:

    假设

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

    • 注意:虽然 词义消歧 (WSD) 方法会起作用,但它们需要太多的努力,而且为此目的有点过头了。

    建议:本地化语言模型+引导

    这样想:您没有不完整的训练集,而是较小的训练集。这个想法是使用这个小的训练数据来构建更大的训练数据。这是引导

    对于训练数据中出现的每个特征,仅基于其周围的词构建语言模型。您不需要为整个文档构建模型。理想情况下,仅包含该特征的句子就足够了。这就是我所说的本地化语言模型 (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 需要通过对一些 held-out 数据(也称为 development 数据)的实验来确定。李>
    • 对小样本进行手动重新分类,这样引导过程中的噪声不会在所有 N 次迭代中累积。

    【讨论】:

      【解决方案2】:
      1. 首先,您应该注意如何提取示例文档的特征。数每个字不是一个好方法。您可能需要一些像 TFIDF 这样的技术来教分类器哪些词对分类很重要,哪些词不重要。

      2. 建立正确的字典。在您的情况下,单词 French Kiss 应该是一个独特的单词,而不是 French + Kiss 的序列。使用正确的技术来构建正确的字典很重要。

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

      【讨论】:

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

        【讨论】:

        • 我不同意。单层 Rosenblatt 感知器对非线性可分数据集表现出非常差的性能。
        猜你喜欢
        • 1970-01-01
        • 2017-12-12
        • 1970-01-01
        • 1970-01-01
        • 2017-07-17
        • 2014-10-03
        • 2016-04-04
        • 2016-01-25
        • 2013-02-14
        相关资源
        最近更新 更多