除了 Python 内置模块,还可以安装第三方包。第三方包通常由社区或公司维护,可以扩展 Python 的能力。
pip 与 PyPI
pip 是 Python 常用的包管理工具。它通常从 Python Package Index(PyPI)下载包,并把包安装到当前 Python 解释器可以导入的位置。
pip install emoji
pip show emoji
pip list
pip install --upgrade emoji
pip uninstall emoji最常见的安装格式是 pip install 包名。install 安装,show 查看一个包的信息,list 列出已安装包,--upgrade 升级,而 uninstall 卸载。安装名称与导入名称有时不同;本例中二者都是 emoji。
知识测验
题目
pip install emoji 主要完成什么工作?
一个简单直观的第三方包:emoji
emoji 可以把容易输入和阅读的别名转换为真正的 Emoji。安装后,下面的程序会把 :thumbs_up: 转换成 👍:
import emoji
message = emoji.emojize("Python is :thumbs_up:")
print(message)运行结果:
Python is 👍emojize() 接收一个字符串并返回转换后的新字符串。这个例子能直接看到第三方包为程序增加了什么能力。
知识测验
题目
已执行 pip install emoji,但 import emoji 仍失败,最值得先检查什么?
jieba 分词(中文扩展)
中文文本没有像英文那样天然用空格分词。做中文文本分析时,首先要把句子切分成词语,这一步叫分词。jieba 会先根据词典构建可能的切分路径,再选择更合理的组合;遇到词典里没有的新词时,还可以借助统计模型尝试识别。它的结果是算法判断,不是唯一绝对正确的答案。
pip install jiebajieba 支持多种分词模式:
- 精确模式(exact mode):尽量准确地切分词语,适合普通文本分析。
- 全模式(full mode):尽可能列出所有可能成词的片段,速度快但可能冗余。
- 搜索引擎模式(search engine mode):在精确模式基础上进一步切分长词,适合搜索。
互动实验
分词透视镜:同一句话,三种切法
访问权限免费
切换模式,观察长词是否被保留或继续拆分。彩色块表示 jieba 返回的词元;同一原文并没有被改写。
原始文本我来到北京清华大学
我来到北京清华大学
jieba.cut(“我来到北京清华大学”) → [我 | 来到 | 北京 | 清华大学]固定文本分词
因为我们还没有学习文件读取,本节先使用写在程序里的固定文本。下面的例子把一段中文切分成词语:
import jieba
text = "人工智能正在改变教育方式,互动教程可以帮助学习者把抽象概念变得具体。"
words = jieba.lcut(text)
print(words)一次可能的运行结果:
['人工智能', '正在', '改变', '教育', '方式', ',', '互动', '教程', '可以', '帮助', '学习者', '把', '抽象', '概念', '变得', '具体', '。']如果要做简单词频统计,可以先过滤掉标点和单字词,再用字典自己计数:
import jieba
text = "人工智能正在改变教育方式,人工智能也正在改变学习方式。"
words = jieba.lcut(text)
frequency = {}
for word in words:
if len(word) <= 1:
continue
frequency[word] = frequency.get(word, 0) + 1
items = list(frequency.items())
items.sort(key=lambda item: item[1], reverse=True)
print(items[:5])动手练习
统计固定中文文本的高频词
- 使用给定的两句话或自己写一段不少于 30 字的固定中文文本。
- 用 jieba.lcut() 分词。
- 过滤长度不超过 1 的词,并过滤 的、了、是。
- 用字典计数,按次数降序打印前 5 个词。