如何部署 NLP命名实体识别模型到Elasticsearch
发布时间:2022-05-27 20:13:46

在本文章中,我们将通过一个示例,使用命名实体识别 (NER - Name Entity Recognition) NLP 模型来定位和提取非结构化文本字段中预定义的实体类别。 使用公开可用的模型,我们将向你展示如何将该模型部署到 Elasticsearch,使用新的 _infer API在文本中查找命名实体,并在提取管道中使用 NER 模型在文档被提取到 Elasticsearch 时提取实体。

NER 模型对于使用自然语言从全文字段中提取人物(people)、地点(places)和组织(organization)等实体很有用。

在此示例中,我们将通过 NER 模型运行《悲惨世界》一书的段落,并使用该模型从文本中提取字符和位置,并将它们之间的关系可视化。

更多关于 NLP 的阅读:

Elasticsearch:如何部署 NLP:文本嵌入和向量搜索

在 Elasticsearch 中使用 PyTorch 进行现代自然语言处理的介绍

Elasticsearch:如何部署 NLP:情绪分析示例

如何部署 NLP命名实体识别模型到Elasticsearch(图1)

安装
如果你还没有安装好自己的 Elasticsearch,Kibana 及 Eland,那么请阅读之前的文章 “Elasticsearch:如何部署 NLP:文本嵌入和向量搜索”。

将 NER 模型部署到 Elasticsearch
首先,我们需要选择一个可以从文本字段中提取字符名称和位置的 NER 模型。 幸运的是,我们可以在 Hugging Face 上选择一些可用的 NER 模型,并查看 Elastic 文档,我们看到一个 uncased NER model from Elastic  模型。

现在我们已经选择了要使用的 NER 模型,我们可以使用 Eland 来安装模型。 在本例中,我们将通过 docker 镜像运行 Eland 命令,但首先我们必须通过克隆 Eland GitHub 存储库来构建 docker 镜像,并在你的客户端系统上创建 Eland 的 docker 镜像。详细步骤请在文章  “Elasticsearch:如何部署 NLP:文本嵌入和向量搜索”。中进行查看,这里就不再赘述了。

我们接下来使用如下的命令来上传模型:

docker run -it --rm elastic/eland \
    eland_import_hub_model \
      --url http://www.zhi-clouds.com/ \
      --hub-model-id elastic/distilbert-base-uncased-finetuned-conll03-english \
      --task-type ner \
      --insecure \
      —-start 
注意:请根据自己的用户账号信息更新 --url 选项中的 Elasticsearch 信息。由于我们使用的是自签名的证书部署的,在这里,我们使用 --insecure 来规避 SSL 签名证书的检查。

由于我们在 eland import 命令末尾使用了 --start 选项,因此 Elasticsearch 会将模型部署到所有可用的机器学习节点并将模型加载到内存中。 如果我们有多个模型并且想要选择要部署的模型,我们可以使用 Kibana 的机器学习 > 模型管理用户界面来管理模型的启动和停止。

咨询电话
400-068-1180