1.2 文本处理技能
1.2.1 字符串处理
1.字符串的创建
字符串是Python中最常用的数据类型,我们可以使用单引号或双引号来创建字符串。创建字符串很简单,只需要为变量分配一个值即可。
例如:
在终端查看var1变量中的内容如下所示:
此外,Python支持三引号,用于包含特殊字符,保存原始格式,具体如下所示:
在终端查看var2变量中的内容如下所示:
为了正确地表示字符串中的单引号,需要在字符串两边使用双引号。如果使用了单引号,就会出现语法错误。出现语法错误的程序如下所示:
在终端中查看变量var3的结果如下所示:
因此,在使用含有单引号的字符串时必须使用双引号。
2.访问字符串中的值
Python中使用方括号[]来访问字符串。按照从左到右的顺序取字符,第一个字符的索引(也称为下表)是0;也可以按照从右到左的顺序取字符,索引值使用负数,最后一个字符的索引是-1。如果使用的索引超出字符串本身的范围,则会出现“IndexError”越界错误。具体程序如下所示:
在终端中查看上述案例的输出结果如下所示:
上述案例同时也给出了使用切片运算符[:]得到一部分字符串的方法。冒号左边是起始下标,右边是结束下标。其中,左边的下标包含在子字符串内,而结束下标对应的字符不包含在子字符串内。步长值也可以是负数,表示自右向左取切片。
3.字符串的运算符
实例变量a值的字符串为“AIX”,变量b值为“Eboard”,字符串运算符示例如表1.2所示。
表1.2 字符串运算符示例
下面的代码给出了表1.2中字符串运算符的具体案例和运行结果。
在终端中查看上述案例的输出结果如下所示。
1.2.2 中文分词及案例实现
中文分词指的是将中文句子切分成单独的词语。分词就是将连续的字序列按照一定的规则组合成词序列的过程。自然语言处理的多数任务都需要在词的基础上进行。因此,中文分词作为自然语言处理任务的底层技术,一定程度上决定了自然语言处理的任务能否取得好的结果。我们知道,英文是可以按照空格分割的,但是中文就有很大的不同,其难点在于中文的歧义现象和新词汇的出现。
所以,我们在进行自然处理任务的时候,要先对文本内容进行分词。本节将介绍jieba分词工具及其用法。
jieba是一款非常流行的中文开源分词包,具有高性能、高准确率、高可扩展性等特点。jieba分词支持四种模式。
(1)精确模式:试图将句子最精确地切开,适合文本分析。
(2)全模式:把句子中所有可以组成词的词语都扫描出来,速度非常快,但是不能解决歧义。
(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适用于搜索引擎分词。
(4)paddle模式:利用PaddlePaddle深度学习框架,训练序列标注(双向GRU)网络模型实现分词。jieba分词如果要使用paddle模式就需安装paddlepaddle-tiny。
1.实验目标
使用jieba实现中文分词。
2.实验环境
实验环境如表1.3所示。
表1.3 实验环境
3.实验步骤
创建words_seq.py源码文件,用于实现词频的统计。
按照如下步骤编写代码。
步骤一:导入模块
步骤二:创建word_segment函数,实现不同模式的分词
步骤三:自定义main方法编写及主函数处理
步骤四:运行代码
使用如下命令运行实验代码。
经过运行,终端输出内容下所示:
从以上结果可以看出,精确模式能获得句子的语义信息,因此自然语言处理的各种任务常常使用精确模式。全模式和搜索引擎模式适用于搜索和推荐领域,而paddle模式则和精确模式类似,不同之处在于paddle模式匹配会对包含语义最大的词组进行切分。