• 如何利用pynlpir进行中文分词并保留段落信息


    一、引言

    nlpir是由张华平博士开发的中文自然处理工具,可以对中文文本进行分词、聚类分析等,它既有在线的中文数据大数据语义智能分析平台,也有相关的python包pynlpir,其github的地址是:

    Pynlpir在Github上的地址

    这个包的使用是免费的,但是授权文件需要每个月更新一次。

    二、利用pynlpir进行分词

    1.安装模块

    首先要安装这个模块,安装方法是在cmd命令行下输入:

    pip install pynlpir

    2. 更新授权

    安装后还可能需要更新一下授权

    pynlpir update

    3. 开始批量分词

    1)基础分词

    1. import pynlpir
    2. pynlpir.open()
    3. s = '欢迎科研人员、技术工程师、企事业单位与个人参与NLPIR平台的建设工作。'
    4. segs = pynlpir.segment(s)
    5. for seg in segs:
    6. print(seg)

    显示结果:

    基本使用方法

    2)批量分词

    主要是采用os模块批量读取当前目录下的txt文件,然后分别按段落读取、分词、标注。词与标注信息之前中【_】来连接,两个词之间用【|】,段落之间加入换行符号,然后写入到【seg_】开头的txt文件里。这里,我们采用的是英文的标注信息,每个文件标注完成后会生成新的文件,最终代码如下:

    1. import pynlpir
    2. import os
    3. # 初始化分词库
    4. pynlpir.open ()
    5. # 进行分词操作
    6. txts = [file for file in os.listdir(".") if file.endswith(".txt")]
    7. for txt in txts:
    8. with open(txt,"r",encoding="utf-8") as f:
    9. lines = [line.strip() for line in f.readlines()]
    10. for line in lines:
    11. segments = pynlpir.segment (line, pos_tagging=True,pos_english=True)
    12. with open("segged_"+os.path.basename(txt),"a+",encoding="utf-8") as fi:
    13. for segment in segments:
    14. try:
    15. fi.write(str(segment[0])+"_"+str(segment[1])+"|")
    16. except Exception as exc:
    17. print(exc,segment)
    18. fi.write("\n")
    19. # 关闭分词库
    20. pynlpir.close ()

    4. 分词效果展示

    经过分词和标注后的文件截图展示如下,可以看到很好地保留了段落的信息,这为后面进行词性统计也做好了准备。后期,可以根据nlpir的标注集,对于所有文本中的词性进行统计分析。

    三、学后反思

    1. pynlpir这个包分词速度还是很快的,但是使用起来有一定的难度。更新license时可以去github上下载,或者本地使用代理下载。
    2. 导入自定义字典时,注意字典编码要转化为ANSI编码,否则可能会报错。
    3. 批量分词时,注意文件的路径最好不要有中文,否则也可能无法顺利分词。
    4. 如果是在Linux上更新Lincense的话,为了保险起见,可以先去github上下载,再进行上传,以确保万无一失。
  • 相关阅读:
    python的卡夫卡安装教程和使用教程
    架构每日一学 4:成为首席架构师,你必须学会顺应人性
    Day10—Spark SQL基础
    线程池:业务代码最常用也最容易犯错的组件
    R-CNN 详解
    并列连词详解
    JS正则表达式
    01背包(换汤不换药)
    java项目之宠物管理系统(ssm框架)
    [Pandas] 数据选择
  • 原文地址:https://blog.csdn.net/henanlion/article/details/136386870