问题描述
背景
我想执行代码以使用 fastText 对每个文本的语言进行分类。
我做了什么
-
下载模型
git push origin -d refs/remotes/origin/dustin/redis_based_classifier
https://fasttext.cc/docs/en/language-identification.html -
安装python绑定
lid.176.bin
上面的模型 $ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ pip install .
和文件夹 lid.176.bin
与下面的 python 代码位于同一级别。
我不知道如何避免错误。
错误
fastText
代码
sample.py
ImportError: No module named fastText
对答案的回应
- 我已尝试按照答案执行命令,但我仍在努力修复相同的错误。
from fastText import load_model
model = load_model("lid.176.bin")
speech_texts = ["Hello,guys. What's up?",'你好! 我是学生。','Hallo,ich habe das Buch.']
def categorize(texts):
for i in range(len(texts)):
text = texts[i]
label,prob = model.predict(text,k)
return list(zip([l.replace("__label__","") for l in label],prob))
categorize(speech_texts)
$ pip3 install fasttext
Requirement already satisfied: fasttext in /usr/local/lib/python3.9/site-packages (0.9.2)
Requirement already satisfied: setuptools>=0.7.0 in /usr/local/lib/python3.9/site-packages (from fasttext) (51.1.1)
Requirement already satisfied: numpy in /usr/local/lib/python3.9/site-packages (from fasttext) (1.19.5)
Requirement already satisfied: pybind11>=2.2 in /usr/local/lib/python3.9/site-packages (from fasttext) (2.6.1)
- 我已经安装的软件包
from fasttext import load_model
ImportError: No module named fasttext
开发环境
Python 3.9
Mac OS Big Sur
解决方法
你应该使用:
from fasttext import load_model
作为最佳实践,您应该使用 Python“虚拟环境”。
虽然并非绝对有必要避免这种混淆,但通过采用将工作 python 和相关库用于特定项目的原则与 >system python,在您的脑海中和在您的文件系统上,很多事情将被明确分开和更清晰。
使用虚拟环境的两种合理方式是:
-
原生
venv
设施:https://docs.python.org/3/library/venv.html conda
工具 - 我特别喜欢极简主义的miniconda
来明确控制安装的内容和数量:https://conda.io/projects/conda/en/latest/user-guide/install/index.html(managing environments 指南)>
一旦您养成了使用显式环境的习惯,那么在您验证两件事后,像您这样的问题就会消失:
-
您在执行
pip install PKG
之前是否正确激活了正确的环境? (在使用conda
的许多情况下,您可能更喜欢使用conda install PKG
来获取他们额外优化的软件包 - 尽管标准pip
也适用于那里。) -
您是否在安装必要库的正确(相同)环境中执行代码?
如果您正在使用环境并验证这 2 件事,您通常不会对当前执行的代码是否可以使用您安装的库感到困惑。
由于在 MacOS 上,Python 2 和 Python 3 共存——本质上是不同的虚拟环境,因此您当前的问题也可能变得更加曲折。您使用简单的 python
或 pip
调用所做的任何事情都使用默认的 Python 2。默认情况下,要在 Python 3 中安装或执行,您需要使用 pip3
和 {{ 1}}。使用 python3
安装的某些内容对于普通的 pip3
执行可能不可见,从而产生与您遇到的类似的错误。 (一旦您开始使用 python
的真正 venv
,那么在激活的虚拟环境中调用普通 conda
或 python
可能会变成这样/strong>,选择适合该环境的 Python 3 可执行文件。)