SpacyEntityExtractor无法正确识别时间实体

时间:2019-05-06 16:34:23

标签: spacy rasa-nlu rasa-core named-entity-extraction

Rasa v-0.15

OS-Mac OS

文本-凌晨3点设置闹钟

实体= CARDINAL

value = 3

我们可以看到文本中的预期实体应该是

实体=时间

value = 3am

为什么显示错误结果?

spacy中使用的模型-'en_core_web_md'

我正在使用的管道是-

language: "en" pipeline: - name: "SpacyNLP" model: "en_core_web_sm" case_sensitive: false - name: "WhitespaceTokenizer" - name: "SpacyEntityExtractor" - name: "CRFEntityExtractor" - name: "EntitySynonymMapper" - name: "CountVectorsFeaturizer" - name: "EmbeddingIntentClassifier"

2 个答案:

答案 0 :(得分:1)

我不熟悉不是Spacy的堆栈元素,但就Spacy而言:模型并不总是正确的。他们使用概率方法来确定命名实体的类别。

您可以尝试使用较大的模型(例如en_core_web_lg),但计算量较大。另外,您可以考虑培训NER模型,使其更适合您的目的。 Spacy.io为此提供了一个工具,我认为它叫做Prodigy。无论哪种方式-未经广泛的培训,创建完全可靠的命名实体识别仍然是一个挑战。

答案 1 :(得分:1)

我建议尝试拉萨/小鸭。这使用了来自wit.ai的实体提取器,它对于提取时间和日期实体非常有用且功能强大。为此,有必要运行一个单独的Docker容器并将其包含在nlu_config.yml中的管道配置中,并在endpoints.yml中指定此Docker容器的端点。