自然语言处理学习笔记(四)————词典分词

目录

1.中文分词

2.词典分词

(1)词的定义

(2)词典性质——齐夫定律

 (3)词典

(4)加载词典

 (5)hanlp词典路径


1.中文分词

  • 中文分词:指的是将一段文本拆分为一系列单词的过程,这些单词顺序拼接后等于原文本。
  • 中文分词算法大致分为基于词典规则基于机器学习这两大派。
  • 词典分词是最简单、最常见的分词算法,仅需一部词典和一套查词典的规则即可。给定一部词典,词典分词就是一个确定的查词和输出的规则系统。

2.词典分词

(1)词的定义

        在基于词典的中文分词中,词的定义要现实得多:词典中的字符串就是词。根据此定义,词典之外的字符串就不是词了。这个推论或许不符合读者的期望,但这就是词典分词故有的弱点。事实上,语言中的词汇数量是无穷的,无法用任何词典完整收录。

(2)词典性质——齐夫定律

        齐夫定律:一个单词的词频与它的词频排名成反比。就是说,虽然存在很多生词,但生词的词频较小,趋近于0,平时很难碰到。至少在常见的单词的切分上,可以放心地试一试词典分词。

 (3)词典

互联网上有许多公开的中文词库,比如

搜狗实验室发布的互联网词库(SogouW,其中有15万个词条):https://www.sogou.com/labs/resource/w.php

清华大学开放中文词库(THUOCL):http://thunlp.org

何晗发布的千万级巨型汉语词库(千万级词条):http://www.hankcs.com/nlp/corpus/tens-of-millions-of-giant-chinese-word-library-share.html

(4)加载词典

from pyhanlp import *def load_dictionary():"""加载HanLP中的mini词库:return: 一个set形式的词库"""IOUtil = JClass('com.hankcs.hanlp.corpus.io.IOUtil')  # ①path = HanLP.Config.CoreDictionaryPath.replace('.txt', '.mini.txt')  # ②dic = IOUtil.loadDictionary([path])  # ③return set(dic.keySet())if __name__ == '__main__':dic = load_dictionary()print(len(dic))print(list(dic)[0])

JClass 函数是连通Java和Python 的桥梁,用来根据Java路径名得到一个Python类。
①处利用JClass取得了HanLP中的IOUti1工具类,②处则取得了HanLP的配置项Config中的词典路径。我们写在配置文件中的条目最终会被读入这个结构中,比如配置文件写作CoreDictionaryPath=data/dictionary/CoreNatureDictionary.txt,该配置将被读人HanLP.Config.CoreDictionaryPath。这里我们想要加载mini 词典,因为其体积更小,加载起来更快。于是②处将这个路径替换为mini词典的路径。在③处我们像对待普通Python 工具类一样调用了IOUti1的静态方法 loadDictionary。该方法支持将多个文件读入同一个词典中,因此需要传入一个1ist。它返回一个Java Map对象,前面提到过,我们不关心Map中的值,于是我们只取它的键keySet,并将其转换为一个Python原生的set 对象。这样接下来的代码就不必考虑与Java的交互,Python用户从此回到了自己熟悉的环境中。 

 (5)hanlp词典路径

路径为:HanLP/data/dictionaray/CoreNatureDictionaray.mini.txt

 

 

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

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

相关文章

Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建 qt

Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含:录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署,免费售…

LCR 095. 最长公共子序列 / LeetCode 1143. 最长公共子序列(动态规划)

题目: 链接:LCR 095. 最长公共子序列;LeetCode 1143. 最长公共子序列 难度:中等 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符…

TiDB Serverless 正式商用,全托管的云服务带来数据管理和应用程序开发的全新体验

八 年 前 ,我们构建了 TiDB,一个开源分布式关系型数据库。 我们的目标是重新定义开发者和企业处理数据的方式,满足不断增长的可扩展性、灵活性和性能需求。 从那时起,PingCAP 便致力于为开发者和企业提供快速、灵活和规模化的数据…

【MySQL】——常用接口API即相关函数说明

目录 1、MySQL结构体的说明 1、MYSQL结构体 2.MYSQL_RES结构体 3. MYSQL_FIELD 2. 接口的使用步骤 3、mysql_init()——MYSQL对象初始化 4、mysql_real_connect()——数据库引擎建立连接 5. mysql_query()——查询数据库某表内容 6、mysql_real_query——执行SQL语句 …

JPA使用nativeQuery自定义SQL怎么插入一个对象参数呢?

0、我们在前后端传递数据时候,参数多的情况下,常常将这些参数封装成对象;当有些场景你需要使用JPA nativeQuery自定义SQL,要将这个对象insert时候,初学者似乎有点犯难,jpa不是spring-data项目的内容吗&…

软件工程中应用的几种图辨析

