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

news2024/9/27 23:23:08

一、引言

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

Pynlpir在Github上的地址

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

二、利用pynlpir进行分词

1.安装模块

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

pip install pynlpir

2. 更新授权

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

pynlpir update

3. 开始批量分词

1)基础分词

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

显示结果:

基本使用方法

2)批量分词

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

import pynlpir
import os

# 初始化分词库
pynlpir.open ()

# 进行分词操作
txts = [file for file in os.listdir(".") if file.endswith(".txt")]

for txt in txts:
    with open(txt,"r",encoding="utf-8") as f:
        lines = [line.strip() for line in f.readlines()]
        for line in lines:
            segments = pynlpir.segment (line, pos_tagging=True,pos_english=True)
            with open("segged_"+os.path.basename(txt),"a+",encoding="utf-8") as fi:
                for segment in segments:
                    try:
                        fi.write(str(segment[0])+"_"+str(segment[1])+"|")
                    except Exception as exc:
                        print(exc,segment)
                fi.write("\n")

# 关闭分词库
pynlpir.close ()

4. 分词效果展示

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

三、学后反思

  1. pynlpir这个包分词速度还是很快的,但是使用起来有一定的难度。更新license时可以去github上下载,或者本地使用代理下载。
  2. 导入自定义字典时,注意字典编码要转化为ANSI编码,否则可能会报错。
  3. 批量分词时,注意文件的路径最好不要有中文,否则也可能无法顺利分词。
  4. 如果是在Linux上更新Lincense的话,为了保险起见,可以先去github上下载,再进行上传,以确保万无一失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1486182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【分块三维重建】【slam】LocalRF:逐步优化的局部辐射场鲁棒视图合成(CVPR 2023)

项目地址:https://localrf.github.io/ 题目:Progressively Optimized Local Radiance Fields for Robust View Synthesis 来源:KAIST、National Taiwan University、Meta 、University of Maryland, College Park 提示:文章用了s…

Linux设备模型(十一) - platform设备

一,platform device概述 在Linux2.6以后的设备驱动模型中,需关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候, 会寻找与之匹配的驱动;相反的,在系统每注册一个设备的时…

输出梯形 C语言

解析:这个输出图形的题就是一个找规律加数学计算,我们发现每行比上一行多两个*,最后一行的*表达式为h(h-1)*2,即3*h-2,那么每一行就是一个先输出最后一行-当前行*个数个空格&#xf…

【Godot4自学手册】第十九节敌人的血量显示及掉血特效

这一节,我主要学习敌人的血量显示、掉血显示和死亡效果。敌人的血量显示和主人公的血量显示有所不同,主要是在敌人头顶有个红色的血条,受到攻击敌人的血条会减少,并且有掉血数量的文字显示,效果如下: 一、…

详解动态规划(算法村第十九关青铜挑战)

不同路径 62. 不同路径 - 力扣(LeetCode) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finis…

QT Mingw32/64编译ffmpeg源码生成32/64bit库以及测试

文章目录 前言下载msys2ysamFFmpeg 搭建编译环境安装msys2安装QT Mingw编译器到msys环境中安装ysam测试 编译FFmpeg测试 前言 FFmpeg不像VLC有支持QT的库文件,它仅提供源码,需要使用者自行编译成对应的库,当使用QTFFmpeg实现播放视频以及视频…

【leetcode】用队列实现栈

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 点击查看题目 思路: 在做此题之前,我们先要实现队列,这在上个博客中已经写过&#…

算法43:动态规划专练(最长回文子串 力扣5题)---范围模型

之前写过一篇最长回文子序列的博客算法27:最长回文子序列长度(力扣516题)——样本模型 范围模型-CSDN博客 在那一篇博客中,回文是可以删除某些字符串组成的。比如: 字符串为:a1b3c4fdcdba, 那…

赵文彬将出席无磷锅炉工艺助剂在锅炉水节水节能应用

演讲嘉宾:赵文彬 集团副总/技术总监 上远未来水务集团有限公司 演讲题目:无磷锅炉工艺助剂在锅炉水节水节能方面的应用 会议简介 “十四五”规划中提出,提高工业、能源领城智能化与信息化融合,明确“低碳经济”新的战略目标&am…

