python3 中文分词正向 反向最大匹配与HMM 分词

该博客介绍了如何在Python3中使用正向和反向最大匹配算法以及HMM进行中文分词。作者强调在实际应用中,可以先用词库进行初步分词,再借助HMM优化结果。文中提到HMM模型依赖于状态转移、发射概率和初始概率,并指出在某些场景下,CRF也可以作为替代方案。
摘要由CSDN通过智能技术生成

数据所需数据集:https://pan.baidu.com/s/15EKb378-ds_5FNF9614Q1g   提取码:ebkd

代码如图

#反向匹配
class LMM():
    def __init__(self, dic_path):
        self.dictionary = set()
        self.maximum = 0
        # 读取词典
        with open(dic_path, 'r', encoding='utf8') as f:
            for line in f:
                line = line.strip()
                if not line:
                    continue
                self.dictionary.add(line)
                if len(line) > self.maximum:
                    self.maximum = len(line)

    def cut(self, text):
        result = []
        index = len(text)
        while index > 0:
            word = None
            for size in range(self.maximum, 0, -1):
                if index - size < 0:
                    continue
                piece = text[(index - size):index]
                if piece in self.dictionary:
                    word = piece
                    result.append(word)
                    index =index-size
                    break
            if word is None:
                index -= 1
        return result[::-1]
#正向匹配
class RMM():
    def __init__(self, dic_path):
        self.dictionary = set()
        self.maximum = 0
        # 读取词典
        with open(dic_path, 'r', encoding='utf8') as f:
            for line in f:
                line = line.strip()
                if not line:
                    continue
                self.dictionary.add(line)
                if len(line) > self.maximum:
                    self.maximum = len(line)

    def cut(self, text):
        result = []
        index = len(text)
        while index > 0:
            word = None
            for size in range(0,self.maximum):
               
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值