导航菜单

  • 1.vector
  • 2.milvus
  • 3.pymilvus
  • 4.rag
  • 5.rag_measure
  • 7.search
  • ragflow
  • heapq
  • HNSW
  • cosine_similarity
  • math
  • typing
  • etcd
  • minio
  • collections
  • jieba
  • random
  • beautifulsoup4
  • chromadb
  • sentence_transformers
  • numpy
  • lxml
  • openpyxl
  • PyMuPDF
  • python-docx
  • requests
  • python-pptx
  • text_splitter
  • all-MiniLM-L6-v2
  • openai
  • llm
  • BPETokenizer
  • Flask
  • RAGAS
  • BagofWords
  • langchain
  • Pydantic
  • abc
  • faiss
  • MMR
  • scikit-learn
  • 1. 什么是 jieba?
  • 2. 如何安装?
  • 3. 分词模式快速体验
    • 3.1 精确模式(默认)
    • 3.2 全模式
    • 3.3 搜索引擎模式
  • 4. 自定义词典技巧
    • 4.1 临时添加词语
    • 4.2 加载词典文件
    • 4.3 调整词频
  • 5. 关键词提取
  • 6. 词性标注与列表返回
  • 7. 实战案例
    • 7.1 文本分析(统计 + 关键词)
    • 7.2 搜索引擎分词
    • 7.3 情感分析预处理
  • 8. 进阶技巧
    • 8.1 并行分词
    • 8.2 词典管理
  • 9. 常见问题
    • 9.1 内存占用大怎么办?
    • 9.2 行业词汇无法正确切分?
  • 10. 总结

1. 什么是 jieba? #

jieba 是 Python 里最常用的中文分词工具,支持分词、关键词提取、词性标注和自定义词典等功能。它把看起来连在一起的中文句子“切开”,让程序可以更好地理解文本内容,是中文 NLP 的入门工具。

2. 如何安装? #

不同环境下推荐使用 pip 安装,若使用 Anaconda 也可以用 conda。Windows 和 macOS 命令如下:

# 说明:Windows PowerShell 中安装 jieba
python -m pip install jieba
# 说明:macOS 终端或 Linux shell 中安装 jieba
python3 -m pip install jieba

如果你使用 conda,可以执行:

# 说明:通过 conda 安装 jieba
conda install -c conda-forge jieba

3. 分词模式快速体验 #

jieba 提供精确、全模式与搜索引擎三种切分策略,用法类似:

3.1 精确模式(默认) #

# 说明:导入 jieba 库以进行中文分词
import jieba

def main() -> None:
    # 说明:准备待分词的示例文本
    text = "我爱自然语言处理技术"
    # 说明:使用精确模式切词(cut_all=False)
    result = jieba.cut(text, cut_all=False)
    print("精确模式:", "/".join(result))

if __name__ == "__main__":
    # 说明:运行主函数
    main()

3.2 全模式 #

# 说明:导入 jieba 以使用全模式分词
import jieba

def main() -> None:
    # 说明:准备示例文本
    text = "我爱自然语言处理技术"
    # 说明:开启 cut_all=True 列出所有可能词语
    result = jieba.cut(text, cut_all=True)
    print("全模式:", "/".join(result))

if __name__ == "__main__":
    # 说明:运行示例
    main()

3.3 搜索引擎模式 #

# 说明:导入 jieba 体验搜索引擎模式
import jieba

def main() -> None:
    # 说明:准备示例文本
    text = "我爱自然语言处理技术"
    # 说明:搜索引擎模式对长词二次切分
    result = jieba.cut_for_search(text)
    print("搜索引擎模式:", "/".join(result))

if __name__ == "__main__":
    # 说明:执行示例
    main()

4. 自定义词典技巧 #

用于添加行业词、名字等,避免被误切。

4.1 临时添加词语 #

# 说明:导入 jieba 以演示临时添加词语
import jieba

