При создании документа с использованием стандартного конструктора модель не загружается [E029] - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь использовать SpaCY и создать экземпляр объекта Doc с помощью конструктора:

words = ["hello", "world", "!"]
spaces = [True, False, False]
doc = Doc(nlp.vocab, words=words, spaces=spaces)

, но когда я делаю это, если я пытаюсь использовать анализатор зависимостей:

for chunk in doc.noun_chunks:
    print(chunk.text, chunk.root.text, chunk.root.dep_,
            chunk.root.head.text)

Я получаю ошибку:

ValueError: [E029] noun_chunks requires the dependency parse, which requires a statistical model to be installed and loaded. For more info, see the documentation:

Хотя, если я использую метод nlp("Hello world!"), этого не происходит.

Причина, по которой я это делаю, заключается в том, что я использую извлечение сущностей из стороннего приложения, которое я хочу передать SpaCy, мой токенизация и мои сущности.

Примерно так:

## Convert tokens
words, spaces = convert_to_spacy2(tokens_)

## Creating a new document with the text
doc = Doc(nlp.vocab, words=words, spaces=spaces)

## Loading entities in the spaCY document
entities = []
for s in myEntities:
    entities.append(Span(doc=doc, start=s['tokenStart'], end=s['tokenEnd'], label=s['type']))

doc.ents = entities

Что мне делать? загрузить конвейер самостоятельно в документ и исключить токенизатор, например?

Заранее спасибо

1 Ответ

0 голосов
/ 06 ноября 2019

nlp() возвращает Doc, где токенайзер и все компоненты конвейера в nlp.pipeline были применены к документу.

Если вы создаете Doc вручную, токенизатор икомпоненты конвейера не загружаются и не применяются ни в одной точке.

После создания вручную Doc вы все равно можете применять отдельные компоненты конвейера из загруженной модели:

nlp = spacy.load('en_core_web_sm')
nlp.tagger(doc)
nlp.parser(doc)

Затем вы можетедобавьте свои собственные объекты к документу. (Обратите внимание, что если ваш токенизатор сильно отличается от токенайзера по умолчанию, используемого при обучении модели, производительность может быть не такой хорошей.)

...