(十一)将PositionRank模型运行到给定数据集上(三)

数据标注工具:AiLabel.js实现标注 超详细教程 案例分享 背景:在前端开发过程中难免遇到针对图片的缩放平移;以及在图片上进行矢量数据、文本、标注的展示;如果你有上面的任何需求,恭喜你,找到组织了.... 在此背景下,AILabel.js出生了。 前面文章我们已经介绍过AiLabel.js了; https://blog.youkuaiyun.com/u012967771/article/details/113148527 npm下载地址:https://www.npmjs.com/package/ailabel github地址:https://github.com/d. 阅读详情

2021SC@SDUSC

使用StandfordNlp替换nltk的相关方法

将nltk中的相关方法替换为nlp的相关方法,运行程序。

# 初始化standfordNlp
from stanfordcorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('http://localhost', port=9000,lang='zh')
# 修改分句、词性标记的相关方法
self.sentences = [nlp.pos_tag(s) for s in re.split(r'[,。 .]',self.input_text)]
# 修改分词方法
sentences = [nlp.pos_tag(nlp.word_tokenize(s)) for s in re.split(r'[,。 .]',text)]
# LoadFile初始化程序
    def __init__(self, input_text):
        """
        初始化LoadFile类
        :param input_text: 输入的文本文件
        """

        self.input_text = input_text
        """ 输入文件路径. """

        self.sentences = []
        """ 输入文本的句子列表 """

        self.words = []
        """ 文本的此列表 (unigrams)"""

        self.candidates = []
        """ 输入文本的候选词列表. """

        self.weights = {}
        """ 候选词的得分(权重). """

        self.gold_keyphrases = []

        # the text is tokenized at the sentence level and part-of-speech tags are assigned
        # 元素是列表,代表一个句子,句子用列表表示,元素是(word,词性)
        self.sentences = [nlp.pos_tag(s) for s in re.split(r'[,。 .]',self.input_text)]

存在的问题1

起初程序运行正常正常,然后出现错误:

[pool-1-thread-5] WARN CoreNLP - java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - Error at index 0 in: "和7"

修改数据集内容多次运行仍存在相同的问题。

由错误信息可知错误原因是decode的信息中有特殊字符’%‘,于是找到源码中关于’%‘的处理:
对该部分代码分析如下:

public static String decode(String s, String enc)
    throws UnsupportedEncodingException{
 
    boolean needToChange = false;
    int numChars = s.length();
    StringBuffer sb = new StringBuffer(numChars > 500 ? numChars / 2 : numChars);
    int i = 0;
 
    if (enc.length() == 0) {
        throw new UnsupportedEncodingException ("URLDecoder: empty string enc parameter");
    }
 
    char c;
    byte[] bytes = null;
    // 对%,+做了特殊处理
    while (i < numChars) {
        c = s.charAt(i);
        switch (c) {
        case '+':
            sb.append(' ');
            i++;
            needToChange = true;
            break;
        case '%':
            /*
			/*  
			*从%这个实例开始,处理所有  
			*形式为%xy的连续子字符串。 每一个  
			*子字符串%xy将产生一个字节。 转换所有  
			*通过这种方式获得的连续字节  
			*所提供的*个字符  
			*编码。  
             */
 
            try {
 
                // (numChars-i)/3 is an upper bound for the number
                // of remaining bytes
                if (bytes == null)
                    bytes = new byte[(numChars-i)/3];
                int pos = 0;
 
                while ( ((i+2) < numChars) &&
                        (c=='%')) {
                    int v = Integer.parseInt(s.substring(i+1,i+3),16);
                    if (v < 0)
                        throw new IllegalArgumentException("URLDecoder: Illegal hex characters in escape (%) pattern - negative value");
                    bytes[pos++] = (byte) v;
                    i+= 3;
                    if (i < numChars)
                        c = s.charAt(i);
                }
 
                // A trailing, incomplete byte encoding such as
                // "%x" will cause an exception to be thrown
 
                if ((i < numChars) && (c=='%'))
                    throw new IllegalArgumentException(
                     "URLDecoder: Incomplete trailing escape (%) pattern");
 
                sb.append(new String(bytes, 0, pos, enc));
            } catch (NumberFormatException e) {
                throw new IllegalArgumentException(
                "URLDecoder: Illegal hex characters in escape (%) pattern - "
                + e.getMessage());
            }
            needToChange = true;
            break;
        default:
            sb.append(c);
            i++;
            break;
        }
    }
 
    return (needToChange? sb.toString() : s);
}

通过阅读URLDecode 解码源码可以看出程序是将“%”紧跟的后两位一起处理。

解决方案

对%紧跟的后两位做了处理,所以我们需要将%后两位做下处理,保证%的格式是%+两位数字。处理方式如下:

