基于双数组Trie(Double-Array Trie)的词典查询算法

Slides:



Advertisements
Similar presentations
五脏六腑话养生 董飞侠 医学博士 副教授 硕士研究生生导师 副主任中医师 美国贝勒医学院高级访问学者.
Advertisements

第七組古文閱讀報告 組長:秀惠 組員:孟筑、雅曼、雅文、盈蓁. 《朱買臣苦學有成》之原文翻譯 朱買臣,字翁子,吳人也。 朱買臣,字翁子,吳國人。 家貧,好讀書,不治產業,常刈(一ˋ)薪 樵,賣以給 (ㄐㄧ ˇ ) 食。 家裡雖然很窮困,但是他還是很喜歡讀書,因 不懂得如何治理產業,只能靠著上山砍材去城.
年節保腸健胃 - 遠離腸癌飲食注意事項 台大醫院營養室 鄭金寶. 大腸癌朋友春節飲食原則 1. 遵守治療醫矚, 不放假 2. 過年期間,不舒服即時就醫 3. 配合支持醫療的飲食原則, (1) 心理建設有個準備 : 過年要 像平日一樣沒有什麼大不同 (2) 該限制的還是要限制 (3)
健康飲食與 預防代謝症候群 盛新食品公司 營養師 林宛儀 1. 什麼是代謝症候群 ? 2 吃太多 不運動 一粗:大肚子 二高:高血糖、高血壓 心臟病、中風、糖尿病、 高血壓、高血脂症 血脂異常 3 代謝症候群.
施氏十二字养生功 ——谈颈椎病的预防与保健.
拉伸和收缩包装技术 1. 简 介 2. 主要特点 3. 常见收缩包装设备 4. 常见拉伸包装设备.
社會福利績效實地考核結果檢討 性侵害加害人處遇業務
李智仁 博士 台灣金融研訓院金融研究所副所長
党的十八届四中全会 依法治国精神解读. 党的十八届四中全会 依法治国精神解读 一、十八届四中全会概况 中国共产党第十八届中央委员会第四次全体会议,于2014年10月20日至23日在北京举行。 全会审议通过了《中共中央关于全面推进依法治国若干重大问题的决定》。
三國演義之赤壁之戰 By 溫雅婷 胡翊軒 王蓉蓉 高渝涵 鄭巧芳.
证券市场法律制度与监督管理 作者:张学亮.
目錄 服務地點 南寮 世光教養院 飛鳳山 長安養老院 尖石國小 內灣 大華停車場 上智國小 二重國中 班級 領隊教師 參與人數 (人次)
雷 曼 的 滑 铁 卢 ——雷曼兄弟破产案例分析.
物流系统的特点.
今日報告大綱(口頭) 一、前言─梁立國 二、姜夔生平─梁立國 三、姜夔的文學思想─梁立國 四、姜夔詞例賞析(上) ─張弘毅
我怀念的乡村记忆 陈秀华 社会工作0841.
沟通技巧 主讲:涂育俊.
编程 重庆市经贸中等专业学校 曾洪兵.
全国残联基层工作服务平台 系统介绍
九年一貫課程導論 教案設計 森林系 簡睿涵 口生所 張智為 歷史系 陳秋雪.
性侵害犯罪防治法及相關子法規 衛生福利部 心理及口腔健康司 105年1月 1.
鞘翅目 生科四乙 蘇俊融.
我心目中的一位领导人 ——邓小平.
972學期性平教育輔導活動 『我的性平宣言』 兩性交往價值觀澄清活動.
第一节 舞蹈的概念 第二节 舞蹈基本知识 第三节 舞蹈动作成套欣赏 第四节 舞蹈的编排 学习思考题 推荐书目及网站
山东省水生态文明城市创建工作联席会议办公室
网络环境下大学英语教学改革创新和实践 湖北经济学院外国语学院院长 邓俊 外教社2009年全国外语骨干教师暑期研修班.
垃圾食品與肥胖的關係 敏盛綜合醫院 陳美月 營養師.
身心障礙學生之升學與就業 人發 郭峻如 科技 吳心昀
居住住宅正義與台灣不動產未來.
認識食品標示 營養師 李曼瑄 定緁食品有限公司
導 覽 解 說 技 巧 海生館-展示組 解說志工 曾 運 明.
第十章 人力資源管理.
第7章 行政监督.
103年度雙和分區總務實務研討會 經費申撥 與 核銷流程說明 永續環境教育科-馮紹華 103年4月30日.
投手丘上的勇者 王建民 導讀者:黃柏涵.
----银行间的比较 论资本构成与充足率 淡 彩 的 黑 板 淡 彩 的 黑 板 金融73班 王艺霏 王 英
股市不傳之秘 甘氏矩陣圖/價格推算 簡介、基礎學習步驟 1、學習觀念 2、基礎看圖法 A.大數推算 B.基礎角度線推算.
性侵害犯罪防治法及相關子法規 衛生福利部 心理及口腔健康司 105年1月 1.
誰的電話永遠沒人接 您播(凌波)的 電話號碼是空號.
《汽车底盘构造与维修》 项目三气压制动系统 任务 气压制动系统.
核心价值观记心中 主题班会
105學年度第一學期 二年三班 親師座談會 日期: 導師:徐楹茜.
抗菌药物临床应用管理 仁爱 和谐 敬业 进取.
台展三少年-郭雪湖 學生:林雨錞 老師:袁淑芬.
課堂老師:林儒禮 老師 學生:奈米四乙 林庭億 奈米四乙 穆建良
宜蘭員山 魚丸米粉.
应需推新 提升研究生培养质量 ——CNKI服务产品介绍 中国学术期刊(光盘版)电子杂志社有限公司 2015年3月.
项目六 职业生涯规划的方法与步骤.
世界看遍 终归回到纯水岸 波托菲诺08年终总结. 世界看遍 终归回到纯水岸 波托菲诺08年终总结.
“中国梦 航天梦 太空梦” 科技展 XXX 太空探索 互动体验园 河南省中飞文化传播有限公司.
從性格心理學看生涯發展 組員: 高嘉鴻 李冠廷 簡品卉 李雅芳 陳怡馨.
台展三少年-郭雪湖 學生:林雨錞 老師:袁淑芬.
性別平等教育 校園性侵害性騷擾或性霸凌防治 宣導簡報
日常操作及技术培训 深圳市学生信息管理综合平台 南方教育软件基地有限公司 地址:深圳市南山区科技园北区华瀚科技A-9A
薪水與人生.
豹 華德學校 蘇蕤芹 6B2 (25).
班級:財金一A 姓名:吳佩玲 學號:4990S024 指導老師:蔡享翰 老師
软件工程 第四章 软件设计 软件过程设计技术与工具.
主講人:李瓊淑 總經理.
領導、經營、管理與授權 領導與競爭優勢報告 NCKU 2006 EMBA 指導教授:曾燦燈博士 第五組:
機車鎖.
科 系:休閒事業管理系. 指導老師:許興家老師. 組 員:游海欽.周書豪.林季蓁.
大陸物流.
2018年安徽工程大学大学生高分子材料创新创业大赛
與家庭工作〜 家訪技巧 方瓊聆社工師      高雄市學生輔導諮商中心
喜雨亭記 國二甲 S 陳姿婷.
醫學美學期末報告 醫學美學之我見---- 談單眼皮變雙眼皮
餐旅籌備與規劃 授課老師: 陳怡慈.
技專校院多元入學管道 國立臺北科技大學 教務處 涂雅筑.
Presentation transcript:

