已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include #include #include using namespace std;const int START1 = 0XB0,START2 = 0XA1, END1 = 0XF8,END2 = 0XFF;const int MAXWORDLEN = 48;ifstream fin(segdict.txt);ofstream out(out1.txt);/- 建树部分-struct Node3 string S; bool IsWord; Node3 *L,*R; Node3(string s = ,bool isWord = 0, Node3 *l = 0, Node3 *r = 0): S(s),IsWord(isWord),L(l),R(r);struct Node2 string S; bool IsWord; Node3 *Child; Node2(string s =,bool isWord = 0, Node3* child =0): S(s),IsWord(isWord),Child(child);struct Node string S; vectorv;vectorDic;int HASHEND1 - START1END2 - START2;void Begin() /初始化 for (int i = 0; i END1- START1; i+) for (int j = 0;j L != 0) LAST = LAST-L; if (LAST-S != t) LAST-L = new Node3(t,(len = 2),0, 0); LAST = LAST-L; if (len 2) BuildTree(s.substr(2,MAXWORDLEN),LAST-R);void Dictionary() /构造整个结构 Begin(); string s; int N,k = 0; while(fin s) Node n; n.S = s.substr(0,2); int m1 = (unsigned char)s0 - START1; int m2 = (unsigned char)s1 - START2; HASHm1m2 = k+; out s HASHm1m2 N; out N endl; for (int i = 0; i s; out s 0 & n.vSIZE-1.S != t) n.v.push_back(Node2(t, (Len = 4),0); SIZE = n.v.size(); if (Len 4) BuildTree(s.substr(4,MAXWORDLEN),n.vSIZE-1.Child); Dic.push_back(n); out END HASH endl endl;/-查询部分-vectorDest;int BinarySearch(int x, string Sec)/二分查找第二个字 int L = 0,R = Dicx.v.size() - 1; while (L 1; if (Dicx.vmid.S = Sec) return mid; else if (Dicx.vmid.S S = cc) return p; else p = p-L; return 0;unsigned CharToInt(char c) return unsigned(unsigned char)c) ;bool IsCC(char c) unsigned val= CharToInt(c); return val = START1 & val END1;bool IsEC(char c) unsigned val= CharToInt(c); return val 0x80;void FindNum(string src, vector&dest, int &StarPos,int &EndPos) int Strlen = src.length(); while (EndPos StarPos) dest.push_back(src.substr(StarPos,EndPos-StarPos); StarPos = EndPos; void Segment(string src, vector&dest) int StrLen = src.length(); int StartPos = 0, EndPos; while (StartPos = StrLen) return ; unsigned SegLen = 2; string HeadCC = src.substr(StartPos, 2); cout HeadCC endl = 0); string SecCC = src.substr(StartPos + 2,2); if (SecCC.length() 0 & IsCC(SecCC0) int B2 = BinarySearch(HeadIndex,SecCC); if (B2=0) if (DicHeadIndex.vB2.IsWord) SegLen += 2; EndPos = StartPos + 4; Node3 *p = DicHeadIndex.vB2.Child; while(EndPos IsWord) SegLen = EndPos - StartPos; p = p-R; dest.push_back(src.substr(StartPos,SegLen); StartPos += SegLen; int main() Dictionary(); ofstream out2(out2.txt); / string SS =有时,我会抬头,看一看这喧嚣的人群,有没有我想见得身影,若是有那身影,或许我会看着她,看她慢慢的融入人群,直到不见。然后我会低下头,走着我的道。; / string SS=中华人民万岁;string SS=程序编码基本正确,实现了程序设计中提到的两种分词策略,分词结果就在预料之中。; / string SS= 在词典中对于特定的首字,前两字相同的词条很少,前三字相同的词条更少。当我们以这种形式组织词典后,除子表的第一层外,各个节点的兄弟数目都很小,对它们的查找采用顺序查找方法较为适宜。 ; /string SS = 主要分为两大模块:一个建立一棵树,一个是查询。建树有三个层次,第一层是HASH表,第二层是数组,用于二分查找使用,第三层是二叉树。查询分为直接查询第一层的HASH表,第二层用二分查找(第二层汉子相同的平均概率是26,一般第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印刷车间5S管理推行计划与效果评估总结-计划总结
- 生产车间月度计划及安排
- 广告客户主管季度工作汇报与总结
- 新手货运司机入职培训计划
- 中级数字人自然语言处理师技能水平评价体系研究
- 网络信息安全保障计划及措施
- 销售技巧大全从沟通到签单的完整流程
- 针对特定赛事失利的高级电竞选手复盘总结报告
- 光伏系统工程师面试技巧与要点
- 幼儿园安全反恐通知书
- 辱母案课件教学课件
- 2025年政府采购自查报告政府采购领域专项治理自查自纠工作总结
- 团体意外险课件
- 第一单元 富强与创新 单元检测题(含答案)-2025-2026学年九年级上册道德与法治
- 2025年6月25日生效的欧盟REACH法规250项SVHC高度关注物质清单
- 【普法教育】初高中主题班会:知法懂法做明理少年【课件】
- 咖啡机保养维护细则
- 2025年第二届玻璃基板TGV暨板级封装产业高峰论坛:玻璃基板封装关键工艺研究
- 文化传播赋能产业高质量发展的机制与路径研究
- T/CIE 185-2023光时延测量通用规范
- 易货师考试题库及答案
评论
0/150
提交评论