0

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

4

3 回答 3

0

假设

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

  • 注意:虽然词义消歧(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需要通过对一些保留数据(也称为开发数据)的实验来确定。
  • 对小样本进行手动重新分类,这样引导过程中的噪声不会在所有N次迭代中累积。
于 2012-07-04T09:06:54.400 回答
0
  1. 首先,您应该注意如何提取示例文档的特征。数每个字不是一个好方法。您可能需要一些像 TFIDF 这样的技术来教分类器哪些词对分类很重要,哪些词不重要。

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

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

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