OSError:[E050] 找不到模型“en_core_web_trf”。它似乎不是 Python 包或数据目录的有效路径

问题描述 投票:0回答:2

我正在尝试在 heroku 中部署一个应用程序,它成功完成,但是当我单击查看该应用程序时,它在一个红色框中显示了这个错误!

OSError:[E050] 找不到模型“en_core_web_trf”。好像没有 是 Python 包或数据目录的有效路径。

这是我的代码:

import spacy_streamlit
import streamlit as st
import pandas as pd
from spacy_transformers import Transformer
from spacy_transformers.pipeline_component import DEFAULT_CONFIG

DEFAULT_TEXT = """Google was founded in September 1998 by Larry Page and Sergey Brin while they were Ph.D. students at Stanford University in California. Together they own about 14 percent of its shares and control 56 percent of the stockholder voting power through supervoting stock. They incorporated Google as a California privately held company on September 4, 1998, in California. Google was then reincorporated in Delaware on October 22, 2002."""

spacy_model = "en_core_web_trf"

st.title("Identifyer")
text = st.text_area("Text to analyze", DEFAULT_TEXT, height=200)
doc = spacy_streamlit.process_text(spacy_model, text)

spacy_streamlit.visualize_ner(
    doc,
    labels=["CARDINAL", "DATE", "EVENT", "FAC", "GPE", "LANGUAGE", "LAW", "LOC", "MONEY", "NORP", "ORDINAL", "ORG", "PERCENT", "PERSON", "PRODUCT", "QUANTITY", "TIME", "WORK_OF_ART"],
    show_table=False,
    title="filter",
)

df = pd.DataFrame(pd.DataFrame({
'type': ["ORG", "DATE", "EVENT", "FAC", "GPE", "LOC", "MONEY", "NORP", "PERCENT", "PERSON", "PRODUCT", "QUANTITY", "TIME", "WORK_OF_ART", "LANGUAGE", "LAW", "ORDINAL", "CARDINAL"],
'meaning': ["Companies, agencies, institutions, etc.", "Absolute or relative dates or periods", "Named hurricanes, battles, wars, sports events, etc.", "Buildings, airports, highways, bridges, etc.", "Countries, cities, states", "Non-GPE locations, mountain ranges, bodies of water", "Monetary values, including unit", "Nationalities or religious or political groups", "Percentage (including “%”)", "People, including fictional", "Vehicles, weapons, foods, etc. (Not services)", "Measurements, as of weight or distance", "Times smaller than a day", "Titles of books, songs, etc.", "Any named language", "Named documents made into laws", "first”, “second”, ...", "Numerals that do not fall under another type"],
}))

df.index = [""] * len(df)
st.table(df)
python python-3.x heroku spacy streamlit
2个回答
2
投票

从您的 IDE 运行此命令:

!python -m spacy download en_core_web_trf

然后从菜单栏重新启动运行时(如果可用):

现在,它会执行成功:


0
投票

我创建了几个虚拟环境,我注意到,在最后两个虚拟环境中,模型“en_core_web_trf”没有用这个命令正确安装:

python3 -m spacy download en_core_web_trf
,所以我得到了同样的错误。我不知道为什么,但是当我尝试 python 而不是 python3 时,它起作用了:
python -m spacy download en_core_web_trf
。 如果没问题,你会看到这样的文字:

✔ Download and installation successful
You can now load the package via spacy.load('en_core_web_trf')

另一个有趣的地方是,当我的应用程序在另一个虚拟环境中运行时,我无法在一个虚拟环境中安装模型。

如果有人能向我解释为什么会这样,以及为什么 python 正确安装了 spacy 模型,但 python3 没有,我将不胜感激。 (我用的是 Kubuntu linux)

更新
看起来你没有模型,或者它安装不正确。如果您使用的是虚拟环境,请尝试使用

pip show en_core_web_trf
检查模型的版本,或者重新安装 spacy 和模型。

© www.soinside.com 2019 - 2024. All rights reserved.