简单的、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如何在设置AtomicBoolean之前检查另一个条件?   通过java将文件从windows计算机复制到另一台windows计算机   java如何在使用Cobertura时忽略与记录器相关的If条件?   java无法在Eclipse中导出Android应用程序   带GSON的java parse JSON返回null   java Extract/filter Splunk查询和条件逻辑   java ProgressBar带有一个倒计时器Android   java我应该为每个DAO编写通用方法的集成测试吗?   java从命令行访问执行JAR的文本文件   任务应用程序的java Gradle生成失败:processReleaseResources   预测函数的java DeepLearning4j NN不收敛   java如果发现特殊字符,如何删除字符串中的字符?   在Java中,从精确位置将字符串拆分为两个   将Java ByteArrayOutputStream压缩到不同的容器中   带有同心指示方块的java太空船模拟器制导计算机   java如何使用Jericho解析两条注释?   PersistenceUnit中的java多个类   连接到java中的elasticsearch?   当嵌入HTML页面时,删除java小程序中的外部白色边框   用于webstart的java CXF ClassCastException(SEIStub/ClientProxy)