我正在尝试通过 web API 将 spacy 的依赖解析器合并到 java 中的遗留代码中。
所有其他组件标记器、标记器、merged_words、NER 都是从遗留 NLP 代码完成的。我只对应用依赖解析器以及 spacy 3 的依赖规则匹配器感兴趣。
我尝试了以下方法
- 使用https://spacy.io/api/doc#init创建一个新的文档对象。
from spacy.tokens import Doc
sent=["The heating_temperature was found to be 500 C"]
words=["The","heating_temperature", "was", "found", "to", "be", "500", "C"]
spaces=[True,True,True,True,True,True,True,False]
tags=["DT","NN","VBD","VBN","TO","VB","CD","NN"]
ents=["O","I-PARAMETER","O","O","O","O","I-VALUE","O"]
doc = Doc(nlp.vocab, words=words,spaces=spaces, tags=tags, ents=ents)
- 仅使用解析器创建 NLP 管道
#can use nlp.blank too
nlp2 = spacy.load("en_core_web_sm", exclude=['attribute_ruler', 'lemmatizer', 'ner', "parser","tagger"])
pipeWithParser = nlp2.add_pipe("parser", source=spacy.load("en_core_web_sm"))
processed_dep = pipeWithParser(doc) #refer similar example in https://spacy.io/api/tagger#call
但是,我得到以下依赖树
其中每个单词都是与第一个单词的 nmod 关系。
我错过了什么?如果需要,我也可以使用 spacy 的标记器。我尝试使用上述类似方法包含标记器,但所有标记都标记为“NN”