基于双数组Trie(Double-Array Trie)的词典查询算法 王小飞 2004-9-17

提纲 词典查询算法简介 双数组Trie的数据结构 基于双数组Trie的词典查询算法 存在的问题及一些改进

词典查询算法简介 在汉语信息处理系统中,汉语词典查询是一个重要的基础环节,在整个处理过程中都需要频繁地访问词典以获得汉语词语知识。因此汉语词典的快速查询对整个系统的效率有着非常重要的影响。 大部分的词典结构都是基于hash方法。这种方法的关键技术在于hash函数的设计,采用合理的方式来调节数据块的分配,控制分布的均匀性,减少冲突,提高空间利用率。

词典查询算法简介 目前的几种典型词典查询方法: 1.整词二分法 2.Trie索引树法 3.逐字二分法

词典查询算法简介 整词二分法 Tire索引树法 逐字二分法 结构:同整词二分法 结构:首字散列表、词索引表、词典正文 优点:数据结构简单、占用空间小。 缺点:全词匹配,效率相对来说不高。 Tire索引树法 结构:首字散列表、Trie索引树结点 优点:分词中,不需预知待查询词的长度,沿树链逐字匹配。 缺点:构造和维护比较复杂,单词树枝多,浪费了一定的空间。 逐字二分法 结构:同整词二分法 优点:查询采用逐字匹配,提高了一定的匹配效率。 缺点:由于词典结构未改变,效率的提高有限。

双数组Trie的数据结构 Trie树: a b c d g t … … … … … … Trie树是搜索树的一种。 l u e o … … m t … blue but gem get 利用关键码的字符,自左向右,每次插入一个得到的Trie树

双数组Trie的数据结构 本质是一个确定的有限状态自动机(DFA),每个节点代表自动机的一个状态,根据变量的不同,进行状态转移,当到达结束状态或者无法转移的时候,完成查询。 Trie树的空间复杂度为O(n) 缺点:数据结构复杂,查询效率较低 为了让Trie实用的实现算法在空间占用较少的同时保证查询的效率,Aoe,J提出了用2个线性数组来进行Trie树的表示,即双数组Trie(Double-Array Trie)

