请咨询。我有一组所有共享属性的文件(例如,出现了法语单词)这些文件中的一些已被标记为与此集合无关(例如,出现法国吻),但并非所有文件都被保证已被识别。用什么来确定哪些其他文件不属于哪种方法的最佳方法。
答案 0 :(得分:0)
首先,你应该关注如何提取示例文档的功能。计算每个单词都不是一个好方法。您可能需要一些像TFIDF这样的技术来教授分类器哪些单词对分类很重要而哪些不重要。
构建正确的词典。在你的情况下,法语吻这个词应该是一个独特的单词,而不是一系列法语+吻。使用正确的技术来构建正确的字典非常重要。
样本中的遗留错误是正常的,我们称之为“非线性可分离”。关于如何解决这个问题,有大量的高级研究。例如, SVM (支持向量机)将是您想要使用的。请注意,单层Rosenblatt感知器通常对数据集表现出非常差的性能,这些性能不是线性可分的。
答案 1 :(得分:0)
鉴于您的示例“法语”,我将假设该功能是文档中出现的单词。另外,既然你提到“法式吻”是不相关的,我将进一步假设在你的情况下,一个特征是一个特定意义上使用的词。例如,如果“泳池”是一个功能,你可能会说提到游泳池的文件是相关的,但那些谈论游泳池(这项运动,如斯诺克台球或台球)是不相关的。
以这种方式思考:你没有一套不完整的训练集,而是一套较小的训练集。这个想法是使用这个小的训练数据来构建更大的训练数据。这是 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
答案 2 :(得分:-1)