将stanfordcorenlp的tokenizer换成自定义的(或用stanfordcorenlp对自定义tokenizer分词后的结果做ner)

本文是基于中文语料做的,对于英文语料应该也是同理,即同样适用的。

分析stanfordcorenlp的分词结果,可以发现,它好像是对最小的中文词进行分词,即其对中文的分词粒度很小,这对于某些nlp场景可能就不太合适了,自然的就想到能不能将stanfordcorenlp中用于分词的tokenizer替换掉,替换成自定义的,这样就可以控制中文分词结果是你想要的了。

基于以上动机,我查找了相关资料,发现需要对下载到的stanfordcorenlp的原文件夹中的tokensregex中的代码进行修改。我认为这样直接修改源文件容易使整个文件出错而不能用,也不太敢改,所以我就想到了另一种思路:

我直接改tokenizer比较难,那么我直接给你我分词后的结果,你根据我的分词结果帮我做ner(命名体识别)任务可以吗?

我又去查找了相关资料,发现只要将原本的nlp.ner(sentence)替换成nlp.annotate(...)即可,详细的代码如下:

nlp = StanfordCoreNLP(r'D:\stanford-corenlp-full-2016-10-31', port=8098, lang='zh')#,quiet=False,logging_level=logging.DEBUG)  后面的quiet和logging_level是用于显示日志信息,便于报错是寻找bugner_result = nlp.annotate(sentence,properties={
'annotators': 'ner',
'tokenize.language': 'Whitespace',
'pipelineLanguage':'zh', # 这个参数要加上,对中文才起作用
'outputFormat': 'json'
})print(ner_result)

这样运行以上代码,就可以得到 按照你给的中文分词结果,然后利用stanfordcorenlp做ner的结果,如下所示:

输入的分词后以空格连接的句子:
被 扶养 人 生活费 43821.84 元 ;利用stanfordcorenlp做ner的结果:(json格式)
{"sentences":[{"index":0,"tokens":[{"index":1,"word":"被","originalText":"被","lemma":"被","characterOffsetBegin":0,"characterOffsetEnd":1,"pos":"LB","ner":"O"},{"index":2,"word":"扶养","originalText":"扶养","lemma":"扶养","characterOffsetBegin":2,"characterOffsetEnd":4,"pos":"VV","ner":"O"},{"index":3,"word":"人","originalText":"人","lemma":"人","characterOffsetBegin":5,"characterOffsetEnd":6,"pos":"NN","ner":"O"},{"index":4,"word":"生活费","originalText":"生活费","lemma":"生活费","characterOffsetBegin":7,"characterOffsetEnd":10,"pos":"NN","ner":"O"},{"index":5,"word":"43821.84","originalText":"43821.84","lemma":"43821.84","characterOffsetBegin":11,"characterOffsetEnd":19,"pos":"CD","ner":"MONEY","normalizedNER":"元43821.84"},{"index":6,"word":"元","originalText":"元","lemma":"元","characterOffsetBegin":20,"characterOffsetEnd":21,"pos":"M","ner":"MONEY","normalizedNER":"元43821.84"},{"index":7,"word":";","originalText":";","lemma":";","characterOffsetBegin":22,"characterOffsetEnd":23,"pos":"PU","ner":"O"}]}]}

一种方法解决不了问题,有时候采用迂回的策略就可以相对容易的解决问题了hh

这里是希望你能越来越好的 小白冲鸭 ~~~

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

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

相关文章

每日一练——相同分数的最大操作数目

3038. 相同分数的最大操作数目 I - 力扣&#xff08;LeetCode&#xff09;相同分数的最大操作数目 I3038. 相同分数的最大操作数目 I - 力扣&#xff08;LeetCode&#xff09; 第一版 int maxOperations(int* nums, int numsSize) {if(numsSize < 1)return 0;int temp 0;…

内存管理--4.用幻灯片讲解内存分配器Allocator

