我有一堆原始文件。
我不确定是使用keras.text_preprocessing.Tokenizer还是sklearn.feature_extraction.text.CountVectorizer.有什么建议吗?哪个更快?他们有什么重大的区别,我可能错过了吗?
谢谢
发布于 2020-06-11 19:15:53
这取决于你的目标和你的机器。
如果您有几个CPU和/或GPU,那么keras可以利用它们并运行得更快。另一方面,scikit--学习方法有更多的选项,例如,它们可以找到ngram,而keras.text_preprocessing.Tokenizer有更少的参数。
发布于 2022-09-18 12:07:18
sklearn.CountVectorizer给出的值像0 1 0 1表示现在;0表示不存在。
keras.Tokenizer给出了单词的索引:0 3 2 4
“他是个好球员”,“他是个篮球运动员”]
他是个优秀的篮球运动员[11110]
[1 2 0 1 1]]托肯泽:{"OOV":1,"He":2,"is":3,"good":4,"player":5,“篮球”:6}
[2 3 4 5
2 3 6 5]
托卡器的工作类似于字典索引。
发布于 2021-02-23 08:57:53
现在答复有点晚了,但我在过去几个星期一直在研究这个问题。
简单地说,这两种方法都应该产生相同数量的词汇量(标记词)。因此,如果CountVectorizer从对等Keras生成不同数量的标记化单词(语料库词汇表),这也是成功的衡量标准。我写了几行代码来检查这两种方法之间的结果。基本上,我实现了这两种方法并比较了它们的结果。
作为一条经验法则,我建议你做同样的事情,看看如果他们产生同样的结果。请记住将CounterVectorizer保留在其默认参数上,并且不要使用min_df、max_df参数筛选出不常见的或频繁的标记。所以做些类似的事情
def corpus_split(s):
return s.split(' ')
c_vectorizer=CountVectorizer(tokenizer=corpus_split, max_df=1.0, min_df=1)这将帮助您比较结果,因为在默认情况下会考虑文本的所有标记。
现在,关于时间效率的问题,我没有一个具体的洞察力给你。我的建议是,两种方法都试一试,自己看看。这两种方法的实施都可以在网上找到。
希望我能帮助你,也希望其他人注意到这个问题。
https://stackoverflow.com/questions/59881426
复制相似问题