首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spacy as_doc()从原始Doc (Benepar)中丢失组件

Spacy as_doc()从原始Doc (Benepar)中丢失组件
EN

Stack Overflow用户
提问于 2022-09-22 15:09:53
回答 2查看 35关注 0票数 1

我有一根绳子,里面有几个句子。我想得到每个句子的选区解析。为此,我将对完整字符串执行nlp解析,以获得spacy Doc,然后循环遍历doc.sents并使用span.as_doc()将跨文档转换为Docs。但是,当我将跨度转换回Docs时,并不是所有的原始数据都被保留了。具体来说,贝纳帕选区分析已经不复存在。

代码语言:javascript
复制
import spacy
import benepar

nlp = spacy.load("en_core_sci_md", disable=["ner", "lemmatizer", "textcat"])
nlp.add_pipe('benepar', config={'model': BENEPAR_DIR})
nlp_test1 = nlp('The quick brown fox jumps over the lazy dog')
print(list(nlp_test1.sents)[0]._.parse_string) # Uses benepar (works)

nlp_test2 = list(nlp_test1.sents)[0].as_doc()
print(list(nlp_test2.sents)[0]._.parse_string) # No constituency parse found (no benepar)

nlp_test3 = list(nlp_test.sents)[0].as_doc(array_head=nlp_test._get_array_attrs())
print(list(nlp_test3.sents)[0]._.parse_string) # Doesn't work either

如何将Span转换为Doc,同时保持benepar选区解析数据?或者这是不可能的,而benepar只解析doc.sents的第一个

EN

回答 2

Stack Overflow用户

发布于 2022-09-26 07:58:01

这是不可能的,因为benepar将整个文档的解析信息存储在一个内部对象中,而Span.as_doc不能在这个范围内拆分它。

票数 1
EN

Stack Overflow用户

发布于 2022-09-23 12:45:39

似乎as_doc()不会运行nlp.add_pipe()添加的额外管道。

而不是

代码语言:javascript
复制
nlp_test2 = list(nlp_test1.sents)[0].as_doc()

代码语言:javascript
复制
nlp_test2 = nlp(list(nlp_test1.sents)[0].text)

因此,nlp_test2将使用benepar管道创建。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73816979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档