Я использую spacy для разбора документов и, к сожалению, я не могу обработать существительные чанки так, как я ожидал, что они будут обработаны. Ниже мой код:
# Import spacy
import spacy
nlp = spacy.load("en_core_web_lg")
# Add noun chunking to the pipeline
merge_noun_chunks = nlp.create_pipe("merge_noun_chunks")
nlp.add_pipe(merge_noun_chunks)
# Process the document
docs = nlp.pipe(["The big dogs chased the fast cat"])
# Print out the tokens
for doc in docs:
for token in doc:
print("text: {}, lemma: {}, pos: {}, tag: {}, dep: {}".format(tname, token.text, token.lemma_, token.pos_, token.tag_, token.dep_))
Вывод, который я получаю, выглядит следующим образом:
text: The big dogs, lemma: the, pos: NOUN, tag: NNS, dep: nsubj
text: chased, lemma: chase, pos: VERB, tag: VBD, dep: ROOT
text: the fast cat, lemma: the, pos: NOUN, tag: NN, dep: dobj
Проблема в первой строке вывода, где "большие собаки" были проанализированы неожиданным образом: это создает "лемму" из "и указывает, что это" pos "из" NOUN ", "тег" из "NNS" и "dep" из "nsubj".
Вывод, который я надеялся получить, выглядит следующим образом:
text: The big dogs, lemma: the big dog, pos: NOUN, tag: NNS, dep: nsubj
text: chased, lemma: chase, pos: VERB, tag: VBD, dep: ROOT
text: the fast cat, lemma: the fast cat, pos: NOUN, tag: NN, dep: dobj
Я ожидал, что "леммой" будет фраза "большая собака" с формой множественного числа, замененной на единственное, а фраза будет "pos" в "NOUN", "tag" в "NNS" и "dep" "из" nsubj ".
Это правильное поведение, или я использую spacy неправильно? Если я использую spacy неправильно, пожалуйста, дайте мне знать, как правильно выполнить эту задачу.