class TrieNode():
def __init__(self,value=https://www.it610.com/article/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=https://www.it610.com/article/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
【python 字典树的应用语言模型统计词频】
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)