macOS 上部署 jieba 中文分词:我的实战笔记与踩坑心得
一、环境准备:Python 3 安装的那些事儿
-
发现 macOS 自带的是 Python 2.7,早就过时了,一定要换到 Python 3。
-
最简单的方案:先装国内 Homebrew 镜像,再通过它安装 Python 3.12。
# 安装国内 Homebrew 源 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" # 直接装 Python 3.12 brew install python@3.12 # 配一下环境变量,让终端直接用到 3.12 echo 'export PATH="/opt/homebrew/opt/python@3.12/bin:$PATH"' >> ~/.zshrc source ~/.zshrc
-
遇到过的问题:
-
HTTP/2 协议错误:
git config --global http.version HTTP/1.1
-
443 端口连不上:直接换成 SSH 协议,重装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" \ --git-url git@github.com:Homebrew/brew.git
-
-
安装完后,执行
python3 --version
能看到Python 3.12.x
就成功了。
二、安装 jieba:三种方式各有场景
-
最基础、最省事的
pip3 install jieba
适合网络通畅时。
-
国内镜像加速(推荐国内)
pip3 install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
-
手动安装
-
从 GitHub 拉 tarball:
curl -LO https://github.com/fxsjy/jieba/archive/refs/tags/v0.42.1.tar.gz tar -xzf v0.42.1.tar.gz cd jieba-0.42.1 python3 setup.py install
-
三、虚拟环境操作:避开 PEP 668 的“权限地狱”
-
macOS 的新安全策略(PEP 668),全局安装容易报
externally-managed-environment
。
→ 最靠谱的做法:一定要用虚拟环境。# 1) 在项目根目录下创建 venv python3 -m venv .venv # 2) 激活环境 source .venv/bin/activate # 3) 在虚拟环境里 install pip install jieba # 4) 测一下版本 python -c "import jieba; print(jieba.__version__)" # 应该显示 0.42.1
-
虚拟环境的操作清单,顺便记一记:
操作 命令 创建环境 python3 -m venv .venv
激活环境 source .venv/bin/activate
退出环境 deactivate
删除环境 rm -rf .venv
导出依赖 pip freeze > requirements.txt
-
彻底卸载 jieba(如果想重置):
pip uninstall jieba -y find ~ -name "jieba" -type d -exec rm -rf {} + 2>/dev/null
四、一次完整的测试:从报错到跑通
-
写个
test_jieba.py
做最基础的分词演示import jieba def main(): text = "自然语言处理是人工智能的重要方向" # 精确模式 words = jieba.cut(text, cut_all=False) print("精确模式: " + "/".join(words)) # 搜索引擎模式 words = jieba.cut_for_search(text) print("搜索模式: " + "/".join(words)) # 自定义词典:增加“人工智能” jieba.add_word("人工智能") print("添加词典后: " + "/".join(jieba.cut(text))) if __name__ == "__main__": main()
-
运行:
python test_jieba.py
-
预期输出(手动对比一下,看看分词是不是合理):
精确模式: 自然语言/处理/是/人工智能/的/重要/方向 搜索模式: 自然/语言/自然语言/处理/是/人工/智能/人工智能/的/重要/方向 添加词典后: 自然语言/处理/是/人工智能/的/重要/方向
-
结果如预期就 OK,没有的话多对比一下自带词典和自定义词典的区别。
五、高阶玩法:把 jieba 的功能全都翻出来
-
自定义词典(精准度 up/up)
-
单个词:
jieba.add_word("深度学习")
-
整批导入(
user_dict.txt
格式:每行 “词 词频 词性”):jieba.load_userdict("user_dict.txt")
-
-
关键词提取(TF-IDF)
import jieba.analyse text = "自然语言处理需要大量语料库和算法支持" keywords = jieba.analyse.extract_tags(text, topK=3) print(keywords) # 比如 ['语料库', '算法', '自然语言']
-
并行加速(多核搞起来)
jieba.enable_parallel(4) # 假设我机器上有 4 核
-
调整分词效果
-
调整“词语组合”的优先级:
jieba.suggest_freq(('自然', '语言'), True)
-
如果想用自定义的 IDF 库:
jieba.analyse.set_idf_path("idf.txt")
-
六、踩坑汇总:常见报错与解决思路
-
externally-managed-environment
- 必须用虚拟环境,不要用系统的 pip 直接全局装。
- 原因:macOS 给系统级目录加了保护,守护
/Library/...
下的包。
-
ModuleNotFoundError: No module named 'jieba'
- 排查:
which python3
看下当前用的 Python 路径。pip3 list | grep jieba
确认下是不是装到了别的环境。python3 -c "import sys; print(sys.path)"
再看一下搜索路径。
- 结论:大多数时候都是“没激活虚拟环境”或“pip 装到系统环境去了”。
- 排查:
-
中文路径执行失败
-
如果脚本路径里有中文,一定要给脚本名加引号:
python3 "/路径/包含中文/脚本.py"
-
-
分词结果不太对
- 先看看是不是词典问题:
jieba.add_word
/jieba.load_userdict
补个词。 - 或者调整一下 TF-IDF 库,如果做关键词提取用得上。
- 先看看是不是词典问题:
-
网络不好/装包慢
-
镜像加速:
pip3 install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
-
离线包安装:提前把 tarball 拉下来。
-
七、快捷操作清单 & 备忘
-
创建/激活/退出/销毁 虚拟环境:
python3 -m venv .venv source .venv/bin/activate deactivate rm -rf .venv
-
导出依赖:
pip freeze > requirements.txt
-
卸载+清残留:
pip uninstall jieba -y find ~ -name "jieba" -type d -exec rm -rf {} + 2>/dev/null
-
常用命令一览:
目标 命令示例 查看 Python 版本 python3 --version
查看 pip 安装路径 which pip3
列出已装包 pip3 list
查看模块搜索路径 python3 -c "import sys; print(sys.path)"
使用镜像源装包 pip3 install <包名> -i https://pypi.tuna.tsinghua.edu.cn/simple
添加自定义词典 jieba.load_userdict("user_dict.txt")
启用并行分词 jieba.enable_parallel(4)
八、我的 心得 & Tips
- 虚拟环境一定要习惯早建:不然系统路径混乱,什么包都装到
/Library/...
,下次想卸都麻烦。 - 本篇用到的版本:
- macOS Sonoma(最新)
- Python 3.12.2
- jieba 0.42.1
- 写测试脚本一定要先跑一遍基础示例,把常见代码都跑通后再去改自定义词典、并行模式。
- 碰到中文路径名出错,先用最简单的方式——引号包住。试验后发现这个坑常踩,记住即可。
- 如果要做关键词提取,先对比一下
jieba.analyse
的两种算法(TF-IDF vs TextRank),我一般先用 TF-IDF,效果合适再去调 IDF。 - 离线安装有时候拯救网络不好的时候显得格外重要,提前把 tarball 拉下来,省时省心。
九、结尾随想
- 这套流程摸索下来,安心:只要环境、虚拟环境设对了,后面基本少出幺蛾子。
- jieba 功能其实很丰富,后期如果做文本挖掘、关键词提取、词性标注都能用到;但基础分词+自定义词典+TF-IDF 足够常见场景。
- 后续可以尝试把分词结果输到 Pandas/DataFrame 里再做可视化,或者接入 FastAPI、Flask 做个分词服务。
- 欢迎在评论区留言交流踩过哪些坑,或有什么新招!
技术栈:macOS Sonoma · Python 3.12 · jieba 0.42.1
实测机型:M2 MacBook Air (2022)
原创声明:本文纯手打、全程真机验证,转载请注明出处!