Hanlp中自定义词典的配置、引用以及问题解决

文章目录

  • 如何阅读本文?
  • Hanlp用户自定义词典引用简介
  • 操作步骤
    • 环境创建
    • 编辑词典文件
    • 将用户自定义词典路径加入配置文件
    • 删除缓存文件

如何阅读本文?

  1. 首先我们对Hanlp用户词典进行简介,推荐首先阅读链接文章,它是本文的第一来源;
  2. 环境配置方面分为几个步骤,每个需要动手操作的步骤都用黑体加粗显示,依据这些步骤你完全可以将用户自定义词典创建完成,但是我们建议将分析部分仔细看一看,加深理解;
  3. 对每一个步骤出现的问题我们都进行了解释并提供了解决方案,如果你是为了解决问题来到的本文,可以使用Ctrl+F查找你想解决的问题,很有可能就在文章中;
  4. 仅供参考,感谢来到这里─=≡Σ(((つ•̀ω•́)つ;

Hanlp用户自定义词典引用简介

考完六级的我回来了~
在之前的文章中,提到了Hanlp用户自定义词典的作用和详细信息,传送门:Hanlp之理解用户自定义词典(java版本)那篇文章的源代码分析还没写
光说不练假把式,今天我们一步一步来配置一个自定义词典并在分词中使用它;(Java版本)

操作步骤

环境创建

  1. java项目:在IDE中创建一个java项目,将hanlp-jar和hanlp-sources-jar引入到项目(Build Path),当我们第一次使用时将sources包attach到项目,就可以查看源代码了,否则是无法查看的;同时将Hanlp的配置文件导入到classpath(放入项目文件的bin目录下即可,我们一会要着重操作这个配置文件);
    外部引入
  2. Hanlp文件:我们在第一步已经导入了两个包,同时将配置文件加入到了classpath,我们还需要在Hanlp根目录下任意位置创建一个词典文件,我们这里以txt格式为例。
问题1:我的词典文件应该创建在哪里呢?任意位置都可以吗?
答:我们希望你将文件创建在Hanlp配置文件声明的根目录下,你如果仔细观察配置文件的话会发现Hanlp
的地址规则,原文如下:
#本配置文件中的路径的根目录,根目录+其他路径=完整路径(支持相对路径,请参考:https://github.com/hankcs/HanLP/pull/254)
#Windows用户请注意,路径分隔符统一使用/
紧接着一行就是你配置的根目录:root
所以,最好将文件创建在根目录下。
同时注意,windows OS用户的分隔符请使用 "/",不要转义。

至此,我们就将环境创建好了。

编辑词典文件

我们知道了词典内部数据的组织方式,我们也要按照这个方式来进行加载,在应用时我们经常通过流操作来写入数据,由于这次演示的数据量比较小,我们直接输入。

  1. 进入编辑器,我们编辑词典文件:我创建了一个名称为 我的词典.txt 的词典文件,在里面,我定义了一个开斯卡名词和一个子库啊动词,显然,这两个在现有语料库中没有任何意义的词是不太可能分到一起的,当我们需要将这两个词分到一起时就可以将他们加入词典;
问题2:开斯卡和子库啊两个词在分词时一定会分到一起吗?
答:还是不一定,为什么“还是”,请看链接文章解释。这两个词在分词时会有很大概率在一起,但不是一定
,当你充分了解后果后,可以使用  Segment #enableCustomDictionaryForcing  强制分词
问题3:我应该如何编辑文件?格式是什么?
答:输入单词,同时加入词性和出现频率,词性和频率不是必须项,省略会使用默认值,默认值我们会在稍后
介绍;词性表请见 http://www.hankcs.com/nlp/part-of-speech-tagging.html#h2-8
单词之间请使用制表符或者空格隔开(这意味着单词之间不允许出现空格);

编辑词典

  1. 保存文件,注意,一定要将文件保存为UTF-8编码,Hanlp使用UTF-8编码;

将用户自定义词典路径加入配置文件

  1. 路径配置规则
    (1)#本配置文件中的路径的根目录,根目录+其他路径=完整路径(支持相对路径,请参考:https://github.com/hankcs/HanLP/pull/254)
    #Windows用户请注意,路径分隔符统一使用/
    (2)#自定义词典路径,用;隔开多个自定义词典,空格开头表示在同一个目录,使用“文件名 词性”形式则表示这个词典的词性默认是该词性。优先级递减。
  2. 操作:
    首先确定根目录,根目录是data目录的父目录;
    然后将词典移动至父目录下的任意一个位置(创建时就在请忽略此步);
    在CustomDictionaryPath后追加字典位置,值为绝对路径-root路径,比如我的词典文件路径是 F:\java学习\Hanlp\data\dictionary\custom\我的词典.txt,而root是F:\java学习\Hanlp\,所以我应该在最后写入data\dictionary\custom\我的词典.txt
    如果创建的词典文件和已有的词典在一个目录,在上一目录分号后输入一个空格,直接追加文件名称即可
    路径配置

删除缓存文件

在配置完毕后,我们一定要删除之前加载字典时产生的缓存文件,比如下图中的CustomDictionary.txt.bin文件就是上次产生的缓存文件,我们将他删除;
缓存演示

问题4 我们为什么要删除缓存文件?
答:Hanlp首次加载词典/模型会发生一个自动缓存的过程,自动缓存的目的是为了加速词典载入速度,在下次
载入时,缓存的词典文件会带来毫秒级的加载速度。
如果我们不删除这个文件,Hanlp会直接使用缓存进行分词,不会应用新的改变,手动删除后,再次加载会
重新缓存,这是我们的自定义词典就会加载到缓存了。
注意:字典删除加入词语时不用重新创建缓存。

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

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

相关文章

有监督学习

有监督学习 利用一组带有标签的数据,学习从输入到输出的映射,然后将这种映射关系应用到未知数据上,达到分类或回归的目的。 分类:当输出为离散的,学习任务为分类任务。回归:当输出为连续的,学习…

深度学习助力网络科学:基于深度学习的社区发现最新综述

来源:AMiner科技论文题目:A Comprehensive Survey on Community Detection with Deep Learning论文网址:https://arxiv.org/pdf/2105.12584.pdf近日,澳大利亚麦考瑞大学计算机学院人工智能与数据科学实验室联合中科院数学与系统科…

Neo4j 图创建1 以BiliBili粉丝UP主之间的关系为例

基本关系图如下,不给出细节 其中所有粉丝名为杜撰,如有雷同纯属巧合 UP主对应关系为方便建库进行了主观处理,不代表真实情况 无商业用途,学习使用

CentOS7开放端口号

查看所有开放的端口号 firewall-cmd --zonepublic --list-ports 或者 firewall-cmd --permanent --list-ports(--permanent表示永久生效) 查询指定端口号是否开发 firewall-cmd --permanent --query-port8080/tcp 删除一个已经开放的端口号 firewall-cm…

Hinton,Lecun和Bengio三巨头联手再发万字长文:深度学习的昨天、今天和明天

来源:ACM编辑:Priscilla Emil2018年,ACM(国际计算机学会)决定将计算机领域的最高奖项图灵奖颁给Yoshua Bengio、Yann LeCun 和 Geoffrey Hinton,以表彰他们在计算机深度学习领域的贡献。这也是图灵奖第三次…

LR为什么用极大似然估计,损失函数为什么是log损失函数(交叉熵)

首先,逻辑回归是一个概率模型,不管x取什么值,最后模型的输出也是固定在(0,1)之间,这样就可以代表x取某个值时y是1的概率 这里边的参数就是θ,我们估计参数的时候常用的就是极大似然估计&#xf…

LSTM之父撰文,纪念这位图灵奖遗珠、“AI理论之父”

原文:1931: Kurt Gdel, founder of theoretical computer science, shows limits of math, logic, computing, and artificial intelligence作者:Jrgen Schmidhuber (知名 AI 学者,LSTM 之父)译者:刘媛媛摘…

Maven简述以及配置使用

目前的技术存在的问题(引入Maven的重要性) 一个项目就是一个工程; 如果项目非常庞大,就不再适合使用package来划分模块;最好是每一个模块对应一个工程,利于分工协作; 借助于Maven可以将一个项目…

依图科技终止上市审核:冲击科创板「AI第一股」失败

来源:机器之心AI 创业公司在国内市场 IPO 真就这么困难?7 月 2 日晚上交所消息,决定终止对依图科技首次公开发行存托凭证并在科创板上市的审核。依图的上市申请是于 2020 年 11 月 4 日被上交所依法受理的,其股票预计采用 CDR&…

神经网络-前向传播

前向传播神经网络搭建 1.tensorflow库搭建神经网络 参数:线上的权重W,用变量表示,随机给初值。相关介绍 tf.truncated_normal():去掉过大偏离点的正太分布tf.random_normal()正太分布tf.random_uniform():平均分布tf.zeros:全零数组&#x…

对汉诺塔递归算法的理解(图解,附完整代码实现)

前情提要: 首先说一下汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1、每次只能移动一个圆盘 2、所有的大圆盘必须在小圆盘的下面 过…

再会迪杰斯特拉(Dijkstra)

迪杰斯特拉算法 算法说明 迪杰斯特拉算法用来求解某一个起点到以其他所有点为终点的最短路径长度; 算法思路-贪心算法 以下图为例 指定一个节点(即起点),例如计算“A”到其他节点的最短路径;引入两个集合(S,U&…

数字孪生等前沿技术,将如何解码未来交通?

来源:物联网智库目前,国内在交通领域的技术创新层出不穷,交通出行领域已经成为创新科技聚集和爆发的领域。众多新科技的出现,正在给我们描绘出一幅未来交通的蓝图。在面向未来的诸多关于智慧交通的前沿应用和解决方案中&#xff0…

神经网络-反向传播

反向传播 反向传播---->训练参数,在所有参数上使用梯度下降。使NN模型在训练数据上的损失函数最小。损失函数(loss):预测值(y)与已知答案(y_)的差距。均方误差MSE:, …

第七章 二叉搜索树(b3)BST:删除

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/10247191.html

2021天梯赛题解

2021程序设计天梯赛在4月24日举办,本文是天梯赛的部分题解,有的问题在当时也没有得到满分,由于学校开启了天梯赛的重现比赛,再写一写。 注意:本文答案不是标准答案,每道题收获的分数写在了相应位置&#x…

python-scrapy爬虫框架

scrapy爬虫框架 1.Scrapy爬虫框架 scrapy 不是一个函数功能库,而是一个爬虫框架。scrapy爬虫框架: 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。.简单说爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。scrapy爬虫框架共包含…

如何正确地运用人工智能模型?

来源:内容摘自《模型思维:简化世界的人工智能模型(全彩)》模型,是客观事物的简化表示!历史上,每一个伟大模型的提出,都极大地推动了科学和社会的发展,比如历史上出现的3个…

讲解Linux数据库安装

学习了linux这门课之后,就开始实践过程了,这样比较记得牢固,学以致用。 有了基本的命令,就可以试着安装数据库了。 企业环境需要安装VMWare ESXi虚拟机,然后再在里面新建虚拟机。 镜像vmware-viclient-all-5.1.0-10641…