7 文本预处理:分词
系列进度
自然语言处理入门 · 第 7 / 30 篇
分词决定模型看到的最小单位。中文、英文、代码混排和新词场景,分词策略会直接影响后续向量和分类结果。
我会抽样看分词结果,尤其检查专有名词、产品名和数字单位。分词错了,后面特征会跟着错。
在自然语言处理(NLP)中,文本预处理是一个至关重要的步骤。它不仅能提高模型的表现,还能减少计算复杂度。在我们之前的讨论中,我们已经探讨了文本清理的技巧,例如去除特殊字符、处理大小写和去除多余空格等。本篇将重点讨论文本预处理中的一个重要环节:分词。
什么是分词?
分词是将连续的文本字符串拆分成一系列单独的词或子词的过程。在许多语言中(例如英语),单词之间用空格分隔,因此分词可能相对简单;而对于像中文这样没有明显词边界的语言,分词则变得复杂且至关重要。
学习分词时,先看中文切分规则、未登录词、停用词和子词策略。分词结果会直接影响后续任务。
分词的必要性
分词为后续的文本分析和建模提供了基础。通过将文本分解为基本单元(词),我们能够更方便地进行计算、建模和特征提取。例如,在情感分析中,我们通过对词汇的分析来判断文本的情绪倾向。
分词方法
根据具体需求和语言的不同,我们可以采用不同的分词方法。以下是一些常见的分词方法:
《文本预处理:分词》这类内容容易被细节带偏。先看图里的主线,再回到正文核对环境、输入、输出和判断标准。
1. 基于规则的分词
这是一种简单的分词方法,通常依赖于分隔符,如空格、标点符号等。在英语文本中,这种方法效果良好。例如:
text = "Natural Language Processing is fascinating."
words = text.split() # 基于空格分词
print(words) # 输出: ['Natural', 'Language', 'Processing', 'is', 'fascinating.']
2. 基于词典的分词
这种方法利用既定的词汇表或词典,通过查找匹配来进行分词。这种方法在中文分词中特别常用。示例代码使用 Python 的 jieba 库:
import jieba
text = "自然语言处理非常有趣"
words = jieba.cut(text) # 使用jieba进行分词
print("/ ".join(words)) # 输出: 自然/ 语言/ 处理/ 非常/ 有趣
3. 统计模型分词
这种方法基于统计学原理,通过训练模型来判断最优的分词结果。例如,最大熵模型和隐马尔可夫模型(HMM)常被用于此类任务。以下是一个简化的示例,说明基于概率的分词思路:
这里, 指代待预测的词, 是它的上下文。
处理未登录词和组合词
在分词过程中,可能会遇到未登录词(即词典中不存在的词)和组合词(如“医院”+“医生”=“医院医生”)。为了解决这个问题,我们可以使用以下策略:
-
子词分词:例如使用
BPE(Byte Pair Encoding)算法将长词拆分为更小的单位,帮助处理未登录词。 -
字典扩展:通过增加领域特定的词汇到分词词典中,以提高分词的准确性。
如果《文本预处理:分词》还没完全消化,可以从这张卡片的四个动作重新走一遍。
回看《文本预处理:分词》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。
小结
在这一节中,我们深入探讨了分词这一关键的文本预处理步骤。通过灵活运用不同的方法(如基于规则、基于词典及基于模型的分词),可以有效地将文本拆分为可分析的基本单位。在下一篇中,我们将继续讨论另一项重要的文本预处理技术——去除停用词。它将帮助我们进一步精炼每个文本分析任务的特征集,提升处理效果。
希望您能在实践中应用分词技术,并结合代码示例深入理解其在 NLP 中的重要性。
相关教程
相关入口
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
相关内容