102、bert词向量进行文本分类和命名实体识别

最近一年来一直在从事语言助手的开发,和自然语言处理方面的工作

最近刚出来效果最好的模型是bert的动态词向量,刷新了各个自然语言处理Task的成绩如QA,NER,CLASSIFICATION等

接下来就让我们实际来构建一个以bert为后端词向量的文本分类模型

1、首先安装腾讯开源的Bert-as-service模块

pip install bert-serving-server
pip install bert-serving-client

2、下载腾讯训练好的bert中文词向量模型

https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip

3、将上面下载好的模型解压到D盘,然后通过bert-as-service模块加载该模型,并且对外提供restful接口形式

      来进行词向量的动态嵌入结果的返回,由下图可见。模型已经成功加载,并且在5555端口提供服务

bert-serving-start -model_dir D:\chinese_L-12_H-768_A-12 -num_worker=1

 

 

 

 

4、在rasa_nlu中配置bert词向量的pipeline,还有bert分类模型的pipeline(一个两层网络,第一层102个全连接神经元,第二层256个神经元)。如果您不太清楚什么是Rasa_nlu建议参考次链接https://github.com/RasaHQ/rasa_nlu

 language: "zh"

  pipeline:
  - name: "JiebaTokenizer"
  - name: "BertVectorsFeaturizer"
    ip: '127.0.0.1'
    port: 5555
    port_out: 5556
    show_server_config: True
    timeout: 10000
  - name: "EmbeddingBertIntentClassifier"
  - name: "SpacyNLP"
  - name: "CRFEntityExtractor"
  - name: "JiebaPsegExtractor"

5、构造训练数据,由于Rasa-nlu自动集成微软Luis平台,所以同样的词向量在微软Luis还是rasa_nlu上面都是通用的

{
  "rasa_nlu_data": {
    "regex_features": [],
    "lookup_tables": [],
    "common_examples": [
      {
        "entities": [],
        "text": "2018年办理居住证的条件有哪些",
        "intent": "居住证_办理_查询办理条件"
      },
      {
        "entities": [],
        "text": "2018年挂失社保卡的条件有哪些",
        "intent": "社保卡_挂失_查询办理条件"
      },
      {
        "entities": [],
        "text": "30元够报失居住证嘛",
        "intent": "居住证_挂失_查询收费标准"
      },
      {
        "entities": [],
        "text": "95后务工人员需要符合哪些要求才能退临时居住证",
        "intent": "临时居住证_退回_查询办理条件"
      },
      {
        "entities": [],
        "text": "一共要花销多少可以成功开通新的社保卡",
        "intent": "社保卡_开通_查询收费标准"
      },
      {
        "entities": [],
        "text": "一张居住证的发放需要哪些材料",
        "intent": "居住证_领取_查询所需材料"
      },
      {
        "entities": [],
        "text": "一张居住证的续期需要哪些材料",
        "intent": "居住证_签注_查询所需材料"
      },
      {
        "entities": [],
        "text": "一张居住证续期下来一共需要多少步",
        "intent": "居住证_签注_查询办理流程"
      },
      {
        "entities": [],
        "text": "依据什么能补居住证",
        "intent": "居住证_补卡_查询办理条件"
      },
      {
        "entities": [],
        "text": "依照哪些步骤可以办理居住证报失",
        "intent": "居住证_挂失_查询办理流程"
      },
      {
        "entities": [],
        "text": "修改之前的社保卡身份证号时需要带着什么东西",
        "intent": "社保卡事务_修改_查询所需材料"
      }
    ],
    "entity_synonyms": []
  }
}

5、进行训练,整个训练过程大概需要3分钟

Python D:\GitHub\rasa_nlu\train.py  -c sample_configs/config_embedding_bert_intent_classifier.yml --data data/examples/luis/SanofiBot-LuisApp-Chinese.json --path projects/bert_sanofi

7、加载训练好的模型进行文本分类

python D:\GitHub\rasa_nlu\server.py -c sample_configs/config_embedding_bert_intent_classifier.yml --path projects/bert_sanofi

8、通过Restful进口返回文本分类模型的结果


7、项目的链接如下:

https://github.com/weizhenzhao/rasa_nlu

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值