BERT-NER 项目安装和配置指南

BERT-NER 项目安装和配置指南

BERT-NER BERT-NER 项目地址: https://gitcode.com/gh_mirrors/be/BERT-NER

1. 项目基础介绍和主要的编程语言

项目介绍

BERT-NER 是一个基于 Google 的 BERT 模型进行命名实体识别(Named Entity Recognition, NER)的开源项目。该项目使用 CoNLL-2003 数据集进行训练和评估,旨在提供一个简单易用的工具,帮助用户快速实现基于 BERT 的 NER 模型。

主要编程语言

该项目主要使用 Python 进行开发。

2. 项目使用的关键技术和框架

关键技术

  • BERT (Bidirectional Encoder Representations from Transformers): 一种预训练的语言模型,能够捕捉文本中的上下文信息,广泛应用于自然语言处理任务。
  • TensorFlow: 一个开源的机器学习框架,用于构建和训练深度学习模型。
  • CRF (Conditional Random Field): 条件随机场,用于序列标注任务,如 NER。

框架

  • TensorFlow: 用于模型的构建和训练。
  • Python: 用于编写和运行项目代码。

3. 项目安装和配置的准备工作和详细的安装步骤

准备工作

在开始安装和配置之前,请确保您的系统满足以下要求:

  • Python 3.6 或更高版本
  • TensorFlow 1.15 或更高版本
  • Git

安装步骤

步骤 1: 克隆项目仓库

首先,使用 Git 克隆 BERT-NER 项目到本地:

git clone https://github.com/kyzhouhzau/BERT-NER.git
cd BERT-NER
步骤 2: 创建虚拟环境(可选)

为了隔离项目的依赖环境,建议创建一个虚拟环境:

python3 -m venv bert-ner-env
source bert-ner-env/bin/activate  # 在 Windows 上使用 `bert-ner-env\Scripts\activate`
步骤 3: 安装依赖

安装项目所需的 Python 依赖包:

pip install -r requirements.txt
步骤 4: 下载预训练的 BERT 模型

项目需要使用预训练的 BERT 模型。您可以从以下链接下载模型文件:

下载后,解压缩文件并将内容放置在项目目录下的 cased_L-12_H-768_A-12 文件夹中。

步骤 5: 配置数据集

项目使用 CoNLL-2003 数据集进行训练和评估。您需要将数据集放置在 data 目录下。数据集的结构应如下:

data/
  ├── train.txt
  ├── dev.txt
  └── test.txt
步骤 6: 运行项目

配置完成后,您可以通过运行以下命令来启动训练和评估:

bash run_ner.sh

注意事项

  • 确保所有文件路径正确无误。
  • 如果遇到任何问题,请检查 TensorFlow 和 Python 的版本是否符合要求。

通过以上步骤,您应该能够成功安装和配置 BERT-NER 项目,并开始进行命名实体识别任务。

BERT-NER BERT-NER 项目地址: https://gitcode.com/gh_mirrors/be/BERT-NER

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

