Ошибка атрибута при использовании NeuralCoref в Colab - PullRequest
2 голосов
/ 17 апреля 2020

Я пытаюсь использовать следующий просторный модуль в colab:

https://spacy.io/universe/project/neuralcoref

Я устанавливаю следующие пакеты:

!pip install spacy
import spacy 
!pip show spacy

!git clone https://github.com/huggingface/neuralcoref.git
import neuralcoref

После установки я получаю следующий вывод:

Name: spacy
Version: 2.2.4
Summary: Industrial-strength Natural Language Processing (NLP) in Python
Home-page: https://spacy.io
Author: Explosion
Author-email: contact@explosion.ai
License: MIT
Location: /usr/local/lib/python3.6/dist-packages
Requires: thinc, murmurhash, preshed, blis, srsly, cymem, setuptools, plac, requests, tqdm, numpy, wasabi, catalogue
Required-by: fastai, en-core-web-sm
Cloning into 'neuralcoref'...
remote: Enumerating objects: 48, done.
remote: Counting objects: 100% (48/48), done.
remote: Compressing objects: 100% (44/44), done.
remote: Total 739 (delta 14), reused 10 (delta 1), pack-reused 691
Receiving objects: 100% (739/739), 67.86 MiB | 30.25 MiB/s, done.
Resolving deltas: 100% (368/368), done.

Затем я следую инструкциям на сайте:

nlp = spacy.load('en')
neuralcoref.add_to_pipe(nlp)

Однако я получаю следующую ошибку:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-fe99e1a1a10f> in <module>()
      1 nlp = spacy.load('en')
----> 2 neuralcoref.add_to_pipe(nlp)
      3 #coref = neuralcoref.NeuralCoref(nlp.vocab)
      4 #nlp.add_pipe(coref, name='neuralcoref')

AttributeError: module 'neuralcoref' has no attribute 'add_to_pipe'

Кто-нибудь знает, как это исправить?

РЕДАКТИРОВАТЬ

После (успешного) использования предложенного ниже предложения, colab потерпел крах, когда я попытался запустить предоставленный пример (подробности см. Ниже).

Вот используемый код:

from google.colab import drive
drive.mount('/content/gdrive')

!pip install neuralcoref

import spacy
import neuralcoref

nlp = spacy.load('en') # this is the line where it crashes
neuralcoref.add_to_pipe(nlp)

doc1 = nlp('My sister has a dog. She loves him.')
print(doc1._.coref_clusters)

Я прикрепил скриншот с исходным сообщением об ошибке в левом нижнем углу.

enter image description here

РЕДАКТИРОВАТЬ 2

Я получил код для работы с colab при изменении порядка установки модули (не уверен почему).

Теперь у меня работает следующее:

from google.colab import drive
drive.mount('/content/gdrive')

!git clone https://github.com/huggingface/neuralcoref.git
!pip install -U spacy
!python -m spacy download en

import spacy
nlp = spacy.load('en')

%cd neuralcoref

!pip install -r requirements.txt
!pip install -e .

import neuralcoref
neuralcoref.add_to_pipe(nlp)

doc1 = nlp('My sister has a dog. She loves him.')
print(doc1._.coref_clusters)

1 Ответ

2 голосов
/ 17 апреля 2020

Обновление:

Так как предыдущий помог решить первую проблему, но создал другую проблему, я обновил ответ.

Согласно странице neuralcoref, для нашей версии Spacy мы необходимо вручную установить его из источника.

Кроме того, попробуйте каждый из следующих блоков в новой ячейке в Colab и Restart Runtime после установки.

mkdir temp

cd temp

!git clone https://github.com/huggingface/neuralcoref.git
!pip install -U spacy
!python -m spacy download en

cd neuralcoref

!pip install -r requirements.txt
!pip install -e .


import neuralcoref
import spacy

nlp = spacy.load('en')
neuralcoref.add_to_pipe(nlp)

doc1 = nlp('My sister has a dog. She loves him.')
print(doc1._.coref_clusters)


Solved

...