【发布时间】:2018-08-21 11:20:03
【问题描述】:
我是第一次执行文本分类任务(推特情绪分析),但我不确定如何将工程功能整合到我的 sklearn 管道中。
到目前为止,我在输出分类器之前尝试了转换。例如:
model = Pipeline([('t', 'mean_vectorizer'), ('logreg', LogisticRegression())])
但所有这些基本管道的得分都非常低。所以我想开始进行网格搜索并结合我自己的功能。
到目前为止,我的数据集 (X_train) 的行是推文(单个字符串)。这是 mean_vectorizer 处理的格式(如果我使用它,还有 tfidf_vectorizer)。
加入新功能
以 1 个新功能为例,它是一个布尔值,表示是否存在正词(只是一个基本示例)。我会创建一个 (len(X_train), 1) 维的布尔值数组,对应于每条推文。
我的想法:
在对推文进行预处理后,将它们标记化并用 word2index 字典中的值替换单词。将推文填充到相等的长度,然后将此数组与我的特征连接起来。然后像往常一样将它传递到管道中。
也许有一种方法可以将这些功能单独传递到管道中?
也许使用整数数组而不是字符串的转换会出现问题?
问题
有人可以建议使用 sklearn 进行此操作的最佳方法。
假设数据是一个句子列表(训练与测试分开),每个句子都是一个字符串。
我认为这对其他刚开始使用 NLP 的人非常有帮助,所以请尽可能笼统。
【问题讨论】:
-
使用 FeatureUnion 将您的新特征与从矢量化器中找到的特征结合起来。见this example
-
@VivekKumar 感谢您的评论。如果您有任何这样做的经验和一些空闲时间,如果您能创建一个答案,那就太好了。再次感谢您的链接。
标签: python scikit-learn nlp