【问题标题】:scikit learn classify irrelevant(out of domain) datascikit learn 对无关(域外)数据进行分类
【发布时间】:2014-10-27 19:51:30
【问题描述】:

我已经使用 MultinomialNB 使用 20 个域训练了我的分类器。

分类器对 20 个经过训练的数据集运行良好。

但问题是,假设我使用 20 个域中的文本进行查询,即使它对该文本进行了分类。我预计域外输入的概率为 0。

例如

查询:'核心 i7 是英特尔处理器'

我已经使用域 religionsportsastronomy 域训练了数据。

查询不属于这些域中的任何一个,即使它为任何域提供 33% 的结果。

同样 Query : 'where is what',也归入上述领域。

如何为属于域外的查询显示 0 结果?或任何 scikit 函数,它给出了域外的概率余量?

还有什么方法可以在查询中查看stopwords 的边距?

【问题讨论】:

  • 您可以使用置信度阈值。例如,您可以说,如果没有一个查询至少占 50% 的域,那么它是未定义的。
  • @AdrienNK:谢谢亲爱的,但如果可能的话,我正在寻找更好的解决方案

标签: machine-learning scikit-learn classification bayesian


【解决方案1】:

如果你训练区分 3 个标签,那么每个输入都会得到这三个标签之一。

您可以为“所有不能归类为宗教、体育、天文学的事物”训练一个附加标签。

然后您可以将该标签用作“检测到域外”。

【讨论】:

  • 谢谢,但是因为我有 20 个域并且拥有属于这些域的数据集。获取不属于这 20 个域的数据是不可行的 :)
  • 有没有分类停用词的数据集?
  • 如果您训练分类器,通常该分类器将根据您输入的预测(条件)概率进行分类。您可以通过实验找出该概率的阈值。即使课程是所有课程中最好的,您也不接受低于此标准。这使您可以免费“归类为域外”,但当然设置这样的阈值是有风险的,必须谨慎行事。
  • 停用词通常只是被忽略的单词列表,因为它们是没有语义内容的常用功能词。您可以在线查找停用词列表,例如此处link-assistant.com/seo-stop-words.html 和此处semantikoz.com/blog/free-stop-word-lists-in-23-languages
  • @peschü:是的,设置门槛我真的不喜欢。感谢您的停止,我尝试忽略所有停用词,但即使它将 what is where 之类的查询分类到特定域
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 2015-07-05
  • 2017-08-08
  • 2016-05-16
  • 2018-01-27
  • 1970-01-01
  • 2012-11-24
  • 2014-10-28
相关资源
最近更新 更多