data= data.replace("%(?![0-9a-fA-F]{2})", "%25");

在这里利用了正则表达式的零宽负向先行断言(zero-width negative lookahead assertion)

再次运行程序,处理正常:

​ 运行截图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n3sPNxhF-1639280399143)(C:\Users\26864\AppData\Roaming\Typora\typora-user-images\image-20211212112704861.png)]

​ StandfordNlp服务端截图:

在这里插入图片描述

存在的问题2

Evaluation metrics均为0:
在这里插入图片描述

不难想到应该是评分相关的方法对无法处理中文,因此还需修改evaluation.py模块来对中文进行处理。

在下一篇博客中我将对Evaluation.py进行代码分析。

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案 本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案 阅读详情

相关推荐

Apk脱壳圣战之---脱掉“梆梆加固”的保护壳

一、前言 现如今Android用户的安全意识不是很强,又有一些恶意开发者利用应用的名字吸引眼球,包装一个恶意锁机收费的应用,在用户被骗的安装应用之后,立马手机锁机,需要付费方可解锁。这样的恶意软件是非常让人痛恨的。所以本文就用一个案例来分析如何破解这类应用,获取解锁密码,让被骗的用户可以找回爽快! 二、分析软件锁机原理 本文用的是一款叫做:安卓性能激活.apk,关于样本apk文件后面会...

尼古拉斯.赵四的博客 5060

(八)PositionRank代码解读(三)

2021SC@SDUSC 简介 本文将分析process_data数据处理模块。 read_input_file方法 该方法用于文件的读取,除了路径判断是否存在以外还需注意decode方法的第二个参数“ignore”,标识忽略无法解析的二进制编码,如果不忽略,遇到错误二进制编码时会报错。 def read_input_file(this_file): if os.path.exists(this_file): with codecs.open(this_file, "rb") as

Simonsdu的博客 1433

学习笔记( 11 ) - 解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

烟溪彭于晏的博客 2万+

干货!详述Python NLTK下如何使用stanford NLP工具包

阅读目录 目录1 NLTK和StandfordNLP简介2 安装配置过程中注意事项3 StandfordNLP必要工具包下载4 StandfordNLP相关核心操作5 参考文献和知识扩展 干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言

Victor-H的专栏 3606

用野火FPGA开发板(EP4CE10)手把手教你实现一个高精度频率计(附完整Verilog代码)

本文详细介绍了基于野火FPGA开发板(EP4CE10)实现高精度频率计的全过程,涵盖等精度测量法的核心原理、Verilog代码实现及优化技巧。通过实际案例演示,帮助开发者掌握1Hz-50MHz范围、精度达0.1%的频率计设计方法,并提供完整的工程代码和实测数据。

weixin_29261711的博客 439

CH592F RISC-V蓝牙LED灯设计:WS2812B驱动与微信小程序控制

蓝牙低功耗(BLE)是嵌入式物联网设备主流无线通信技术,其核心在于协议栈轻量化、射频稳定性与外设协同调度。基于RISC-V内核的蓝牙SoC(如CH592F)凭借高集成度、低待机电流和免外部巴伦的射频设计,显著降低硬件复杂度与BOM成本;而WS2812B作为单线级联RGB LED,依赖微秒级精准时序,需借助定时器+DMA机制规避CPU干预,保障动态效果流畅性。该方案融合电容触摸交互、GATT服务自定义与微信小程序标准Bluetooth API对接,适用于智能照明、DIY彩灯及教学实践等场景,是BLE+LED实

weixin_31163455的博客 433

自然语言处理(NLP)-NLTK入门学习(三)

前面两篇已经基本上算是完成了预处理部分的分享了,这里开始分享一些文本处理。语言结构是非常复杂的,需要按照其不同的处理层次来对它进行描述。 这里会分享常见的文本结构,介绍结构之间的区别和用法。同样我会试着通过代码的方式以实例展示其处理过程。 概念: 1. 为什么需要进行文本解析 回答这个问题的时候可以先回想一下当初我们学习语言时是怎样的一个过程,首先我们先学一些单词, 2. 两种解析方式:...

三米学习笔记杂货铺 1806

Mac 环境配置jdk、Maven

3、终端打开配置jdk时候建好的脚本文件: open -e .bash_profile。4、查看maven是否安装成功和系统能不能识别maven/mvn命令:⬇️。输入⬇️并保存: 其中第一行JAVA_HOME替换为自己下的jdk路径。,安装编译好的二进制版本,具体安装zip还是tar.gz我看的。5、查看jdk是否安装成功和系统能不能识别java命令:⬇️。至此,我的Mac系统的环境配置jdk、Maven完成!然后就发现我的maven命令还是没作用,不识别,下载后直接安装即可,很快,点几下就OK了。