def main() -> None:
    # 说明:待分词的原始文本
    text = "李小福是创新办主任也是云计算方面的专家"
    print("默认分词:", "/".join(jieba.cut(text)))

    # 说明:临时新增行业词语
    jieba.add_word("李小福")
    jieba.add_word("创新办")
    jieba.add_word("云计算")
    print("添加词典后:", "/".join(jieba.cut(text)))

if __name__ == "__main__":
    # 说明:执行示例
    main()

4.2 加载词典文件 #

准备 user_dict.txt(格式:词语 词频 词性),然后:

# 说明:导入 jieba 并加载自定义词典
import jieba

def main() -> None:
    # 说明:加载用户词典文件
    jieba.load_userdict("user_dict.txt")
    # 说明:进行分词以验证效果
    text = "李小福蓝瘦香菇创新办主任"
    print("使用词典文件:", "/".join(jieba.cut(text)))

if __name__ == "__main__":
    # 说明:执行主函数
    main()

4.3 调整词频 #

# 说明:导入 jieba 调整词频
import jieba

def main() -> None:
    # 说明:原始文本示例
    text = "如果放到post中将出错"
    # 说明:调节词频让“中将”被拆开
    jieba.suggest_freq(("中", "将"), tune=True)
    print("调整词频后:", "/".join(jieba.cut(text)))

if __name__ == "__main__":
    # 说明:执行示例
    main()

5. 关键词提取 #

两种算法:TF-IDF 与 TextRank。

# 说明:导入 jieba.analyse 模块以提取关键词
import jieba.analyse

def main() -> None:
    # 说明:准备待分析的示例文本
    text = (
        "自然语言处理是人工智能和语言学领域的重要分支,"
        "研究如何让计算机理解和生成人类语言。"
    )
    # 说明:使用 TF-IDF 算法获取关键词及权重
    tfidf_keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
    # 说明:使用 TextRank 算法获取关键词及权重
    textrank_keywords = jieba.analyse.textrank(text, topK=5, withWeight=True)

    # 说明:输出 TF-IDF 结果
    print("TF-IDF:")
    for word, weight in tfidf_keywords:
        print(f"{word}: {weight:.4f}")

    # 说明:输出 TextRank 结果
    print("\nTextRank:")
    for word, weight in textrank_keywords:
        print(f"{word}: {weight:.4f}")

if __name__ == "__main__":
    # 说明:运行关键词提取示例
    main()

6. 词性标注与列表返回 #

词性标注能看出词语的语法角色;lcut/lcut_for_search 则直接返回列表。

# 说明:使用 jieba.posseg 进行词性标注
import jieba.posseg as pseg

def main() -> None:
    # 说明:准备一个待标注的句子
    text = "我爱自然语言处理技术"
    # 说明:遍历分词结果并输出词性
    for word, flag in pseg.cut(text):
        print(f"{word}: {flag}")

if __name__ == "__main__":
    # 说明:执行词性标注示例
    main()
# 说明:演示 lcut 返回列表形式
import jieba

def main() -> None:
    # 说明:准备示例文本
    text = "我爱自然语言处理技术"
    # 说明:输出精确模式的列表形式
    print("精确模式列表:", jieba.lcut(text))
    # 说明:输出全模式的列表形式
    print("全模式列表:", jieba.lcut(text, cut_all=True))

if __name__ == "__main__":
    # 说明:运行列表示例
    main()

7. 实战案例 #

通过场景化示例串联各功能。

7.1 文本分析(统计 + 关键词) #

# 说明:统计词频并提取关键词
import jieba
import jieba.analyse
from collections import Counter

def text_analysis(text: str):
    # 说明:使用精确模式切词
    words = jieba.lcut(text)
    # 说明:过滤掉长度为 1 的词语
    filtered = [w for w in words if len(w) > 1]
    # 说明:统计词频
    freq = Counter(filtered)
    # 说明:提取 topK 关键词
    keywords = jieba.analyse.extract_tags(text, topK=5)
    return freq, keywords

