路缘石文本分类库

text-classification-keras的Python项目详细描述


文本分类kerasBuild StatusPyPIPyPI - Python VersionGitter

一个高级文本分类库,实现了各种成熟的模型。具有一个干净且可扩展的接口来实现自定义架构

快速启动

安装

pip install text-classification-keras[full]

[full]将另外安装TensorFlowSpacyDeep Plots。如果你想马上开始,请选择此选项。

使用量

fromtexclaimportexperiment,datafromtexcla.modelsimportTokenModelFactory,YoonKimCNNfromtexcla.preprocessingimportFastTextWikiTokenizer# input textX=['some random text','another random text lala','peter',...]# input labelsy=['a','b','a',...]# use the special tokenizer used for constructing the embeddingstokenizer=FastTextWikiTokenizer()# preprocess data (once)experiment.setup_data(X,y,tokenizer,'data.bin',max_len=100)# load datads=data.Dataset.load('data.bin')# construct basefactory=TokenModelFactory(ds.num_classes,ds.tokenizer.token_index,max_tokens=100,embedding_type='fasttext.wiki.simple',embedding_dims=300)# choose a modelword_encoder_model=YoonKimCNN()# build a modelmodel=factory.build_model(token_encoder_model=word_encoder_model,trainable_embeddings=False)# use experiment.train as wrapper for Keras.fit()experiment.train(x=ds.X,y=ds.y,validation_split=0.1,model=model,word_encoder_model=word_encoder_model)

查看更多examples

API文档

https://github.io/jfilter/text-classification-keras/

高级

嵌入

通过设置嵌入类型和相应的嵌入维度,选择预先训练的单词嵌入设置embedding_type=None以随机初始化单词嵌入(但请确保设置trainable_embeddings=True以便实际训练嵌入)。

factory=TokenModelFactory(embedding_type='fasttext.wiki.simple',embedding_dims=300)

快速文本

包括几个预先训练的FastText嵌入。目前,我们只有单词嵌入,没有n-gram特征。所有嵌入都有300个维度。

手套

GloVe嵌入是fasttext的前身。一般来说,选择FastText嵌入而不是手套预培训嵌入件的尺寸各不相同

标记化

  • 要在标记(或字)级别上工作,请使用标记赋予器,例如TwokenizeTokenizerSpacyTokenizer
  • 要在标记和句子级别上工作,请使用SpacySentenceTokenizer
  • 要创建自定义标记赋予器,请扩展Tokenizer,并实现token_generator方法。

痉挛

您可以使用spaCy进行标记化。请参阅有关如何 download model用于目标语言。例如,对于英语:

python -m spacy download en

型号

基于令牌的模型

在令牌级别上工作时,请使用TokenModelFactory

fromtexcla.modelsimportTokenModelFactory,YoonKimCNNfactory=TokenModelFactory(tokenizer.num_classes,tokenizer.token_index,max_tokens=100,embedding_type='glove.6B.100d')word_encoder_model=YoonKimCNN()model=factory.build_model(token_encoder_model=word_encoder_model)

当前支持的型号包括:

TokenModelFactory.build_model使用提供的字编码器,然后通过Dense层对其进行分类。

基于句子的模型

在句子级工作时,请使用SentenceModelFactory

# Pad max sentences per doc to 500 and max words per sentence to 200.# Can also use `max_sents=None` to allow variable sized max_sents per mini-batch.factory=SentenceModelFactory(10,tokenizer.token_index,max_sents=500,max_tokens=200,embedding_type='glove.6B.100d')word_encoder_model=AttentionRNN()sentence_encoder_model=AttentionRNN()# Allows you to compose arbitrary word encoders followed by sentence encoder.model=factory.build_model(word_encoder_model,sentence_encoder_model)
  • Hierarchical attention networks (hans)可以通过构建两个基于注意的rnn模型来构建。当文档很大时,这很有用。
  • 对于较小的文档,对句子进行编码的合理方法是对其中的单词进行平均。这可以通过使用 token_encoder_model=AveragingEncoder()
  • 混合和匹配编码器,因为你认为适合你的问题。

SentenceModelFactory.build_model创建了一个分层模型,其中首先使用 word_encoder_model。然后使用sentence_encoder_model对每个句子进行所有这样的编码

相关

贡献

如果您有一个问题,发现了一个错误,或者希望提出一个新的功能,请查看issues page

pull请求在修复错误或提高代码质量时尤其受欢迎。

致谢

建立在拉格万德拉·科蒂卡拉普迪的作品之上:keras-text

引文

如果您发现文本分类对学术出版物有用,请使用以下bibtex引用:

@misc{raghakotfiltertexclakeras
    title={Text Classification Keras},
    author={Raghavendra Kotikalapudi, and Johannes Filter, and contributors},
    year={2018},
    publisher={GitHub},
    howpublished={\url{https://github.com/jfilter/text-classification-keras}},
}

许可证

麻省理工学院。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
反射Java反射:高负载下的NoSuchMethodException   java RxJava:one request>list of Integer>sequence of requests for each int>result to list   java为什么循环之前索引会增加   JavaSpring远程处理和RESTfulURL   java Hibernate搜索仅对我的实体的一部分进行索引   使用DPAD快速滚动时,java RecyclerView onCreateViewHolder调用过多   java将JSON解析到一个表中   java导航抽屉标题textview nullpointerexception   基于接口的Java链接队列   java Guice运行时依赖项参数重新注入   java展平/压缩ZSH中的深度嵌套目录   JavaSpring:Http406此请求标识的资源只能   java如何制作Android启动器图标   Java代码在windows上显示不正确(包含希腊语句子)   使用yourkit进行内存分析所用的java时间   java为什么可以序列化属性而不能序列化对象本身?