不像英语和拉丁语,汉语是紧密相连的,单词之间没有空格的划分。然而,当我们进行自然语言处理或语音识别,或其他文本操作时,大多数情况下,词汇是文本的核心,是文本处理的前提。因此,我们需要一个简单高效的工具,将完整的文本分解成具体的单词,做出更加准确的词库,用于文本处理。Jieba就是这样一个新手友好的分词工具,它还包含一些其他的功能。本文将通过代码详细讲解jieba的使用方法。
首先是洁霸的安装。
一个很简单的命令:pip安装jieba,然后在python程序中输入import jieba并执行。如果没有错误,安装就完成了。
基本分词功能和用法
Jieba.cut和jieba.cut_for_search是分词的基本函数,返回的结构都是一个迭代生成器。比如下面这个句子会被分解成几个单词,我们可以用For循环得到每个单词。
代码:
Jieba_str = "人工智能技术是创造未来智能社会的重要技术!"seg_list = jieba.cutprint
执行结果:
如你所见,如果你直接输出,你会输出一个生成器。因此,为了得到直观的分词结果,我们可以使用join函数和分隔符将每个单词拼接成一个句子,如下所示。
代码:
Jieba_str = "人工智能技术是创造未来智能社会的重要技术!"seg_list = jieba.cutprint)
执行结果:
人工/人工智能/智能/技术/是/创造/未来/智能/智能/社会/重要/技术//
我们可以看到,一个句子得到了很好的切分效果。jieba.cut函数中的参数,第一个参数是要分解的字符串,第二个cut_all参数是指是否使用全模式。如果为True,则使用完整模式,如果为False,则表示没有完整模式。使用全模式后,分解的粒度会更细。不使用full pattern时,只分解一个句子,分解的单词不会重复。如下。
cut_all为False时前面代码的执行结果:
人工智能/科技/是/创造/未来/智能/社会/重要/科技/!
我们来分析一下cut_all_search在解霸中的用法。该功能也用于分词。不同的是,这个功能用的是搜索引擎模式,比全模式分词更精细!
代码:
seg _ list _ search = jieba . cut _ for _ search print)
执行结果:
人工/智能/人工智能/技术/是/创造/未来/智能/智能/未来社会/社会/重要/技术/!
但根据我们的经验,人工智能应该是一个专用名词,不应该割裂开来。所以,解霸允许用户添加专用名词词包,词包中出现的所有词都不会被分割。添加单词包的方法如下。
代码如下:
User_dict = ["人工智能技术"]jieba.load_userdict
这里使用了load_userdict函数。这个函数也可以传入一个txt文件,文件中的每一行都代表一个专有名词。该功能运行后,原非全模式代码执行结果如下:
人工技术/是/创造/未来/智能/社会/重要/技术/!
可见,这里的人工智能技术已经作为一个完整的词使用了。
如果要添加的词汇量很小,还可以用add_word添加名词,用del删除名词。
代码:
Jieba.add_wordjieba_str = "人工智能技术是创造未来智能社会的重要技术!"seg_list = jieba.cutprint)
执行结果:
人工智能技术是创造/未来/智能/社会/重要/技术/!
可以看出,人工智能技术是创造没有被分离出来作为一个专有名词。同样,也可以用del删除专有名词。
以上函数是洁霸这个库中使用频率最高的函数,也是其核心函数。只要对这些功能稍加练习,就可以基本掌握洁霸库的使用。使用过程中如有问题,欢迎评论!