c++之旅——第四弹

大家好啊,这里是c之旅第三弹,跟随我的步伐来开始这一篇的学习吧! 如果有知识性错误,欢迎各位指正!!一起加油!! 创作不易,希望大家多多支持哦! 本篇文章的主…

一些C语言题目

求10个整数中最大值 #include <stdio.h>//求10个整数中最大值 int main() {int arr[10]{2,5,8,6,19,1,7,3,11,3};int i 0;int max 0;/*for(i 0;i < 10;i){scanf("%d",&arr[i]);}*/for(i 0;i < 10;i){if(arr[i] > max)max arr[i];}printf(&q…

tomcat 反向代理 自建博客 修改状态页 等

一 自建博客 随后&#xff0c;拷贝到webapps下面 并且做软连接 随后重定向 并且下载 cat >/etc/yum.repos.d/mysql.repo <<EOF [mysql57-community] nameMySQL 5.7 Community Server baseurlhttp://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/ enabled1 g…

分享一款我自己开发的自动更新小工具

我们公司最近需要开发一款自动上传的工具&#xff0c;这个工具需要安装在用户电脑上&#xff0c;但是这样不利于维护&#xff0c;于是想到了自动更新这个功能&#xff0c;需要在打开工具时顺带打开自动更新的小工具&#xff0c;这样我们在更新代码后&#xff0c;用户那边就能自…

IDEA POM文件配置profile实现不同环境切换

目录 一、背景 二、实现 2.1创建不同的配置文件 2.2配置POM文件 三、效果 3.1本地使用 2.2线上或者测试环境使用 一、背景 在企业级开发中&#xff0c;为了不影响生产环境的项目运行&#xff0c;一般情况下都会划分生产环境、测试环境、开发环境。不同环境可以配置不同的…

4. 编写app组件

1. 代码 main.ts // 引入createApp用于创建应用 import {createApp} from "vue"// 引入App根组件 import App from ./App.vue createApp(App).mount(#app) App.vue <!-- vue文件可以写三种标签1. template标签&#xff0c;写html结构2. script 脚本标签&…

Linux设备模型(十) - bus/device/device_driver/class

四&#xff0c;驱动的注册 1&#xff0c;struct device_driver结构体 /** * struct device_driver - The basic device driver structure * name: Name of the device driver. * bus: The bus which the device of this driver belongs to. * owner: The module own…

js 面试 什么是WebSockets?HTTP和HTTPS有什么不同?web worker是什么?

概念&#xff1a; webSocket 是一种在客户端和服务端之间建立持久连接的协议&#xff0c;它提供全双工通信通道&#xff0c;是服务器可以主动向客户端推送数据&#xff0c;同时也可以接受客户端发送的数据。 1 webSocket与https区别&#xff1f; 在网络通信中&#xff0c;We…

一款汇聚 精美UI+AI内容生成助手 的实用白板工具

大家好&#xff0c;我是Mandy。今天给大家分享的内容是&#xff0c;如何利用AI快速生成思维导图、PPT、绘画等功能&#xff0c;本文分享的AI功能是基于boardmix实现。 boardmix是一款非常精美的在线白板工具&#xff0c;是一个实时协作的智慧白板上、一键生成PPT、用AI协助创作…

YOLOv9保姆教程,手把手教你训练、检测,快来学习吧!!

首先在这里推送一下我的YOLOv9改进专栏&#xff0c;目前是全网最快的YOLOv9改进专栏&#xff0c;该专栏将更新最新的模块来改进YOLOv9&#xff0c;助力大家论文与科研&#xff0c;欢迎大家了解&#xff01; ⭐专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&…

Python+Selenium4 Web自动化测试框架学习(一)

主要框架及技术 1.第一个selenium例子 import timefrom selenium import webdriver from selenium.webdriver.common.by import Bydriver webdriver.Chrome() driver.get("https://www.bilibili.com") driver.find_element(By.CLASS_NAME,"nav-search-input&…