Python Jieba中文分词工具实现分词功能

程序功能及简介:安装和测试Python下的中文分词工具

开发时间:2019年3月10

开发时长:0.5个工作日。

开发要求及分析: 在Python下可以采用的较好的中文分词工具是结巴中文分词和中科院的分词系统,现就Jieba中文分词使用功能做一些探究。

一、操作步骤:

 1、 安装结巴中文分词工具

    在32位,Windows7 ,Pycharm,Anaconda下安装最新的结巴中文分词工具。

  具体步骤:

(1)、Pycharm,Anaconda 安装及配置,https://www.cnblogs.com/yuxuefeng/articles/9235431.html,内含安装说明

(2)、Anaconda 集成了Jieba库,直接填加,操作如下:

Python Jieba中文分词工具实现分词功能_第1张图片

Python Jieba中文分词工具实现分词功能_第2张图片

Python Jieba中文分词工具实现分词功能_第3张图片

2、目前比较好的中文分类语料库有复旦大学谭松波中文分类语料库(下载地址: https://download.csdn.net/download/miracletiger/2770873)和搜狗新闻分类语料库(下载地址:https://www.sogou.com/labs/resource/cs.php)。本次使用谭松波博士的数据测试。

3、程序编程代码,详见如下:

文件目录 :

Python Jieba中文分词工具实现分词功能_第4张图片

  • """
            时间:2019年3月10
            作者:逆水
            功能:中文分词系统
            版本:V1.0
            增加功能:读取未分词分类语料库,再写入分词后分类语料库
    
    
    """
    
    import sys
    import os
    import jieba
    
    
    def savefile(savepath, content):
        """
            保存至文件
        """
        fp = open(savepath, mode="w", encoding="utf-8")
        fp.write(content)
        fp.close()
    
    
    def readfile(path):
        """
          读取文件
        """
        fp = open(path, mode="rb")
        content = fp.read()
        fp.close()
    
        return content
    
    
    
    def main():
        """
            主函数
        """
        corpus_path = "机器学习文本分类训练集/"          # 未分词分类语料库路径
        seg_path = "train_corpus_seg/"               # 分词后分类语料库路径
        catelist = os.listdir(corpus_path)           # 获取corpus_path下所有的子目录
    
        # 获取第个目录下的所有文件。
        for mydir in catelist:
            class_path = corpus_path + mydir + "/"   # 拼出分类子目录的路径
            seg_dir = seg_path + mydir + "/"         # 拼出分类子目录语料分类目录
            if not os.path.exists(seg_dir):          # 判定是否存在目录,不存在建立目录
                    os.makedirs(seg_dir)
            file_list = os.listdir(class_path)       # 获取类别目录下所有文件
            for file_path in file_list:              # 遍历类别目录下的文件
                fullname = class_path + file_path    # 拼出文件名全路径
                content = readfile(fullname).strip()  # 读取文件内容
                content = content.decode('ANSI', 'ignore')
                content = content.replace("\r\n", "").strip() # 删除换行和多余的空格
                content = content.replace(" ", "") # 删除换行和多余的空格
                content = content.replace(" ", "")  # 删除换行和多余的空格
                content_seg  = jieba.cut(content)    # 为文件内容分词
                # 将处理的文件保存到分词后语料目录中
                savefile(seg_dir + file_path, "/".join(content_seg))
    
    if __name__ == "__main__":
        main()

     

4、测试结果:

Python Jieba中文分词工具实现分词功能_第5张图片

5、编程过程中遇到问题及解决方法:

replace函数只支持str格式,报错:TypeError: a bytes-like object is required, not 'str'

Python Jieba中文分词工具实现分词功能_第6张图片

调试中发现问题

content 为byte类型,replace不支持,所以寻找到了问题,将content转换成str类型。代码如下:content = content.decode('ANSI', 'ignore')

常见的中文编码格式:

1、Unicode编码

 Unicode编码通常由两个字节组成,称作USC-2,个别偏僻字由四个字节组成,称作USC-4。前127个还表示原来ASCII码里的字符,只不过由一个字节变成了两个字节。

优点:可以囊括多国语言,囊括了常用汉字

不足:表示一个英文字符由一个字节变成了两个,浪费存储空间和传输速度。生僻字表示不足

测试不能用,乱码。

2、UTF-8编码

Unicode编码的一种,Unicode用一些基本的保留字符制定了三套编码方式,它们分别为UTF-8,UTF-16,UTF-32.在UTF-8中,字符是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处是UTF-8保留了ASCII字符的编码作为它的一部分。UTF-8俗称“万国码”,可以同屏显示多语种,一个汉字通常占用3字节(生僻字占6个)。为了做到国际化,网页尽可能采用UTF-8编码。

测试不能用,乱码。

3、GB2312编码

GB2312简体中文编码,一个汉字占用2个字节,在大陆是主要的编码方式。当文章/网页中包含繁体中文、日文、韩文等时,这些内容可能无法被正确编码。

作用:国家简体中文字符集,兼容ASCII

位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。

范围:高字节从A1-A7,低字节从A1到FE。将高字节和低字节分别加上0xA0即可得到编码。

测试成功!

4、BIG5编码

称为繁体中文编码,主要在台湾地区使用。

未测试。

5、GBK编码

作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312.

位数:使用2个字节表示,可表示21886个字符。

范围:高字节从81到FE,低字节从40到FE.

测试成功

6、GB18030编码

作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK。

位数:它采用变字节表示(1ASCII, 2,4字节)。可表示27484个文字。

范围:1字节从00到7F;2字节高字节从81到FE,低字节从40到7E和80到FE;4字节第一三字节从81到FE,第二四字节从30到39.

测试成功

7、ANSI编码

尽然也是成功的。难道系统默认的。

二、中文分词的用途:

   在中文自然语言处理 (Chinese Natural Language Processing)过程中,许多分析技术需要用到“词”的概念,需要在词的基础上处理,比如词性标注、语法分析、词义消歧、语义分析、自动文摘、文本分类、文本聚类、文本检索、搜索引擎、机器翻译等。可以说中文分词技术是中文信息处理的基石。词的正确切分是进行中文文本处理的必要条件。

 PS:分词代码上传到我的资源里,试试吧 https://download.csdn.net/download/jianminli2/10727332

你可能感兴趣的:(Python Jieba中文分词工具实现分词功能)