用幻灯片讲解内存分配器Allocators Allocators 内存分配器 提供内存分配策略的通用接口委托给 C 运行时&#xff1a;new / delete使用块内存池管理内存使用不同大小的块内存池管理内存 为什么用分配器? 将容器逻辑与内存分配策略解耦速度&#xff1a;内存分配速度慢确保…

嵌入式学习——Linux高级编程复习(文件IO)——day37

1. 文件IO——&#xff08;无缓存、文件描述符&#xff09; 1.1 定义 文件IO是指文件输入/输出&#xff0c;是计算机程序中用于读取和写入文件的操作。通过文件IO&#xff0c;程序可以从文件中读取数据到内存中&#xff0c;或者将内存中的数据写入文件中&#xff0c;文件可以是…

Python3 笔记:字符串的 startswith() 和 endswith()

1、startswith() 方法用于检查字符串是否是以指定子字符串开头&#xff0c;如果是则返回 True&#xff0c;否则返回 False。如果参数 beg 和 end 指定了值&#xff0c;则在指定范围内检查。 语法&#xff1a;str.startswith(substr, beg0,endlen(string)) 参数&#xff1a; s…

华为OD技术面试-最长回文串-2024手撕代码真题

题目:最长回文串 给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的 最长的 回文串 的长度。 在构造过程中,请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 示例 1: 输入:s = "abccccdd" 输出:7 解释: 我们可以构造的最…

基于51单片机水塔水位控制系统

基于51单片机水塔水位控制 &#xff08;仿真&#xff0b;程序&#xff09; 功能介绍 具体功能&#xff1a; 1.用滑动变阻器模拟水位&#xff0c;ADC0809将模拟信号转换为数字信号&#xff1b; 2.LCD1602显示当前水位和水位阈值&#xff1b; 3.当水位超过设定阈值&#xff…

MySQL基础_10.约束

文章目录 第一章、约束1.1 约束的定义1.2 非空约束1.3 唯一性约束1.4 主键约束1.5 自增列1.6 外键约束1.7 CHECK约束1.8 DEFAULT约束 第一章、约束 1.1 约束的定义 约束是对表中字段的限制。 约束按照作用范围可以分为&#xff1a;列级约束和表级约束 列级约束&#xff1a;声…

【二进制部署k8s-1.29.4】十二、ingress-nginx的安装部署

文章目录 简介 一.ingress的安装一.验证安装 简介 本章节主要讲解安装ingress-nginx-v1.10.1的安装&#xff0c;ingress的安装比较简单&#xff0c;只需要下载yaml文件&#xff0c;修改一下镜像地址&#xff0c;原本的镜像地址由于墙的原因&#xff0c;没法直接下载&#xff0c…

C++网络编程——多路IO复用 重点epoll

前言补充 阻塞与非阻塞 同步阻塞IO &#xff08;Blocking IO) : 传统IO模型 同步非阻塞IO &#xff08;Non-blocking IO)&#xff1a; 默认创建的socket都是阻塞的&#xff0c;若是要设置成非阻塞IO需要socket被设置成NONBLOCK。 IO多路复用&#xff08;IO Multiplexing&…

微软 Windows 10 22H2 发布可选更新 19045.4474,修复窗口显示问题等

微软今天面向 Windows 10 22H2 版本&#xff0c;发布了 KB5037849 非安全可选更新&#xff0c;用户安装后版本号升至 Build 19045.4474。 IT之家 5 月 30 日消息&#xff0c;微软今天面向 Windows 10 22H2 版本&#xff0c;发布了 KB5037849 非安全可选更新&#xff0c;用户安…

内部资料13000+变现资源,写作副业项目,找灵感就用它!

很多刚学在公众号&#xff0c;或是在其他自媒体平台写副业项目的朋友&#xff0c;写一段时间后会发现找不到写的内容。于是&#xff0c;每天都会为写什么而苦恼&#xff0c;找不到素材&#xff0c;没有灵感。 关注富哥资源站的朋友都知道&#xff0c;咱们的资源站已经更新了内…

