深度挖掘文本

核心提示和英文与拉丁语系不同,中文是紧凑连接的,词与词之间不用空格来分割,而当我们进行自然语言处理或者语音识别,或者进行其他的文本操作时,在大部分情况下,词汇是文本的核心,是进行文本处理的前提,因此需要一个简单高效的工具把完整的文本分解为具体的词,

不像英语和拉丁语,汉语是紧密相连的,单词之间没有空格的划分。然而,当我们进行自然语言处理或语音识别,或其他文本操作时,大多数情况下,词汇是文本的核心,是文本处理的前提。因此,我们需要一个简单高效的工具,将完整的文本分解成具体的单词,做出更加准确的词库,用于文本处理。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删除专有名词。

以上函数是洁霸这个库中使用频率最高的函数,也是其核心函数。只要对这些功能稍加练习,就可以基本掌握洁霸库的使用。使用过程中如有问题,欢迎评论!

 
友情链接
鄂ICP备19019357号-22