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

目录

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)加载词典

python 复制代码
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
相关推荐
开MINI的工科男4 分钟前
【笔记】自动驾驶预测与决策规划_Part1_自动驾驶决策规划简介
人工智能·笔记·自动驾驶
白帽黑客cst34 分钟前
网络安全(黑客技术) 最新三个月学习计划
网络·数据结构·windows·学习·安全·web安全·网络安全
RS&1 小时前
python学习笔记
笔记·python·学习
sp_fyf_20241 小时前
人工智能-大语言模型-微调技术-LoRA及背后原理简介
人工智能·语言模型·自然语言处理
知来者逆1 小时前
ChemChat——大语言模型与化学的未来,以及整合外部工具和聊天机器人的潜力
人工智能·gpt·语言模型·自然语言处理·机器人·llm·大语言模型
AI领航者1 小时前
大型语言模型的结构性幻觉:不可避免的局限性
人工智能·语言模型·自然语言处理·llm·大语言模型·ai大模型·大模型幻觉
豆本-豆豆奶1 小时前
23个Python在自然语言处理中的应用实例
开发语言·python·自然语言处理·编程语音
EterNity_TiMe_2 小时前
【Linux基础IO】深入Linux文件描述符与重定向:解锁高效IO操作的秘密
linux·运维·服务器·学习·性能优化·学习方法
好家伙VCC2 小时前
STM32与51单片机的区别:是否应该直接学习STM32?
stm32·学习·51单片机
liuwill2 小时前
从技术打磨到产品验证:读《程序员修炼之道》的务实之道
笔记·程序人生