切分算法

本文介绍了HanLP的词典加载和分词算法,包括完全切分、正向最长匹配、逆向最长匹配以及双向最长匹配。在完全切分中,遍历文本查询词典得到所有可能的单词序列。正向和逆向最长匹配策略则是优先选择较长的单词,前者从前往后扫描,后者从后往前。双向最长匹配结合正反两个方向,选择词数较少或单字较少的分词结果。
摘要由CSDN通过智能技术生成

HanLP词典的加载&切分算法

词典加载

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])

输出:

85584
党组织

这里通过JClass函数来根据Java路径名得到一个Python类,接下来的代码不必考虑与Java的交互,回到Python环境。

切分算法

完全切分

完全切分指的是找出一段文本中的所有单词。只要遍历文本中的连续序列查询该序列是否在词典中即可。定义词典为dic,文本为text,当前处理处置为1,完全切分算法的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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值