python 字典树的应用语言模型统计词频

class TrieNode():
    def __init__(self,value=None,count=0,parent=None):
        self.value = value #值
        self.count = count #频数统计
        self.parent = parent #父结点
        self.children = {} #子节点
class Trie():
    def __init__(self):
        self.root = TrieNode()
    def insert(self,sequence,value):
        """

        :param sequence: 要查找的字符串
        :param value:  词频的数值
        :return:  None
        """
        cur_node = self.root
        for item in sequence:
            if item not in cur_node.children:
                child = TrieNode(value=item,count=0,parent=cur_node)
                cur_node.children[item] = child
                cur_node = child
            else:
                #更新结点
                cur_node = cur_node.children[item]
        cur_node.count = value
    def search(self,sequence):
        """
        查询是否存在完整序列
        :param sequence:
        :return: bool
        """
        cur_node = self.root
        mark =True
        for item in sequence:
            if item not in cur_node.children:
                mark = False
                break
            else:
                cur_node = cur_node.children[item]
        #如果还有子节点 说明序列并非完整
        if cur_node.children:
            mark = False
        if mark:
            return cur_node.count
        else:
            return 0

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值