if __name__ == "__main__":
    # 说明:准备示例文本
    sample = "自然语言处理结合了计算机科学和语言学,目标是让计算机理解人类语言"
    # 说明:执行文本分析
    word_freq, keywords = text_analysis(sample)
    # 说明:输出分析结果
    print("词频:", word_freq.most_common(3))
    print("关键词:", keywords)

7.2 搜索引擎分词 #

# 说明:搜索查询通常使用 cut_for_search
import jieba

def search_engine_tokenize(query: str):
    # 说明:返回搜索模式的分词结果列表
    return list(jieba.cut_for_search(query))

if __name__ == "__main__":
    # 说明:示例搜索语句
    query = "北京大学的学生学习人工智能"
    # 说明:打印搜索模式分词结果
    print("搜索分词:", search_engine_tokenize(query))

7.3 情感分析预处理 #

# 说明:分词并去除常见停用词,用于情感分析
import jieba

# 说明:定义一组常见停用词
STOP_WORDS = {"的", "了", "在", "是", "我", "有", "和", "就", "不", "也", "很", "这"}

def preprocess_for_sentiment(text: str):
    # 说明:对文本进行分词
    words = jieba.lcut(text)
    # 说明:过滤掉停用词与长度为 1 的词
    return [w for w in words if len(w) > 1 and w not in STOP_WORDS]

if __name__ == "__main__":
    # 说明:示例影评文本
    review = "这部电影真的很好看,演员表演很出色,剧情也很精彩!"
    # 说明:输出预处理结果
    print("预处理结果:", preprocess_for_sentiment(review))

8. 进阶技巧 #

适合处理大文本或特定领域。

8.1 并行分词 #

# 说明:启用并行分词以加速大文本处理
import jieba

if __name__ == "__main__":
    # 说明:开启 4 个进程进行分词
    jieba.enable_parallel(4)
    # 说明:准备需要处理的大文本
    large_text = "..."  # 替换为真实内容
    # 说明:执行分词以触发并行
    _ = list(jieba.cut(large_text))
    # 说明:任务结束后关闭并行模式
    jieba.disable_parallel()

8.2 词典管理 #

# 说明:查看与设置 jieba 使用的词典
import jieba

if __name__ == "__main__":
    # 说明:打印当前主词典路径
    print("当前词典路径:", jieba.get_dict_file())
    # 说明:切换到自定义词典
    jieba.set_dictionary("path/to/your/dict.txt")

9. 常见问题 #

9.1 内存占用大怎么办? #

# 说明:使用生成器逐行处理大文件,避免一次性加载
import jieba

def process_large_file(file_path: str):
    # 说明:逐行读取文件
    with open(file_path, "r", encoding="utf-8") as f:
        for line in f:
            # 说明:对每行执行分词并返回
            yield list(jieba.cut(line.strip()))

9.2 行业词汇无法正确切分? #

# 说明:加载领域词典并调整词频
import jieba

if __name__ == "__main__":
    # 说明:加载医疗领域词典
    jieba.load_userdict("medical_terms.txt")
    # 说明:加载法律领域词典
    jieba.load_userdict("legal_terms.txt")
    # 说明:提升特定词语的权重
    jieba.suggest_freq("冠状动脉", tune=True)
    jieba.suggest_freq("民事诉讼", tune=True)

10. 总结 #

| 功能 | 使用方法 | 适用场景 | | | | | | 精确分词 | jieba.cut(text) | 一般文本分析 | | 全模式分词 | jieba.cut(text, cut_all=True) | 收集所有候选词 | | 搜索分词 | jieba.cut_for_search(text) | 搜索引擎、倒排索引 | | 关键词提取 | jieba.analyse.extract_tags() | 摘要、标签推荐 | | 词性标注 | jieba.posseg.cut(text) | NER、语法分析 | | 自定义词典 | add_word() / load_userdict() | 行业/专有名词 |

jieba 是中文文本处理的“瑞士军刀”,从简单分词到关键词提取都可以快速实现。掌握本文中的技巧后,你就可以在文本分析、搜索引擎、情感分析等项目中快速落地中文分词能力。***

访问验证

请输入访问令牌

Token不正确,请重新输入