gpt4 book ai didi

python - 如何将 BOW 以外的功能添加到 scikit-learn 分类模型

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:33 25 4
gpt4 key购买 nike

我正在尝试构建文本分类模型。我的目标是将 10000 个文档中的每个段落分类为是否包含有关“罢工事件”的信息。

首先,我按照基本的预处理步骤将段落转换为术语文档矩阵 (CountVectorizer)。然后将这个矩阵输入到scikit-learn提供的逻辑回归、svm等模型中。

但是,我发现预训练的 LDA 模型给出的关于文档主题的信息将有助于段落级别的文本分类。

因此,我还想为每个文本提供主题信息以及 BOW 信息。

按照对 similar 的回答问题,我认为只需在术语文档矩阵的最后一列添加主题编号即可。

例如,假设“text_train”是我的训练语料库(比如 40000 个段落),“topic”是 LDA 模型赋予每个段落的主题编号列表。

vectorizer = CountVectorizer(ngram_range=(1,3))
X = vectorizer.fit_transform(text_train)
X.toarray() #shape (40000, 643898)
topic = coo_matrix([topic]).T #shape (40000, 1)
hstack([X.toarray(), topic]).toarray() #shape (40000, 643899)

这将返回所需的矩阵,其最后一列包含主题信息。

但是,由于主题编号不像术语文档矩阵的元素那样具有基数(或序数)顺序,我担心某些线性机器学习模型可能不适合这项工作。

是真的吗?那我还有什么其他的解决方案可以采用吗?

最佳答案

是的,你是对的; 主题 列不是基数/序数特征。

你可以使用 oneHotEncoding() topic 功能,然后将其附加到 countVectorizer 输出。

另一种选择(我认为这是更好的方法),您可以提供每个主题的概率(您可以使用 lda.transform() 函数获得)作为附加特征。

关于python - 如何将 BOW 以外的功能添加到 scikit-learn 分类模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56251034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com