运行 spacy 的预初始化 doc 对象上的依赖解析器
Run dependency parser on pre-initialized doc object of spacy
我正在尝试通过网络 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
但是,我得到以下依赖关系树
dependency tree
其中每个单词都是与第一个单词的 nmod 关系。
我错过了什么?
如果需要,我也可以使用 spacy 的标记器。我尝试使用上述类似方法包括标记器,但所有标记都被标记为 'NN'
en_core_web_sm
中的parser
组件依赖于tok2vec
组件,所以需要在doc
之前运行tok2vec
运行宁 parser
让解析器有正确的输入。
doc = nlp2.get_pipe("tok2vec")(doc)
doc = nlp2.get_pipe("parser")(doc)
我正在尝试通过网络 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
但是,我得到以下依赖关系树
dependency tree
其中每个单词都是与第一个单词的 nmod 关系。
我错过了什么? 如果需要,我也可以使用 spacy 的标记器。我尝试使用上述类似方法包括标记器,但所有标记都被标记为 'NN'
en_core_web_sm
中的parser
组件依赖于tok2vec
组件,所以需要在doc
之前运行tok2vec
运行宁 parser
让解析器有正确的输入。
doc = nlp2.get_pipe("tok2vec")(doc)
doc = nlp2.get_pipe("parser")(doc)