Open zaynxalic opened 3 years ago
Also having this issue; I'm using a Win10 PC in a conda environment with config:
When I run the code:
from spacy.lang.en import English
import spacy
import neuralcoref
nlp = English()
neuralcoref.add_to_pipe(nlp)
I get the error:
ValueError Traceback (most recent call last)
<ipython-input-1-8e5edb230c15> in <module>
1 from spacy.lang.en import English
2 import spacy
----> 3 import neuralcoref
4 nlp = English()
5 # nlp.add_pipe("sentencizer")
~\Anaconda3\envs\spacy_work\lib\site-packages\neuralcoref\__init__.py in <module>
12 warnings.filterwarnings("ignore", message="spacy.strings.StringStore size changed,")
13
---> 14 from .neuralcoref import NeuralCoref
15 from .file_utils import NEURALCOREF_MODEL_URL, NEURALCOREF_MODEL_PATH, NEURALCOREF_CACHE, cached_path
16
strings.pxd in init neuralcoref.neuralcoref()
ValueError: spacy.strings.StringStore size changed, may indicate binary incompatibility. Expected 80 from C header, got 64 from PyObject
What I tried:
pip uninstall neuralcoref
pip install neuralcoref --no-binary neuralcoref
Any help would be very much appreciated!
same here... can't import why? thx!
I've tried so many things. Seeing others issues I came to realized neuralcoref doesn't work in spacy v3 (see [stackoverflow] also (https://stackoverflow.com/questions/57008612/kernel-died-when-running-neuralcoref)). The problem for me now is actually how to download spacy pipeline for v2 versions? Seems stupidly easy, but I can't find in the documentation.
Hey all, as @correia-marcos mentioned, I figured that there seems to be some compatibility issue between spacy v3 and neuralcoref. Here are the steps I did to make it work:
1) Setup a python3.7 on conda env and conda install -c anaconda git
2) As per stated in README.md
,
git clone https://github.com/huggingface/neuralcoref.git
cd neuralcoref
pip install -r requirements.txt
pip install -e .
3) At this stage, your spacy version should be 2.3.x
(verify using pip show spacy
), because the requirements.txt
did explicitly stated that spacy version has to be <3.0.0
. Hence, DO NOT execute pip install -U spacy
, which would upgrade your spacy version to beyond 3.0.0
.
4) Execute python -m spacy download en
to obtain your English Model.
Summary of key item versions:
Python==3.7.10
spacy==2.3.5
neuralcoref==4.0
Hope this helped! :)
Thanks, @manekiyong -- I guess I was hoping we could get the compatibility issue fixed so we could use both neuralcoref and the fancy new features of spacy 3.0.
But again, thank you for taking the time to respond with such clear instructions.
I was also encountering the spacy.strings.StringSize issue as well with spacy 3.0. I downgraded to spacy 2.1.0 but encountered the following error: "spacy.vocab.Vocab size changed, may indicate binary incompatibility. Expected 120 from C header, got 112 from PyObject" So far have tried with python 3.6.9/3.7.10 with spacy versions 2.1.x and 2.3.x but the error persists. If anyone has any insights they would be welcome.
Issue seems to have been created by one of the recent commits. I used feb 2020 version of the neuralcoref library (commit '73d07e97fe') and it seems to have been installed at least. Leaving it here as it might help someone else. Works with both python versions 3.6.9 and 3.7.10.
Just want to pop in here and note that neuralcoref is not compatible with spaCy v3 as indicated in https://github.com/huggingface/neuralcoref/issues/295#issuecomment-859005189. We're working on a new coref model with a different architecture for v3.
I think I figured out the solution to this I downgraded my spacy to v2.1.0 and the error was gone. Please try and let me know if it worked for you. Python version 3.7.4 and neuralcoref v4.0
I followed the steps suggested by @manekiyong but still get the following error:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_9384\1435153998.py in <module>
4
5 # Add neural coref to SpaCy's pipe
----> 6 import neuralcoref
7 neuralcoref.add_to_pipe(nlp)
8
~\anaconda3\lib\site-packages\neuralcoref\__init__.py in <module>
12 warnings.filterwarnings("ignore", message="spacy.strings.StringStore size changed,")
13
---> 14 from .neuralcoref import NeuralCoref
15 from .file_utils import NEURALCOREF_MODEL_URL, NEURALCOREF_MODEL_PATH, NEURALCOREF_CACHE, cached_path
16
strings.pxd in init neuralcoref.neuralcoref()
ValueError: spacy.strings.StringStore size changed, may indicate binary incompatibility. Expected 80 from C header, got 64 from PyObject
Name: spacy Version: 2.3.7 Name: neuralcoref Version: 4.0
Hey @fbottazzoli
I just replicated the steps and verified that the method still works. You may wish to check whether you are working on the correct Python environment. To ensure that your script is running the right version of spacy, you can do the following:
import spacy
print(spacy.__version__)
If the version is correct and problem still persists, you may consider restarting on a clean environment.
Also, in my original post, I indicated that I was using Python 3.7. I just verified that it works on 3.9 (specifically, 3.9.11) as well.
Hi @manekiyong
I tried to reproduce again the steps you listed in a new environment with Python 3.9.11.
When running pip install -e .
at point 2jup, the following error occurs:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
textacy 0.11.0 requires spacy>=3.0.0, but you have spacy 2.3.7 which is incompatible.
it-core-news-sm 3.2.0 requires spacy<3.3.0,>=3.2.0, but you have spacy 2.3.7 which is incompatible.
en-core-web-sm 3.2.0 requires spacy<3.3.0,>=3.2.0, but you have spacy 2.3.7 which is incompatible.
I then tried to run the following code in a Jupyter notebook:
# Load your usual SpaCy model (one of SpaCy English models)
import spacy
nlp = spacy.load('en')
# Add neural coref to SpaCy's pipe
import neuralcoref
neuralcoref.add_to_pipe(nlp)
# You're done. You can now use NeuralCoref as you usually manipulate a SpaCy document annotations.
doc = nlp(u'My sister has a dog. She loves him.')
doc._.has_coref
doc._.coref_clusters
but the kernel always dies when running: doc = nlp(u'My sister has a dog. She loves him.')
and unfortunately I'm not able to get any errror message.
Francesca
Hey @fbottazzoli,
I suspect you have residual files that your environment is reading from that is causing all these. The version of spacy
and neuralcoref
used does not require the textacy
.
Furthermore, there might be compatibility issues with the version of the language model that you are using. Based on the installation steps on a clean environment, en_core_web_sm
installed should be version 2.3.1, and it_core_news_sm
installed should be version 2.3.0.
Hi @manekiyong , I succeded in installing the module and running it. The only thing I think I did differently is the conda environment creation: this time I made it from command line, while previously from Anaconda Navigator. Thank you for your help. Francesca
大家好,作为@correia-marcos提到,我认为 spacy v3 和 neurocoref 之间似乎存在一些兼容性问题。以下是我为使其工作而采取的步骤:
- 在 conda env 上设置 python3.7 和
conda install -c anaconda git
- 如中所述
README.md
,git clone https://github.com/huggingface/neuralcoref.git cd neuralcoref pip install -r requirements.txt pip install -e .
- 在这个阶段,你的 spacy 版本应该是
2.3.x
(验证使用pip show spacy
),因为requirements.txt
确实明确指出 spacy 版本必须是<3.0.0
. 因此,不要执行pip install -U spacy
,这会将您的 spacy 版本升级到 Beyond3.0.0
。- 执行
python -m spacy download en
以获得您的英文模型。关键项目版本摘要:
Python==3.7.10 spacy==2.3.5 neuralcoref==4.0
希望这有帮助!:)
thank u
I am using python ==3.8.3, spacy==3.0.5, neuralcoref ==4.0. These libraries are successfully installed. When running the code
I get the error.
I search the error code in google and I get this from stackoverflow [https://stackoverflow.com/questions/67041981/valueerror-spacy-strings-stringstore-size-changed-may-indicate-binary-incompat] . It suggests me to downgrade the python version. However, python version cannot be changed due to the particular project. I wonder that if there exists a way for me to successfully run the test code. By the way, I also try
pip uninstall neuralcoref
,pip install neuralcoref --no-binary neuralcoref
. The problem is still not resolved. If anyone can solve my problem, I am really appreciate that.