【问题标题】:Naive Bayes classifier extractive summary朴素贝叶斯分类器抽取总结
【发布时间】:2017-08-30 05:09:57
【问题描述】:

我正在尝试训练一个朴素贝叶斯分类器,但我遇到了数据问题。我打算用它来提取文本摘要。

Example_Input: It was a sunny day. The weather was nice and the birds were singing.
Example_Output: The weather was nice and the birds were singing.

我有一个我打算使用的数据集,并且在每个文档中至少有 1 个句子用于摘要。

我决定使用 sklearn,但我不知道如何表示我拥有的数据。即X和y。

from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB().fit(X, y)

最接近我的想法是把它做成这样:

X = [
        'It was a sunny day. The weather was nice and the birds were singing.',
        'I like trains. Hi, again.'
    ]

y = [
        [0,1],
        [1,0]
    ]

其中目标值表示 1 - 包含在摘要中,0 - 不包含。不幸的是,这会产生不良形状异常,因为 y 预计是一维数组。我想不出一种表示它的方式,所以请帮忙。

顺便说一句,我不直接使用X 中的字符串值,而是使用来自sklearn 的CountVectorizerTfidfTransformer 将它们表示为向量。

【问题讨论】:

    标签: python machine-learning scikit-learn naivebayes


    【解决方案1】:

    根据您的要求,您正在对数据进行分类。这意味着,您需要将每个句子分开来预测它的类别。

    例如:
    而不是使用:

    X = [
            'It was a sunny day. The weather was nice and the birds were singing.',
            'I like trains. Hi, again.'
        ]
    

    如下使用:

    X = [
            'It was a sunny day.',
            'The weather was nice and the birds were singing.',
            'I like trains.',
            'Hi, again.'
        ]
    

    使用 NLTK 的句子分词器来实现。

    现在,对于标签,使用两个类别。假设 1 表示是,0 表示否。

    y = [
            [0,],
            [1,],
            [1,],
            [0,]
        ]
    

    现在,使用这些数据来拟合和预测您想要的方式!

    希望对你有帮助!

    【讨论】:

    • 感谢您的回答。它会起作用,而且肯定比我的要好,但是这样分类器就不会考虑句子在文档中的位置,因为所有内容都将被视为一个。有没有办法我也可以包含它。
    • @nikola 将多行句子作为输入,并使用 nltk 句子标记器将其拆分并预测每个句子,但仅将那些预测为 1 类的句子打印到输出,即是
    猜你喜欢
    • 2017-01-10
    • 2015-08-27
    • 2018-02-06
    • 2012-07-02
    • 2018-07-17
    • 2015-06-25
    • 2014-09-18
    • 2012-02-11
    相关资源
    最近更新 更多