基于Hanlp--词典分词:切分算法

本文介绍了基于HanLP的词典加载和三种切分算法:完全切分、正向最长匹配、逆向最长匹配及双向最长匹配。完全切分遍历文本查询词典,而最长匹配算法优先考虑较长的词语,以提高分词质量。双向最长匹配结合了正向和逆向策略,优化分词结果。

1 词典加载

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

这里使用的是hanlp提供的词库,后面的切分算法也可以使用自己的词典,hanlp相关的配置安装可以参考

hanlp安装配置

2 完全切分算法

    完全切分指的是,找出一段文本中的所有单词。这并不是标准意义上的分词,有些人将这个过程误称为分词,其实不准确。

    不考虑效率的话,朴素的完全切分算法其实很简单。只要遍历文本中连续序列,查询该序列是否在字典中即可。定义词典为dic,文本为txt,当前处理位置为i,代码如下:

def fully_segment(txt,dic):
    res = []
    for i in range(len(txt)):
        for j in range(i+1,len(txt)+1):
            tmp = txt[i:j]
            if(tmp in dic):
                res.append(tmp)
    return res

调用样例:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值