Пространственное разбиение существительных создает неожиданную лемму, pos, tag и dep - PullRequest
1 голос
/ 04 апреля 2019

Я использую 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 неправильно, пожалуйста, дайте мне знать, как правильно выполнить эту задачу.

1 Ответ

1 голос
/ 04 апреля 2019

Здесь нужно учесть несколько моментов

  1. Лемматизация основана на токене
  2. POS-теги и анализ зависимостей являются прогностическими

Вы, вероятно, получитеthe big dog если вы берете атрибут lemma_ для каждого токена.Он не обновляет позицию токена вашего использования атрибута.

Кроме того, поскольку разбор зависимостей и POS-теги обучаются в прогностической модели, не гарантируется, что она всегда будет «правильной» с человеческой лингвистической точки зрения.

Кроме проблемы с леммой, вы, похоже, используете правильную простоту

...