Keras的Tokenizer与sklearn的CountVectorizer

时间:2020-01-23 15:00:13

标签: machine-learning nlp

我有一堆原始文本文件。

我不确定是否要使用 keras.text_preprocessing.Tokenizer sklearn.feature_extraction.text.CountVectorizer 。有什么想法,建议吗?哪个更快?它们有什么我可能会缺少的主要区别吗?

谢谢

2 个答案:

答案 0 :(得分:1)

这取决于您的目标和您的机器。

如果您有几个CPU和/或GPU,那么keras可以利用它们并运行得更快。另一方面,scikit-learn方法具有更多选择,例如,它们可以找到ngram,而keras.text_preprocessing.Tokenizer具有较少的参数。

答案 1 :(得分:0)

回答有点晚了,但过去几周我一直在研究这个问题。

简短的回答是,两种方法都应该产生相同数量的词汇(标记词)。因此,这也是衡量成功的标准,以防 CountVectorizer 产生与其对等 Keras Tokenizer 不同数量的标记词(语料库词汇)。我写了几行来检查两种方法之间的结果。基本上,我实施了这两种方法并比较了它们的结果。

根据经验,我建议您自己做同样的事情,看看它们是否产生相同的结果。请记住将 CounterVectorizer 保留在其默认参数上,不要使用 min_dfmax_df 参数过滤掉不频繁或频繁的标记。所以做一些像

def corpus_split(s):
    return s.split(' ')
c_vectorizer=CountVectorizer(tokenizer=corpus_split, max_df=1.0, min_df=1)

这将帮助您比较结果,因为 Keras Tokenizer 默认情况下会考虑您文本的所有标记。

现在关于时间效率的问题,我没有具体的见解可以给你。我的建议是两者都尝试一下,自己看看。两种方法的实现都可以在网上找到。

希望我能帮到你,也希望能帮助到任何注意到这个问题的人。

相关问题