UIE在实体识别和关系抽取上的实践

近期有做信息抽取的需求,UIE在信息抽取方面效果不错。

模型准备

huggingface上下载UIE模型:PaddlePaddle/uie-base · Hugging Face

点击“Clone Repository”,确定git clone的链接

其中包含大文件,需要在windows安装git-lfs,在https://git-lfs.com/下载git-lfs,安装。

git lfs clone 仓库链接

环境配置

UIE使用需要安装paddlenlp

paddlenlp依赖paddlepaddle-gpu或paddlepaddle;

忘了因为什么原因,python3.7和python3.11上安装paddlenlp存在问题,在python3.9上成功安装了。

为了使用GPU进行模型训练和推理,在GPU机器安装了NVIDIA Driver、CUDA、Cudnn。

这里踩了个坑:

CUDA 工具包 11.2 配合 cuDNN v8.2.1使用,安装paddlepaddle-gpu有特定版本

python -m pip install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html

一定要采用这个版本,如果安装了paddlepaddle-gpu=2.4.2版本,运行会报错:

RuntimeError: (PreconditionNotMet) The third-party dynamic library (cudnn64_7.dll) that Paddle depends on is not configured correctly. (error code is 126)

另外,运行时,如果程序中断,提示错误,检查专用GPU内存几乎占满,则八成是模型太大了,GPU内存太小导致的问题,减少模型训练的batch_size即可。

exit code -1073740791  0xC0000409

UIE运行示例

>>> from pprint import pprint
>>> from paddlenlp import Taskflow

>>> schema = ['时间', '选手', '赛事名称'] # Define the schema for entity extraction
>>> ie = Taskflow('information_extraction', schema=schema)
>>> pprint(ie("2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌!")) # Better print results using pprint
[{'时间': [{'end': 6,
          'probability': 0.9857378532924486,
          'start': 0,
          'text': '2月8日上午'}],
  '赛事名称': [{'end': 23,
            'probability': 0.8503089953268272,
            'start': 6,
            'text': '北京冬奥会自由式滑雪女子大跳台决赛'}],
  '选手': [{'end': 31,
          'probability': 0.8981548639781138,
          'start': 28,
          'text': '谷爱凌'}]}]

来源:PaddleNLP/taskflow_text.md at develop · PaddlePaddle/PaddleNLP

UIE 微调

PaddleNLP/applications/information_extraction/text at develop · PaddlePaddle/PaddleNLPUIE在实体识别和关系抽取上的实践PaddleNLP/applications/information_extraction/text at develop · PaddlePaddle/PaddleNLP

你可能感兴趣的:(语言模型,python,paddlepaddle)