kashgari的Python项目-NLP框架(实体识别(NER)、词性标注(PoS)和文本分类任务)

简单而强大的NLP框架,在5分钟内为命名实体识别(NER)、词性标注(PoS)和文本分类任务构建最新模型

喀什是:

  • 人性化。喀什噶尔的代码是直截了当的,有很好的文档和测试,这使得它非常容易理解和修改。
  • 功能强大且简单。喀什允许您将最先进的自然语言处理(nlp)模型应用于文本,如命名实体识别(ner)、词性标注(pos)和分类。
  • keras基础。Kashgare直接构建在Keras上,使您可以轻松地训练模型,并使用不同的嵌入和模型结构尝试新方法。
  • 易于微调。Kashgare构建了预先训练的Bert和Word2Vec嵌入模型,这使得基于此嵌入对模型进行微调变得非常简单。
  • 完全可伸缩。喀什为快速实验提供了一个简单、快速、可扩展的环境。

功能列表

  • 嵌入式支架
    • 经典word2vec嵌入
    • 伯特嵌入
    • gpt-2嵌入
  • 序列(文本)分类模型
    • cnnmodel
    • blstm模型
    • cnnlstm模型
    • avcnnmodel
    • KMaxnn模型
    • RCNN模型
    • avrnnmodel
    • dropoutbrumodel
    • 删除avrnnmodel
  • 序列(文本)标签模型(NER、POS)
    • cnnlstm模型
    • blstm模型
    • BLSTMCRFModel
  • 模特训练
  • 模型评估
  • GPU支持/多GPU支持
  • 定制型号

性能

TaskLanguageDatasetScoreDetail
Named Entity RecognitionChinesePeople's Daily Ner Corpus92.20 (F1)基于 BERT 的中文命名实体识别

路线图

教程

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

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

快速启动

要求和安装

该项目基于Keras 2.2.0+和Python 3.6+,因为现在是2019年,类型提示很酷

pip install kashgari
# CPU
pip install tensorflow==1.12.0
# GPU
pip install tensorflow-gpu==1.12.0

示例用法

让我们使用cnn模型在SMP 2017 ECDT Task1上运行文本分类。

>>>fromkashgari.corpusimportSMP2017ECDTClassificationCorpus>>>fromkashgari.tasks.classificationimportCNNLSTMModel>>>x_data,y_data=SMP2017ECDTClassificationCorpus.get_classification_data()>>>x_data[0]['你','知','道','我','几','岁']>>>y_data[0]'chat'# provided classification models `CNNModel`, `BLSTMModel`, `CNNLSTMModel` >>>classifier=CNNLSTMModel()>>>classifier.fit(x_data,y_data)_________________________________________________________________Layer(type)OutputShapeParam#   =================================================================input_1(InputLayer)(None,10)0_________________________________________________________________embedding_1(Embedding)(None,10,100)87500_________________________________________________________________conv1d_1(Conv1D)(None,10,32)9632_________________________________________________________________max_pooling1d_1(MaxPooling1(None,5,32)0_________________________________________________________________lstm_1(LSTM)(None,100)53200_________________________________________________________________dense_1(Dense)(None,32)3232=================================================================Totalparams:153,564Trainableparams:153,564Non-trainableparams:0_________________________________________________________________Epoch1/51/35[..............................]-ETA:32s-loss:3.4652-acc:0.0469...>>>x_test,y_test=SMP2017ECDTClassificationCorpus.get_classification_data('test')>>>classifier.evaluate(x_test,y_test)precisionrecallf1-scoresupportcalc0.750.750.758chat0.830.860.85154contacts0.540.700.6110cookbook0.970.940.9589datetime0.670.670.676email1.000.880.938epg0.610.560.5836flight1.000.900.9521...

运行gpt-2嵌入

fromkashgari.embeddingsimportGPT2Embeddingfromkashgari.tasks.classificationimportCNNLSTMModelfromkashgari.corpusimportSMP2017ECDTClassificationCorpusgpt2_embedding=GPT2Embedding('<path-to-gpt-model-folder>',sequence_length=30)model=CNNLSTMModel(gpt2_embedding)train_x,train_y=SMP2017ECDTClassificationCorpus.get_classification_data()model.fit(train_x,train_y)

运行时嵌入Bert

fromkashgari.embeddingsimportBERTEmbeddingfromkashgari.tasks.classificationimportCNNLSTMModelfromkashgari.corpusimportSMP2017ECDTClassificationCorpusbert_embedding=BERTEmbedding('<bert-model-folder>',sequence_length=30)model=CNNLSTMModel(bert_embedding)train_x,train_y=SMP2017ECDTClassificationCorpus.get_classification_data()model.fit(train_x,train_y)

使用word2vec嵌入运行

fromkashgari.embeddingsimportWordEmbeddingsfromkashgari.tasks.classificationimportCNNLSTMModelfromkashgari.corpusimportSMP2017ECDTClassificationCorpusbert_embedding=WordEmbeddings('sgns.weibo.bigram',sequence_length=30)model=CNNLSTMModel(bert_embedding)train_x,train_y=SMP2017ECDTClassificationCorpus.get_classification_data()model.fit(train_x,train_y)

支持多个GPU

fromkashgari.embeddingsimportBERTEmbeddingfromkashgari.tasks.classificationimportCNNLSTMModeltrain_x,train_y=prepare_your_classification_data()# build model with embeddingbert_embedding=BERTEmbedding('bert-large-cased',sequence_length=128)model=CNNLSTMModel(bert_embedding)# or without pre-trained embeddingmodel=CNNLSTMModel()# Build model with your corpusmodel.build_model(train_x,train_y)# Add multi gpu supportmodel.build_multi_gpu_model(gpus=8)# Train, 256 / 8 = 32 samples for every GPU per batchmodel.fit(train_x,train_y,batch_size=256)

贡献

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

参考

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

javastart

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值