weixin_42416791的博客 4397

NLTK结合stanfordnlp工具包使用方法总结

简述 NLTK 是一款著名的 Python 自然语言处理(Natural Language Processing, NLP)工具包,在其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speech tag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项 NL...

Think 1万+

采用了fluent模拟了平壁面结霜过程。udf,很经典,可以试试。

利用该模型作为FLUENT中的源项,模拟了在局部冷却下冷表面上的霜形成,以预测霜的形态、温度分布和霜的重量,结果与实验结果吻合良好。结果显示,霜首先围绕冷却块形成,然后逐渐向其他方向扩展,冷却块上方的霜密度最大。随着时间的推移,平均霜厚度逐渐增加,生长速率减慢,而平均霜密度随增长速率变快而增加。相变传递微观过程与机理、蒸发及冷凝换热、强化传热、高效传热管、热泵、制冷、节水节能新技术、电子元器件冷却、余热回收及梯级利用等。udf,很经典,可以试试。工程热物理、空调、热能、低温制冷、化工、物理等。

qq_15963745的博客 922

Yolov8-pose关键点检测:loss优化 | LRM loss困难样本挖掘,提升难样本、遮挡物等检测精度

LRM loss应用到能够大幅提升pose遮挡物性能

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1715

在NLTK中使用StanfordNLP的功能以及单独安装StanfordNLP

一 在NLTK中使用StanfordNLP的功能 1 安装nltk: 使用以下命令进行安装, pip install nltk 参考 2 导入nltk数据: import nltk nltk.download() 因为网速原因,nltk.download()很慢甚至不成功。这时,我们记住nltk.download()运行时产生的图形界面中Download Directory地址。 3 下载NLTK官网上的packages包,并将其解压后名称改为nltk_data。将该包放入2记录的地.

MSFollower的博客 1949

【CT/电镜 重建教程 1.1】层析成像的精确实空间迭代重建算法(RESIRE)

在此,我们报告了RESIRE算法的发展用于准确的断层重建。与实空间迭代算法相比,RESIRE使用傅里叶切片定理或Radon变换作为正向投影,使用线性变换作为反向投影,两者都具有高精度。与EST和GENFIRE相比,RESIRE是一种实空间迭代算法,可以在并行计算中实现快速运行时间。

2401_87064292的博客 1062

(九)将PositionRank模型运行到给定数据集上(一)

2021SC@SDUSC 文章目录简介数据集格式思路一思路二最终选择算法实现 简介 将PositionRank模型在指定中文数据集上运行需要克服两个主要难点:1.数据集的格式不同。2.需要修改数据处理代码,修改分句、分词方法,去除词干还原算法。 本文将解决第一个问题。 数据集格式 在PositionRank原数据集中,数据被分成了两个文件夹,分别对应原文和关键词,文件名一一对应。而本项目前期获取数据存储在csv文件中,文件名-摘要-关键词为一个数据项。 思路一 对数据进行预处理,将其保存为原数据集的形式。

Simonsdu的博客 527

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

(十四)在百度学术中文数据集上运行PositionRank获取最终实验结果

