有人知道如何在rasa中将scispaCy模型用于生物医学吗?

问题描述

有人知道如何在rasa中将scispaCy模型用于生物医学吗? 我正在尝试与rasa建立聊天机器人,有人建议我为医疗聊天机器人设置nlp模型

解决方法

在撰写本文时,spaCy 2.3是spaCy的最新版本,对于该版本,有一个博客文章written here描述了如何转换自定义spaCy管道以在Rasa中使用。

主要步骤包括将模型管道保存到磁盘。

nlp.meta["name"] = "proglang"
nlp.to_disk(nlp.meta["name"])

然后将该模型作为python软件包安装。

> python -m spacy package proglang . --force
> cd en_proglang-2.2.5 # this created name depends on the spaCy version
> python setup.py sdist 
> python -m pip install en_proglang-2.2.5/dist/en_proglang-2.2.5.tar.gz

完成所有这些操作后,您可以从Rasa的config.yml文件中引用此模型。

pipeline:
- name: SpacyNLP
  model: "en_proglang"
- name: SpacyTokenizer
- name: SpacyEntityExtractor
- name: SpacyFeaturizer
  pooling: mean
- name: CountVectorsFeaturizer
  analyzer: char_wb
  min_ngram: 1
  max_ngram: 4
- name: DIETClassifier
  epochs: 100

该博客文章对此进行了更详细的说明。绝对要充分阅读。

不过,这种方法有几点。

  • 随着spaCy 3.0的到来,其中一些步骤可能会更改。 Rasa升级到此新spaCy版本后,该博客文章可能会收到更新。
  • 该指南适用于常规spaCy模型,但是我对sci-spaCy不熟悉,因此,我不知道是否有一些内部技巧使它与普通spaCy管道有所不同。例如,有些包装stanza spaCy不能通过这种方法工作。
  • 如果您发现这种方法行不通,则可能要在the rasa-nlu-examples project上发布github问题。这是用于Rasa组件的类似于contrib的模块,可能有兴趣添加此类功能。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...