基于浅层神经网络方法(如word2vec和fasttext)的有监督学习模型集合
ShallowLearn的Python项目详细描述
基于浅层神经网络方法的监督学习模型集合(如word2vec和fasttext) 有一些额外的独家功能。 用python编写,与scikit-learn完全兼容。
用户和开发人员讨论组:https://groups.google.com/d/forum/shallowlearn
开始
安装最新版本:
pip install cython pip install shallowlearn
从shallowlearn.models导入模型,它们在scikit learn中实现了监督学习的标准方法, 例如,fit(X, y),predict(X),predict_proba(X)等。
数据是原始文本,iterableX中的每个示例都是一个标记列表(文档的单词)。 而iterabley中的每个元素(对应于X中的元素)可以是单个标签或列表,以防 多标签训练集。显然,y的大小必须与X相同。
型号
gensimfasttext
如果您的目标是使用fasttext进行分类,请选择此模型!(这将是最稳定和丰富的功能)
基于fasttext算法[1]的监督学习模型。 代码大部分是从Gensim中获取并重写的, 它利用了它的优化(例如cython)和支持。
<> P>可以选择SOFTMax损失函数(默认值)或其两个“近似值”之一: 分层软最大和负采样。参数bucket配置特性哈希空间,即[1]中描述的哈希技巧。 将散列技巧与partial_fit(X, y)一起使用会产生一个强大的联机文本分类器(请参见Online learning)。
可以在初始化时加载预先训练的词向量, 传递gensimWord2Vec或shallowlearnLabeledWord2Vec实例(后者可从 GensimFastText按属性classifier建模。 使用方法fit_embeddings(X)可以使用模型的当前参数值预先训练字向量。
构造函数参数名是gensim和fasttext的混合(请参见class docstring)。
>>>fromshallowlearn.modelsimportGensimFastText>>>clf=GensimFastText(size=100,min_count=0,loss='hs',iter=3,seed=66)>>>clf.fit([('i','am','tall'),('you','are','fat')],['yes','no'])>>>clf.predict([('tall','am','i')])['yes']
快速文本
在fastText.py中实现的fasttext的监督算法, 它公开了原始C++代码上的接口。 与GensimFastText相比,这个类当前的优势是实现了子单词和n-gram特性。 通过hashing技巧。 构造函数参数等同于原始的supervised model,除了input_file、output和 label_prefix。
警告:在fasttext.py中加载数据集的唯一方法是通过文件系统(从0.8.2版开始)。 因此,传递给fit(X, y)的数据将写入磁盘上的临时文件中。
>>>fromshallowlearn.modelsimportFastText>>>clf=FastText(dim=100,min_count=0,loss='hs',epoch=3,bucket=5,word_ngrams=2)>>>clf.fit([('i','am','tall'),('you','are','fat')],['yes','no'])>>>clf.predict([('tall','am','i')])['yes']
深度逆增
todo:基于https://radimrehurek.com/gensim/models/word2vec.html#gensim.models.word2vec.Word2Vec.score
深度平均网络
独家功能
下一个很酷的功能将在github中作为问题列出,现在:
持久性
任何模型都可以用save和load两个方法进行序列化和反序列化。 它们重载了gensim的SaveLoad接口, 因此,可以控制模型的磁盘使用成本,而不是简单地pickling对象。 原始接口还允许对序列化输出使用压缩。
save可以创建多个文件,文件名的前缀是给定给序列化模型的名称。
>>>fromshallowlearn.modelsimportGensimFastText>>>clf=GensimFastText(size=100,min_count=0,loss='hs',iter=3,seed=66)>>>clf.save('./model')>>>loaded=GensimFastText.load('./model')# it also creates ./model.CLF
基准
文本分类
脚本scripts/document_classification_20newsgroups.py引用了 scikit-learn example 在参考数据集上比较文本分类器; 我们在比较中加入了我们的模型。 当前的结果,即使仍然是初步的,也可以与其他结果相比较 方法,在速度上获得最佳性能。
发布时的结果0.0.5, 将chi2_select选项设置为80%。 《纽约时报》考虑了tf idf在“经典”分类器中的矢量化,以及 fasttext.py的培训。 评估度量值是macro f1。
在线学习
脚本scripts/plot_out_of_core_classification.py计算一些scikit learn分类器的基准,这些分类器能够 逐步学习, 一次一批的例子。 这些分类器可以使用scikit learn方法partial_fit(X, y)在线学习。 那original example 描述通过特征散列(我们使用参数bucket设置)的方法。
结果不错,但仍有改进的余地。 我们使用iter=1, size=100, alpha=0.1, sample=0, min_count=0配置分类器,以便保持模型的快速性和 很小,而且不能从我们仅有的几个样品中断字。
参考文献
[1] | (1, 2)
|