服务端部署与启动 现在可以安装服务端了,使用的是 bert-base, 来自于项目BERT-BiLSTM-CRF-NER, 服务端只是该项目中的一个部分。 项目地址:https://github.com/macanv/BERT-BiLSTM-CRF-NER ,感谢Macanv同学提供这么好的项目。 这里要说明一下,我们经常会看到bert-as-service 这个项目的介绍,它只能加载BERT的预训练模型,输出文本向量化的结果。 而如果要加载fine-turing后的模型,就要用到 bert-base 了,详请请见: 基于BERT预训练的中文命名实体识别TensorFlow实现 下载代码并安装 : pip install bert-base==0.0.7 -i https://pypi.python.org/simple 1 或者 git clone https://github.com/macanv/BERT-BiLSTM-CRF-NER cd BERT-BiLSTM-CRF-NER/ python3 setup.py install 1 2 3 使用 bert-base 有三种运行模式,分别支持三种模型,使用参数-mode 来指定: NER 序列标注类型,比如命名实体识别; CLASS 分类模型,就是本文中使用的模型 BERT 这个就是跟bert-as-service 一样的模式了 之所以要分成不同的运行模式,是因为不同模型对输入内容的预处理是不同的,命名实体识别NER是要进行序列标注; 而分类模型只要返回label就可以了。 安装完后运行服务,同时指定监听 HTTP 8091端口,并使用GPU 1来跑; cd /mnt/sda1/transdat/bert-demo/bert/bert_svr export BERT_BASE_DIR=/mnt/sda1/transdat/bert-demo/bert/chinese_L-12_H-768_A-12 export TRAINED_CLASSIFIER=/mnt/sda1/transdat/bert-demo/bert/output export EXP_NAME=mobile_0 bert-base-serving-start \ -model_dir $TRAINED_CLASSIFIER/$EXP_NAME \ -bert_model_dir $BERT_BASE_DIR \ -model_pb_dir $TRAINED_CLASSIFIER/$EXP_NAME \ -mode CLASS \ -max_seq_len 128 \ -http_port 8091 \ -port 5575 \ -port_out 5576 \ -device_map 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 注意:port port_out 这两个参数是API调用的端口号, 默认是55555556,如果你准备部署多个模型服务实例,那一定要指定自己的端口号,避免冲突。 我这里是改为: 5575 5576 如果报错没运行起来,可能是有些模块没装上,都是 bert_base/server/http.py里引用的,装上就好了: sudo pip install flask sudo pip install flask_compress sudo pip install flask_cors sudo pip install flask_json 1 2 3 4 我这里的配置是2个GTX 1080 Ti,这个时候双卡的优势终于发挥出来了,GPU 1用于预测,GPU 0还可以继续训练模型。 运行服务后会自动生成很多临时的目录文件,为了方便管理与启动,可建立一个工作目录,并把启动命令写成一个shell脚本。 这里创建的是mobile_svr\bertsvr.sh ,这样可以比较方便地设置服务器启动时自动启动服务,另外增加了每次启动时自动清除临时文件 代码如下: #!/bin/bash #chkconfig: 2345 80 90 #description: 启动BERT分类模型 echo '正在启动 BERT mobile svr...' cd /mnt/sda1/transdat/bert-demo/bert/mobile_svr sudo rm -rf tmp* export BERT_BASE_DIR=/mnt/sda1/transdat/bert-demo/bert/chinese_L-12_H-768_A-12 export TR
最新发布
04-03
基于BERTNER模型,集成了LSTM,CRF网络结构,FGM,EMA等提分trick,还有单独的MRC框架LSTM (Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,用于处理具有长期依赖关系的序列数据。传统的RNN在处理长序列时往往会遇到梯度消失或梯度爆炸的问题,导致无法有效地捕捉长期依赖。LSTM通过引入门控机制(Gating Mechanism)记忆单元(Memory Cell)来克服这些问题。 以下是LSTM的基本结构主要组件: 记忆单元(Memory Cell):记忆单元是LSTM的核心,用于存储长期信息。它像一个传送带一样,在整个链上运行,只有一些小的线性交互。信息很容易地在其上保持不变。 输入门(Input Gate):输入门决定了哪些新的信息会被加入到记忆单元中。它由当前时刻的输入上一时刻的隐藏状态共同决定。 遗忘门(Forget Gate):遗忘门决定了哪些信息会从记忆单元中被丢弃或遗忘。它也由当前时刻的输入上一时刻的隐藏状态共同决定。 输出门(Output Gate):输出门决定了哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。同样地,它也由当前时刻的输入上一时刻的隐藏状态共同决定。 LSTM的计算过程可以大致描述为: 通过遗忘门决定从记忆单元中丢弃哪些信息。 通过输入门决定哪些新的信息会被加入到记忆单元中。 更新记忆单元的状态。 通过输出门决定哪些信息会从记忆单元中输出到当前时刻的隐藏状态中。 由于LSTM能够有效地处理长期依赖关系,它在许多序列建模任务中都取得了很好的效果,如语音识别、文本生成、机器翻译、时序预测等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞蕊珑

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值