【问题标题】:Sklearn: How to add association rules to MultinomialNB for text classification?Sklearn:如何为MultinomialNB添加关联规则进行文本分类?
【发布时间】:2015-12-16 07:01:50
【问题描述】:

问题To classify the user product as banned or approved

如果产品包含诸如“濒危物种”、“虎皮等违禁词,将被标记为禁用>”等

  • 输入:产品的标题+描述
  • 相应的标签:批准/禁止

我使用 监督学习 算法MultinomialNB 对产品进行分类,它给出了 92% 的二元组准确率。

但是我有一个错误分类的问题,其中“虎皮”产品正在获得批准。原因是我们有很多“虎皮花岗岩/虎皮虾”产品被标记为批准。

为了解决这个问题,我想创建一些 规则 以及 MultinomialNB 算法,以改善这些错误分类。

规则应该是这样的:- 如果关键字“tiger”在附近的 3/4 字处也有花岗岩/虾,则将其标记/视为已批准。

请帮帮我。我该怎么做。

【问题讨论】:

    标签: machine-learning scikit-learn


    【解决方案1】:

    您可能想要尝试的一件事是使用另一种类型的分类器,例如GradientBoostedClassifier,它可以捕获变量之间的交互;这可能会解决您的问题。否则,您可以只使用正则表达式来实现您的自定义规则:

    import re
    if re.search(tiger (\w+ ){0,4}(prawn|granite),text):
       return 'allowed'
    

    【讨论】:

    • 对于 GradientBoostedClassifier:但是与决策树相比,朴素贝叶斯不是更适合文本分类吗?此外,由于 ipython 中的 python 内核不断死亡,它需要大量的时间和内存。是不是正则表达式方法会更加手动
    • 所以朴素贝叶斯适用于一些基本的文本分类问题,如垃圾邮件过滤,但当单词之间存在依赖关系时,它就不好了——你的案例完美地证明了这种限制。如果它占用太多内存,您可能应该在建模之前使用降维(例如 PCA 或 NMF)将特征数量限制在 500-1000 左右
    • 好的,谢谢 max,是的,目前我有大约 120 万个功能。我会根据您的建议尝试并回复您...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2018-02-11
    • 2018-11-04
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多