双数组Trie的数据结构 两个数组:base[]、check[] base:数组中的每一个元素相当于trie树的一个节点。 对于从状态s到状态t的一个转移,必须满足: check[base[s]+c]=s base[s]+c=t 其中c是输入变量。

双数组Trie的数据结构 base check s c s t s c t

基于双数组Trie的词典查询算法 基本思想: 对6763个常用汉字根据其内码相应的赋予从1-6763的序列码,放入base[1]-base[6763]。若首字序列码是i的词语有n个,设所有第二个字的序列码依次为a1,a2,a3,an,则这n个第二字在base数组中的位置依次为 base[i]+a1,base[i]+a2,…base[i]+an。依次类推第三字、第四字……第k字的位置。 如果base[i]和check[i]同为0,表示该位置为空; 如果base[i]为负值,表示该状态为一个词语。

基于双数组Trie的词典查询算法 数组构造 对于每一个汉字,要确定其base[]值,使得对于所有以该汉字开头的词语都能在数组中放下。即要找到一个k=base[i],使得base[k+a1],check[k+a1],base[k+a2],check[k+a2],…base[k+an],check[k+an]均为0,a1,a2…an是以i开头的词的第二字序列码。

基于双数组Trie的词典查询算法 查询 t := base[s] + c; if check[t] = s then next state := t else fail endif

基于双数组Trie的词典查询算法 双数组构造完成之后,查询实质上就是将待查词的各字分别转换为相应的序列码,然后作几次加法,即可查到相应的词语。查询效率是极高的。

基于双数组Trie的词典查询算法 添加节点 当词典添加新词的时候,Trie树中就要添加新的节点。如果新插入的变量是c,则必须保证base[base[i]+c]=0 如果非空,则要重置base[i]以及之后的相关项。 i base[i]+c

基于双数组Trie的词典查询算法 Procedure Relocate(s : state; b : base_index) {Move base for state s to a new place beginning at b } begin for each input character c for the state s { i.e. for each c such that check[base[s] + c]] = s } begin check[b + c] := s; { mark owner } base[b + c] := base[base[s] + c]; { copy data } { the node base[s] + c is to be moved to b + c; Hence, for any i for which check[i] = base[s] + c, update check[i] to b + c } for each input character d for the node base[s] + c begin check[base[base[s] + c] + d] := b + c end; check[base[s] + c] := none { free the cell } base[s] := b end

基于双数组Trie的词典查询算法 base check b S none t’ base[s] s c t’ c t base[t] d u

基于双数组Trie的词典查询算法 词表:啊,阿根廷,阿胶,阿拉伯,阿拉伯人,埃及 啊 根 廷 2 4 5 阿 胶 3 1 6 拉 伯 人 7 8 9 埃 及 11 11 Trie树表示

基于双数组Trie的词典查询算法 编码:啊-1,阿-2,埃-3,根-4,胶-5,拉-6,及-7,廷-8,伯-9,人-10 经过四次遍历,将所有词语放入双数组中,再遍历一遍词表,修改base值 if 状态i为一个词 if base[i]=0 then base[i]= -I else base[i]=(-1)*base[i]

基于双数组Trie的词典查询算法 得到双数组如下: 下标 1 2 3 4 5 6 7 8 9 10 11 base -1 -6 -8 -9 -11 check 状态 啊 阿 埃 阿根 阿胶 阿拉 埃及 阿根廷 阿拉伯 阿拉伯人 查询时相当于从一个状态查到另一个状态。比如查“阿根廷”,先根据“阿”的序列码2,得到base[2]=1,再根据“根”的序列码4,得到“阿根”这个状态的数组下标为base[2]+4=5,check[5]=2,继续,因为base[5]=1,根据“廷”的序列码8,得到“阿根廷”这个状态的数组下标base[5]+8=9,check[9]=5,同时base[9]为负值,表明“阿根廷”是词表中的一个词,查询完毕。

基于双数组Trie的词典查询算法 算法的时间和空间复杂度 根据之前的分析,该算法的查询避免了字符串比较、copy运算等步骤,直接进行数值计算和数组读取,因而时间上比其他查询算法都要快。 三种查询算法的比较 查询算法名称 花费时间(s) 逐字二分法 6.697 双编码 4.725 双数组Trie 1.408

基于双数组Trie的词典查询算法 空间上,对于一个空间大小为5,650,000字节的主词典,增加的数组结构大概需要1,440,000字节,总共占用空间7,090,000字节。

存在的问题 在数据结构上不可避免的存在空间浪费。 构造调整过程中,每个状态都依赖于其他状态,所以当在词典插入或删除词语的时候,往往需要对双数组结构进行全局调整,灵活性较差。

一些改进 只把词表中出现的首字词按序列码放入数组中,而不是把6763个常用字全都放入base[]数组的前6763位中。

Thanks for your attention!