【软件工程】软件工程中应用的几种图辨析:系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表_眩晕李的博客-CSDN博客 软件工程——实体关系图 状态转换图 数据流…

算法训练Day40|343. 整数拆分 ● 96.不同的二叉搜索树

LeetCode : 343. 整数拆分 - 力扣(LeetCode) 1.思路 确定dp[]数组含义,dp[n]表示数 n 各子数的最大乘积dp[2] 初始为 1. 遍历顺序,从 3 开始,最值从 j * (i - j) 和 j * dp[i - j] 以及 dp[i] 中选择.dp[i] Math.ma…

通过cpolar内网穿透发布网页测试

通过内网穿透发布网页测试 文章目录 通过内网穿透发布网页测试 对于网站开发者来说,对完成的网页进行测试十分必要,同时还要在测试过程中充分采纳委托制作方的意见,及时根据甲方意见进行修改,但在传统的测试方式中,必须…

Maven入职学习

一、什么是Maven? 概念: Maven是一种框架。它可以用作依赖管理工具、构建工具。 它可以管理jar包的规模、jar包的来源、jar包之间的依赖关系。 它的用途就是管理规模庞大的jar包,脱离IDE环境执行构建操作。 具体使用: 工作机…

用Rust实现23种设计模式之 组合模式

组合模式是一种结构型设计模式,它允许将对象组合成树状结构,并且能够以统一的方式处理单个对象和组合对象。以下是组合模式的优点和使用场景: 优点: 简化客户端代码:组合模式通过统一的方式处理单个对象和组合对象&a…

Java课题笔记~ 不使用 AOP 的开发方式(理解)

Step1:项目 aop_leadin1 先定义好接口与一个实现类,该实现类中除了要实现接口中的方法外,还要再写两个非业务方法。非业务方法也称为交叉业务逻辑: doTransaction():用于事务处理 doLog():用于日志处理 …

sql 关联了2张表的 update 语句(转)

转自:SQL Update:使用一个表的数据更新另一张表 、update 关联两个表 基本上 select 能支持的关联和子查询操作,都能在 update 语句中使用。 在 where 条件中使用子查询 update a set a.age 1 where id in (select device_id from b) 在 wher…

42.利用 牛顿迭代法解非线性高维方程组(matlab程序)

1.简述 若向量记号为X,方程组就可以写成F(X)0的形式。 我们知道,对于一元函数的牛顿迭代法求根公式 类似的,对于多元函数求根公式 其中X是向量,是非线性方程组对应的雅可比矩阵。 具体求解的时候,我们可以先通过绘图命令绘制图形…

Selenium 根据元素文本内容定位

使用xpath定位元素时,有时候担心元素位置会变,可以考虑使用文本内容来定位的方式。 例如图中的【股市】按钮,只有按钮文本没变,即使位置变化也可以定位到该元素。 xpath内容样例: # 文本内容完全匹配 //button[text(…

Python2.x 与 3​​.x 版本区别

Python2.x 与 3​​.x 版本区别 Python 的 3​​.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下相容。 许多针对早期 …

刷题笔记 day9

1658 将 x 减到 0 的最小操作数 解析:1. 当数组的两端的数都大于x时,直接返回 -1。 2. 当数组所有数之和小于 x 时 ,直接返回 -1。 3. 数组中可以将 x 消除为0,那么可以从左边减小为 0 ;可以从右边减小为 0 &#xff1…

10大在线头脑风暴工具,团队创新必备!

在线头脑风暴工具的使用为创意发展和团队协作提供了许多优势,使团队成员能够同时参与头脑风暴,促进创意的产生和交流。一款优秀的在线头脑风暴工具可以以直观的方式展示创意,激发创造力和想象力。此外,还具有组织和整理功能&#…

linux文本三剑客---grep,sed,awk

目录 grep 什么是grep? grep实例演示 命令参数: 案例演示: sed 概念: 常用选项: 案例演示: awk 概念: awk常用命令选项: awk变量: 内置变量 自定义变量 a…

npm install报错 -> npm ERR! Unexpected token ‘.‘ 报错解决办法。

问题原因: 用nvm1.1.7的版本安装了16.x以上的node, 然后再下载依赖的时候就报错了;总结一下就是nvm版本太低了,他的里面没有集成高版本node导致的。 解决办法: 把nvm切换到新版本就行了。 1. 卸载掉当前所有的node nvm unins…

Cadence学习

Cadence学习 Cadence内容涵盖Cadence主要功能Cadence功能模块Allegro Design Entry CIS 和 OrCAD Capture CIS 的区别Cadence 公司简介Allegro Design Entry CISOrCAD Capture CIS OrCAD中part和database part区别OrCAD中不同页面的连接关系应该怎么处理(1&#xff…