简单的、keras支持的多语言nlp框架,允许您在5分钟内为命名实体识别(ner)、词性标注(pos)和文本分类任务构建模型。包括bert、gpt-2和word2vec嵌入。
kashgari-tf的Python项目详细描述
Kashgari
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开发人员在几分钟内构建生产级分类/标记模型。
性能
Task | Language | Dataset | Score | Detail |
---|---|---|---|---|
Named Entity Recognition | Chinese | People's Daily Ner Corpus | 94.46 (F1) | Text Labeling Performance Report |
教程
下面是一组快速教程,帮助您开始使用库:
还有一些文章和帖子说明了如何使用喀什喀里:
- 15 分钟搭建中文文本分类模型
- 基于 BERT 的中文命名实体识别(NER)
- BERT/ERNIE 文本分类和部署
- 五分钟搭建一个基于BERT的NER模型
- Multi-Class Text Classification with Kashgari in 15 minutes
快速启动
要求和安装
我们将tf.keras版本重命名为kashgari tf
该项目基于TensorFlow1.14.0和Python3.6+,因为现在是2019年,类型提示很酷。 让我们用bi lstm模型运行一个ner标记模型。 感谢您对贡献的兴趣!有很多方法可以参与进来;从contributor guidelines开始,然后检查这些打开的问题以了解具体的任务。 这个图书馆受到以下框架和论文的启发和参考。pip install kashgari-tf
# CPU
pip install tensorflow==1.14.0
# GPU
pip install tensorflow-gpu==1.14.0
示例用法
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)
贡献
参考
推荐PyPI第三方库