文章目录前言爬虫数据关键词如下:运行截图:![在这里插入图片描述](https://img-blog.csdnimg.cn/6f2f112ace6c435996b81b52ad5264a8.png)生成的数据集概况:运行positionrank结果针对中文数据集进行优化增加停用词修改词项过滤算法代码 前言 到目前为止,已完成论文分析、源码分析、数据集爬取、修改原程序代码并在中文数据集上运行,这篇文章将从数据爬取开始,正式在完成的数据集上运行并获取相关数据。 爬虫数据 关键词如下: key_words=['大

Simonsdu的博客 1521

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

(十)将PositionRank模型运行到给定数据集上(二)

2021SC@SDUSC 难点二:中文文本处理 文章目录难点二:中文文本处理任务分解关于nltk尝试使用jieba库进行中文处理使用StanfordNLP简介安装测试小结 任务分解 在positionrank中对于输入text的处理主要包括分句、分词、词干还原、词性确定,在迁移到中文中时,需要去除词干还原模块同时将其他模块的使用迁移到中文。 关于nltk 在源码分析时注意到nltk的很多方法都开源指定语言,然而在指定语言为chinese后发现提示找不到相关文件。 [外链图片转存失败,源站可能有防盗链机制,建

Simonsdu的博客 1424

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

(十三)将PositionRank模型运行到给定数据集上(四)

2021SC@SDUSC 文章目录简介词列表过滤算法算法修改去除对于单个词长度的限制正则表达式加入对中文的匹配指标计算算法 简介 在上一篇博客中提到,程序正常运行后得到的评分矩阵元素均为0,为了对中文打分需要对原程序的打分模块进行修改。 由于程序可以正常运行,因此可以对程序进行debug分析处理流程。 这里将可以得到评分矩阵的原程序(PositionRank)和针对中文修改算法后的新程序(PositionRank2)进行逐步debug对比: 当二者都执行完词列表过滤算法后结果如下: PositionRan

Simonsdu的博客 375

PositionRank论文解读

PositionRank论文解读

qq_45041871的博客 682

PositionRank An Unsupervised Approach to Keyphrase Extraction from Scholarly Documents阅读笔记

PositionRank: An Unsupervised Approach to Keyphrase Extraction from Scholarly Documents阅读笔记 动机 通过观察发现,在此示例中,在文档中很早出现的关键短语“马尔可夫链”的高频出现(甚至从其标题开始)。 所以作者联合利用单词的位置信息及其在文档中的频率来设计一种有效的无监督方法来提取关键短语 贡献点 我们提出了一种无监督的基于图的模型,称为 PositionRank,它将来自单词出现的所有位置的信息合并到有偏差的 Pa

Fitz的博客 701

(六)PositionRank: An Unsupervised Approach to Keyphrase Extractionfrom Scholarly Documents解读二

PositionRank: An Unsupervised Approach to Keyphrase Extractionfrom Scholarly Documents解读二 2021SC@SDUSC 相关问题 影响模型性能的参数 扫描窗大小w会影响模型结果。因为w决定会决定哪些边加入图,以及边的权重大小。作者对不同的w在不同数据集上进行测试,发现当w的取值为2-10时,差别并不显著。 补充:MRR,对所有查询的相关结果的位置取倒数累加并平均,也就是说当相关结果出现的越早时MRR得分越高。 进行Pag

Simonsdu的博客 288

(七)PositionRank代码分析(二)

2021SC@SDUSC 简介 本文主要分析核心模块PositionRank.py的使用. 初始化 # 生成图 self.graph = nx.Graph() """ The word graph. """ # window用于边的生成 self.window = window build_graph方法 该方法用于使用window窗口为graph添加边,代码分析如下: def build_graph(self, window, pos=None): """ 该方法

Simonsdu的博客 1114

【NLP】关键词提取之PositionRank详解

PositionRank提取关键词与TextRank相似,都是基于PageRank的图关系计算词的得分。用S(V_i)表示词的重要性得分,其公式如下:                                                                                      (1) 其中,表示词的初始得分归一化后的值。              ...

zkq_1986的博客 1967

(四)在项目原数据集上运行Position Rank代码存在的问题

在原数据集上运行Position Rank代码存在的问题 2021SC@SDUSC 简介 在github上关于position rank的项目中提供了三个数据集,分别是“www”、”KDD“、”Nguyen“,本周的主要任务是在这三个数据集上跑通代码。目前存在的问题包括:1.数据集的读取方式未知。2.因实验室要求,将项目环境从python2修改为python3.7后部分库存在不兼容的情况。 根据python版本更新库函数 futures3.2.0 在安装futures3.2.0时,pip报错提示没有符合要求

Simonsdu的博客 549

(十二)PositionRank代码解读(四)

2021SC@SDUSC 文章目录使用StandfordNlp替换nltk的相关方法存在的问题1解决方案存在的问题2 使用StandfordNlp替换nltk的相关方法 将nltk中的相关方法替换为nlp的相关方法,运行程序。 # 初始化standfordNlp from stanfordcorenlp import StanfordCoreNLP nlp = StanfordCoreNLP('http://localhost', port=9000,lang='zh') # 修改分句、词性标记的相关方法

Simonsdu的博客 1072

(十五)写在最后——课程总结和个人体会

2021SC@SDUSC 前言 经过本学期的软件工程创新实践这门课程,我对一次完整的科研活动有了初步的了解。在完成这项项目期间,学习了与自然语言处理相关的诸多知识,包括但不限于word2vec、马尔可夫过程、隐马尔可夫链、PageRank算法;同时对nlp领域的常见工具包有了初步的了解并学会了基本的使用方法,例如nltk、StandfordNLP、jieba分词;为了完成项目,还了解了多种实用工具,如docker(运行StandfordNLP)、Scrapy(爬取百度学术数据集)、neo4j(知识图谱制作)

Simonsdu的博客 775

面向特定问题的开源算法管理和推荐(一) | 2021SC@SDUSC

2021SC@SDUSC 一.课题总体概述 二.课题总体任务 三.组内分工情况 四.核心代码分析情况 五.编程环境配置 ​

m0_46320525的博客 365
上一篇: java Web项目使用Maven配置jar提示NoClassDeffoundError的问题
下一篇: (十二)PositionRank代码解读(四)
Simonsdu
博客等级 码龄7年 4粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值