Coder Social home page Coder Social logo

textclassify_with_bert's Introduction

TextClassify_with_BERT

使用BERT模型做文本分类;面向工业用途

  • 自己研究了当前开源的使用BERT做文本分类的许多存储库,各有各的缺点。通病就是面向学术,不考虑实际应用。
  • 使用txt、tsv、csv等不同数据集也就算了,有些项目甚至似乎存在bug。所以还是要自己动手解决。
  • 已经较为完整可用,欢迎收藏加关注。有问题可提issue交流。

与同类代码库相比的亮点:

  • 在自定义Processor类中添加了针对单条文本的处理方法。在常规的针对test数据集的predict方法之外添加了针对单条数据的类别预测方法。
  • 编写了简单的web服务,直接搭建对外服务的API接口。
  • estimator 从 tf.contrib.tpu.TPUEstimator换成 tf.estimator.Estimator,以便在 gpu 上更高效运行。于此同时 model_fn 里tf.contrib.tpu.TPUEstimatorSpec 也修改成 tf.estimator.EstimatorSpec形式,相关调用参数也做了调整。
  • 在转换成较普通的 estimator 后便可以使用常用方式处理,如生成用于部署的 *.pb 文件等。

使用方法:

  1. 准备工作
  1. 单机运行
  • 在arguments.py中修改运行参数。主要是数据目录、BERT目录、模型目录、序列长度、batch大小、学习率等。

如果仅对test.txt执行预测,只需要把 do_predict 设为True,do_train 与do_eval 设置为false。

  • 训练+评估:运行train_eval.py

如果上面步骤进展顺利,恭喜,在输出目录内已经生成了训练和评估结果。屏幕上也打印出了评估准确率等。

  • 测试:先修改自己要测试的问题,运行predict_GPU.py
  1. 使用自己的真实数据集。修改训练参数,重新进行训练和评估。
  2. 搭建分类预测服务
  • 使用自己的pb模型+开源框架。 【强烈推荐】
  • 运行server.py 【仅供玩耍】
  • 有pb模型自己使用TensorFlow Serving部署
  1. 关于用bert-base搭建服务的简介:
  • 在服务器端、客户端安装:pip install bert-base
  • 在PB模型所在目录下新建一个 run.sh文件,写入以下内容:

bert-base-serving-start \
-model_dir ./ \ # 训练输出目录【主要是其他Mode用到】。
-bert_model_dir F:\chinese_L-12_H-768_A-12 # BERT自身的目录。
-model_pb_dir ./ \ # pb模型路径,就填./ 当前目录就行了。。
-mode CLASS \ # 运行模式,分类就是CLASS
-max_seq_len 200 \ # 最大序列长度。要跟训练时参数一致。

  • 运行编写好的run.sh,如果没报错,提示已经开始监听的话就表示服务成功开启。可以使用客户端运行示例了。
    非本机运行的话,构造BertClient时需要设置ip参数,例如BertClient(ip=192.168.20.20 )。

textclassify_with_bert's People

Contributors

yaleimeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

textclassify_with_bert's Issues

train_eval.py

运行train_eval.py时程序一直停在这一步,有人知道是什么原因吗
tensorflow=1.15, numpy=1.16.5
image

gpu上如何跑代码

请问我要是在gpu上训练的话,需要改哪些地方,刚刚接触,还不太懂

希望训练完成后导出pb模型用于部署

您好,请问代码里可以将我们的训练模型保存为.pb模型文件并且调用这个模型做相应的预测吗,如果方便希望您能更新一下,真的是万分的感谢

关于预测阶段模型加载的问题

不好意思,目前的predict阶段似乎是每次预测一条数据都需要重新加载一次训练好的模型,这样的预测时间很长,请问是够可以先将模型加载到内存中呢?您知道该如何修改吗

预测速度太慢

预测速度太慢了,一个文本要3s左右,显存有占用,不清楚是不是因为 import train_eval占用的。predict没有用gpu吗?就算用cpu,也不会这么慢呀。请问下有知道原因的吗?

模型单个pb文件

最后保存的模型文件只有单个pb模型文件,variables已经集成到模型文件中。那个相比于带有variables的模型而言,单个pb模型文件不需要进行signature进行配置吗?
image

关于 在新闻预料上 做文本分类模型的问题

你好, 作者 , 我 基于Bert 模型 用 开源的新闻语料 来预测, 发现 最后在验证集下 出来的loss 很高 在6-8之间, 无论怎么调试 参数, 都在这之间, 我INFO:tensorflow:evaluation_loop marked as finished
INFO:tensorflow:***** Eval results *****
INFO:tensorflow: eval_accuracy = 0.10002001
INFO:tensorflow: eval_f1 = 0.9474681
INFO:tensorflow: eval_loss = 6.468474
INFO:tensorflow: eval_precision = 0.90018004
INFO:tensorflow: eval_recall = 1.0
INFO:tensorflow: global_step = 4687
INFO:tensorflow: loss = 6.4671826
不知道什么原因造成的, 我猜想应该是 数据预处理部分, 希望大佬帮我解惑, 如果 方便的话, 加个联系方式 再次感谢大佬, 我的联系方式: qq:1125729232

tensorflow 2.0

I like your model very good. Do you have Tensorflow 2.0 version code on this model?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.