как реализовать простую лемматизацию с аргументом univ_pos - PullRequest
0 голосов
/ 17 февраля 2020
tokens = [The, wage, productivity, nexus, the, process, of, development,....]

Я пытаюсь преобразовать список токенов в их лемматизированную форму с помощью лемматизатора SpaCy. Здесь - документация, которую я использую.

Мой код:

from spacy.lemmatizer import Lemmatizer
from spacy.lookups import Lookups
lookups = Lookups()
lookups.add_table("lemma_rules")
lemmatizer = Lemmatizer(lookups)
lemmas = []
for tokens in filtered_tokens:
    lemmas.append(lemmatizer(tokens))

сообщение об ошибке

TypeError                                 Traceback (most recent call last)
 in 
      7 lemmas = []
      8 for tokens in filtered_tokens:
----> 9     lemmas.append(lemmatizer(tokens))

TypeError: __call__() missing 1 required positional argument: 'univ_pos'

Я понял это обсуждение того, как работает Лемматизатор SpaCy, и его теоретическое понимание. Однако я не уверен, как мне это реализовать.

Как я могу узнать univ_pos для моих токенов?

1 Ответ

0 голосов
/ 17 февраля 2020

Вот пример, адаптированный из документации spaCy ...

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for token in doc:
    print(token.text, token.pos_, token.lemma_)

Здесь .pos_ дает вам универсальную часть речи о зависимостях, которую вы ищете в исходном вопросе.

Однако для тегов, лемматизации и т. Д. c .. требуется полный набор компонентов. Существует тег для добавления данных pos. Если Tokenizer - единственная функция в вашем конвейере, то у вас, вероятно, не будет информации pos.

...