递归实现前向匹配分词

本文介绍了如何使用递归实现前向匹配分词算法,该算法适用于自然语言处理。通过读取分词字典并确定最大词长,对输入的待分词语句进行分块和分词,最终输出分词结果。代码示例中,演示了对'中华人民共和国成立了,中华民族迎来了新的时代'这句话的分词过程。
摘要由CSDN通过智能技术生成
# -*- coding: utf-8 -*-

'''
功能:递归实现前向匹配分词

说明:zhuanma这个包借鉴自jieba分词源代码用于
将任意格式编码的字符串转换为unicode编码,统一
字典和待分词语句的编码后,便于句子切分和分词.

Author: <jianzhang.zhang@foxmail.com>
Date  : 2016-04-16
'''

import re
from zhuanma import strdecode



# 递归前向匹配分词
def seg(chunk,maxLength,dicList,result):
    # 句子块长度
    cLength = len(chunk)
    # 句子块小于最大词长
    if cLength <= maxLength:
        # 判断整个句子块是否在词典中
        if chunk in dicList:
            result.append(chunk)
        # 前向匹配分词
        else:
            for i in range(1,cLength):
                if chunk[:-i] in dicList:
                    result.append(chunk[:-i])
                    seg(chunk[-i:],maxLength,dicList,result)
                    
    # 句子块长度大于最大词长
    elif cLength > maxLength:
        # 按照最大词长截取子串进行分词
        subChunk = chunk[:maxLength]
        # 最大词长截取的子串在字典中
        if subChunk in dicList:
            result.append(subChunk)
            seg(chunk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值