1. 为什么中文分词是NLP的基石
中文不像英文那样天然用空格分隔单词,计算机要理解中文文本,第一步就是把连续的汉字序列切分成有意义的词语组合。这个看似简单的任务,却直接影响着后续的词性标注、命名实体识别、情感分析等所有NLP任务的准确性。
我在处理电商评论数据时就深有体会:把"苹果手机价格"错误分词成"苹果/手机/价格"(实际应为"苹果手机/价格"),会导致情感分析模型把"苹果"误判为水果类别。这就是为什么我们需要专门的中文分词工具——它们基于统计学习和词典规则,能识别"苹果手机"这类复合词。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. jieba分词的三大核心原理
2.1 基于前缀词典的精确模式
jieba内置的词典收录了超过50万个词条及其词频。当处理"中华人民共和国"时:
- 从第一个字"中"开始匹配最长可能词
- 找到"中华"(词频7,170,938)比"中"(单字词频更高)更合理
- 继续匹配到"中华人民共和国"(词频1,200,300)
提示:可以通过
jieba.load_userdict()加载自定义词典,这在处理专业领域术语时特别有用
2.2 基于HMM模型的未登录词识别
对于词典中没有的新词(如网络用语"奥利给"),jieba采用隐马尔可夫模型(HMM)通过以下特征识别:
- 观察序列:单个汉字
- 隐藏状态:B(词首)、M(词中)、E(词尾)、S(单字词)
- 转移概率矩阵:基于人民日报语料训练得到
实测发现,这种算法对"yyds"等拼音缩写识别率可达78%
2.3 基于TF-IDF的关键词抽取
jieba的analyse模块实现的关键词提取,本质上是通过以下公式计算词条重要性:
code复制TF-IDF = (词频/文档总词数) * log(语料库文档总数/(包含该词的文档数+1))
在分析科技新闻时,加入停用词表后效果提升明显:
python复制from jieba import analyse
analyse.set_stop_words("stopwords.txt")
keywords = analyse.extract_tags(content, topK=10)
3. 实战:从安装到完整项目示例
3.1 环境配置避坑指南
新手常遇到的安装问题:
bas复制
