简单的、keras支持的多语言nlp框架,允许您在5分钟内为命名实体识别(ner)、词性标注(pos)和文本分类任务构建模型。包括bert、gpt-2和word2vec嵌入。

kashgari-tf的Python项目详细描述


Kashgari

GitHubCoverage StatusPyPI

Overview| Performance| Quick start| Documentation| 中文文档| Contributing

________

概述

kashgari是一个简单而强大的nlp迁移学习框架,在5分钟内为命名实体识别(ner)、词性标注(pos)和文本分类任务建立了一个最新的模型。

  • 人性化。喀什加里的代码是直接的,有很好的文档和测试,这使得它非常容易理解和修改。
  • 功能强大且简单。喀什喀里允许您将最先进的自然语言处理(NLP)模型应用于文本,如命名实体识别(NER)、词性标注(POS)和分类。
  • 内置转移学习。Kashgari内置了经过预训练的Bert和Word2Vec嵌入模型,这使得转移学习来训练模型变得非常简单。
  • 完全可伸缩。kashgari提供了一个简单、快速和可扩展的环境,用于快速实验、训练模型和使用不同嵌入和模型结构的新方法进行实验。
  • 生产就绪。kashgari可以为tensorflow服务导出SavedModel格式的模型,您可以直接在云端部署它。

我们的目标

  • academic用户不需要从头编写代码,更容易进行实验来证明他们的假设。
  • nlp初学者学习如何构建具有生产级代码质量的nlp项目。
  • nlp开发人员在几分钟内构建生产级分类/标记模型。

性能

TaskLanguageDatasetScoreDetail
Named Entity RecognitionChinesePeople's Daily Ner Corpus94.46 (F1)Text Labeling Performance Report

教程

下面是一组快速教程,帮助您开始使用库:

还有一些文章和帖子说明了如何使用喀什喀里:

快速启动

要求和安装

我们将tf.keras版本重命名为kashgari tf

该项目基于TensorFlow1.14.0和Python3.6+,因为现在是2019年,类型提示很酷。

pip install kashgari-tf
# CPU
pip install tensorflow==1.14.0
# GPU
pip install tensorflow-gpu==1.14.0

示例用法

让我们用bi lstm模型运行一个ner标记模型。

fromkashgari.corpusimportChineseDailyNerCorpusfromkashgari.tasks.labelingimportBiLSTM_Modeltrain_x,train_y=ChineseDailyNerCorpus.load_data('train')test_x,test_y=ChineseDailyNerCorpus.load_data('test')valid_x,valid_y=ChineseDailyNerCorpus.load_data('valid')model=BiLSTM_Model()model.fit(train_x,train_y,valid_x,valid_y,epochs=50)"""_________________________________________________________________Layer (type)                 Output Shape              Param #=================================================================input (InputLayer)           (None, 97)                0_________________________________________________________________layer_embedding (Embedding)  (None, 97, 100)           320600_________________________________________________________________layer_blstm (Bidirectional)  (None, 97, 256)           235520_________________________________________________________________layer_dropout (Dropout)      (None, 97, 256)           0_________________________________________________________________layer_time_distributed (Time (None, 97, 8)             2056_________________________________________________________________activation_7 (Activation)    (None, 97, 8)             0=================================================================Total params: 558,176Trainable params: 558,176Non-trainable params: 0_________________________________________________________________Train on 20864 samples, validate on 2318 samplesEpoch 1/5020864/20864 [==============================] - 9s 417us/sample - loss: 0.2508 - acc: 0.9333 - val_loss: 0.1240 - val_acc: 0.9607"""

运行gpt-2嵌入

fromkashgari.embeddingsimportGPT2Embeddingfromkashgari.corpusimportChineseDailyNerCorpusfromkashgari.tasks.labelingimportBiGRU_Modeltrain_x,train_y=ChineseDailyNerCorpus.load_data('train')valid_x,valid_y=ChineseDailyNerCorpus.load_data('valid')gpt2_embedding=GPT2Embedding('<path-to-gpt-model-folder>',sequence_length=30)model=BiGRU_Model(gpt2_embedding)model.fit(train_x,train_y,valid_x,valid_y,epochs=50)

运行时嵌入bert

fromkashgari.embeddingsimportBERTEmbeddingfromkashgari.tasks.labelingimportBiGRU_Modelfromkashgari.corpusimportChineseDailyNerCorpusbert_embedding=BERTEmbedding('<bert-model-folder>',sequence_length=30)model=BiGRU_Model(bert_embedding)train_x,train_y=ChineseDailyNerCorpus.load_data()model.fit(train_x,train_y)

贡献

感谢您对贡献的兴趣!有很多方法可以参与进来;从contributor guidelines开始,然后检查这些打开的问题以了解具体的任务。

参考

这个图书馆受到以下框架和论文的启发和参考。

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

推荐PyPI第三方库


热门话题
java Hystrixjavanica在类级别动态设置属性   按id在firestore文档上进行java循环   java线程的多线程死锁   java无法将行插入MySQL数据库   java在使用TestNG框架从ALM运行LeanFT脚本时没有抛出这样的方法错误,对此有任何输入吗?   在内核上编写基本的java shell或GUI   java访问级别感知的依赖项注入到继承字段中   java Twilio通过ivr呼叫回复传入短信   javaant<jar>任务:使用excludes参数   ApacheFelix中的java禁用缓存   安卓通过Java动态设置表布局   java如何确定算术表达式中第一个冗余括号的索引?   JSP中基于数据库选择值的java变更表   在从JavaSOAP接收的Windows调用(C++)中使用Unicode文本   java在mySql中是否可以将用户确定的路径作为连接URL