Как использовать neuralcoref в Spacy

Я пытался использовать библиотеку neuralcoref: Ультрасовременное разрешение кореференции на основе нейронных сетей и spaCy. Я использую Ubuntu 16.04, Python 3.7.3 в conda 1.9.7 и Spacy 2.2.4.

Мой код (из https://spacy.io/universe/project/neuralcoref):

import spacy
import neuralcoref
    

nlp = spacy.load('en_core_web_sm')
neuralcoref.add_to_pipe(nlp)
doc1 = nlp('My sister has a dog. She loves him.')
print(doc1._.coref_clusters)

doc2 = nlp('Angela lives in Boston. She is quite happy in that city.')
for ent in doc2.ents:
    print(ent._.coref_cluster)

У меня есть эта ошибка

/home/daniel/anaconda3/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: spacy.morphology.Morphology size changed, may indicate binary incompatibility. Expected 104 from C header, got 112 from PyObject
  return f(*args, **kwds)
/home/daniel/anaconda3/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: spacy.vocab.Vocab size changed, may indicate binary incompatibility. Expected 96 from C header, got 104 from PyObject
  return f(*args, **kwds)
/home/daniel/anaconda3/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: spacy.tokens.span.Span size changed, may indicate binary incompatibility. Expected 72 from C header, got 80 from PyObject
  return f(*args, **kwds)

Я попытался понизить версию Spacy до 2.1.0, как было предложено по этой ссылке:

conda config --append channels conda-forge
conda install spacy=2.1.0

Однако я не могу

PackagesNotFoundError: The following packages are not available from current channels:

  - spacy=2.1.0

Current channels:

  - https://conda.anaconda.org/conda-forge/linux-64
  - https://conda.anaconda.org/conda-forge/noarch
  - https://repo.anaconda.com/pkgs/main/linux-64
  - https://repo.anaconda.com/pkgs/main/noarch
  - https://repo.anaconda.com/pkgs/r/linux-64
  - https://repo.anaconda.com/pkgs/r/noarch

To search for alternate channels that may provide the conda package you're
looking for, navigate to

    https://anaconda.org

and use the search bar at the top of the page.

Как я могу решить эту проблему без перехода на более раннюю версию? Есть ли новая обновленная версия neuralcoref?

5 ответов

Решение

За neuralcoref для работы нужно использовать версию spaCy 2.1.0 и версия Python 3.7. Это единственная комбинация, с которой neuralcored работает в Ubuntu 16.04 и Mac.

  1. Установите python 3.7 на свой компьютер, см. Здесь
  2. Убедитесь, что выбранная версия python - 3.7.
  3. Создайте папку своего проекта
  4. Создайте виртуальную среду python в данной папке проекта, например,python -m venv ./venv,
  5. Установите spaCy 2.1.0 вот так python -m pip install spacy==2.1.0.
  6. Установить neuralcoref python -m pip install neuralcoref

Надеюсь это поможет.


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

[My sister: [My sister, She], a dog: [a dog, him]]
Angela: [Angela, She]
Boston: [Boston, that city]

Делайте именно то, что сказал Ракиб. Я использовал Google Colab, поэтому пропустите 1), если используете Google Colab. Добавьте следующие команды:

1) Создайте новую среду, используя: (измените myenv на имя, которое вы хотите присвоить среде)

      conda create --name myenv

Выберите эту среду:

      conda info --envs
conda activate myenv

2) Затем установите python 3.7 в этой среде

Установите версию Python

!apt-get установить python3.7

3) установить spacy и neuralcoref с поддерживаемой версией.

      !pip install spacy==2.1.0
!pip install neuralcoref
!pip install https://github.com/explosion/spacy-models/releases//download/en_core_web_lg-2.1.0/en_core_web_lg-2.1.0.tar.gz

import pandas as pd
import re
import spacy
import neuralcoref
import en_core_web_lg

nlp = en_core_web_lg.load()
neuralcoref.add_to_pipe(nlp)

Перейти на просторную 2

      pip uninstall -y neuralcoref
pip install --no-cache-dir  neuralcoref --no-binary neuralcoref
pip install -U spacy==2.3.7
python -m spacy download en

перезапустите ядро, если вы используете jupyter.

а также .....

      import logging;
logging.basicConfig(level=logging.INFO)
import neuralcoref

Обновить

      pip install -U spacy==2.3.7
pip install neuralcoref
python -m spacy download en

Это не прямой ответ на вопрос, но если вы хотите использовать neuroCoref, другой вариант — использовать оригинальную версию, написанную на Java. В библиотеке stanza есть клиент coreNLP, который может обращаться к оригинальным моделям coreNLP. Это не требует от вас использования (устаревшей версии) Spacy.

Вероятно, запоздалый ответ, сегодня копался в Интернете по той же проблеме.

В конце 2022 года Spacy выпустила Neuralcoref в качестве компонента конвейера. Для этого вам необходимо установить spacy-experimental.

Следующие ссылки могут быть полезны:

Первые две ссылки приведут вас к конкретным техническим деталям. Последние два видеоролика на YouTube помогут вам использовать модель по принципу «подключи и работай».

Другие вопросы по тегам