2024 Jiangsu Collegiate Programming Contest E. Divide 题解 主席树

Divide 题目描述 Given an integer sequence a 1 , a 2 , … , a n a_1,a_2,\ldots,a_n a1​,a2​,…,an​ of length n n n. For an interval a l , … , a r a_l,\ldots,a_r al​,…,ar​ in this sequence, a Reduce operation divides the maximum value of the inter…

【NI国产替代】产线测试:数字万用表(DMM),功率分析仪,支持定制

数字万用表&#xff08;DMM&#xff09; • 6 位数字表显示 • 24 位分辨率 • 5S/s-250KS/s 采样率 • 电源和数字 I/O 均采用隔离抗噪技术 • 电压、电流、电阻、电感、电容的高精度测量 • 二极管/三极管测试 功率分析仪 0.8V-14V 的可调输出电压&#xff0c;最大连…

[Cloud Networking] Layer Protocol (continue)

文章目录 1. STP / RSTP / MSTP Protocol1.1 STP的作用1.2 STP 生成树算法的三个步骤1.3 STP缺点 2. ARP Protocol3. DHCP Protocol3.1 DHCP 三种分配方式3.2 DHCP 攻击 4. IPSEC / MACSEC 1. STP / RSTP / MSTP Protocol 1.1 STP的作用 消除二层环路&#xff1a;通过阻断冗余…

shell脚本基础教程

快捷目录 1、解释器2、shell脚本调用方式3、变量自定义变量环境变量特殊变量变量的默认值declare 命令readonly命令let命令 4、数据类型字符串 5、字符串操作6、数组定义数组读取数组修改数组删除数组获取数组长度 7、运算符算术运算符关系运算符布尔运算符逻辑运算符 要在[[ ]…

求极差(range)

题目描述 小红拿到了一个数组&#xff0c;其中每个元素都是素数。小红准备进行若干次以下操作&#xff1a; 选择两个素数元素&#xff0c;将他们合并&#xff0c;生成的新元素为原来两个素数的乘积。 现在小红希望操作到不能再操作为止&#xff0c;然后使得最终的极差&#…

王道408数据结构CH4_串

概述 4 串 4.1 串的实现 4.1.1 存储结构 定长顺序存储 #define Maxsize 255typedef struct{char *ch[Maxsize];int length; }SString;堆分配存储 typedef struct{char *ch;int length; }HString;块链存储 4.1.2 基本操作 4.2 模式匹配&#xff08;子串定位&#xff09; 4.2.…

Docker面试整理-Docker Swarm是什么?

Docker Swarm 是 Docker 的原生集群管理和编排工具,用于将多个 Docker 主机集合成一个虚拟的 Docker 主机。它允许你在多台机器上部署、管理和扩展容器化应用,是构建和管理容器化应用的高可用集群的一种方式。 Docker Swarm 的核心特性包括: 1. 集群管理: ● Docker Swarm…

RaspAP:轻松实现树莓派无线 AP

RaspAP 是一个可以将树莓派轻松部署成无线 AP&#xff08;Access Point&#xff09;的软件方案&#xff0c;具有一套响应式的 WebUI 来控制 WiFi&#xff0c;用起来和家用路由器一样方便。RaspAP 可以运行在 Raspbian 上&#xff0c;只需要先给树莓派安装好 Raspbian 系统&…

12寸晶圆厂建设概述

1、关键步骤 半导体12英寸&#xff08;12吋&#xff09;晶圆厂的建厂过程是一个复杂且耗时的工程&#xff0c;涉及到多个阶段&#xff0c;包括但不限于以下几个关键步骤&#xff1a; 1. **项目规划与设计**&#xff1a;首先需要进行项目的可行性研究&#xff0c;确定产品定位…