资源简介
本程序是北京师范大学学生根据一个中文字库对所给的文章进行分词。有详细说明文档和exe文件,采用C语言编写,具体在文档中完全说明。采用的算法是正向最大匹配算法和反向最大匹配算法。主要实现屏幕分词和文件分词两项功能。因为对毕业设计有所帮助,所以我要分高一点哈~勿怪偶~

代码片段和文件信息
/*-----------------------------中文分词程序------------------------------
------------------------计算机系03级 03281047 刘川----------------------*/
// stdafx.cpp : source file that includes just the standard includes
// wordppl.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include “stdafx.h“
#include
// TODO: reference any additional headers you need in STDAFX.H
// and not in this file
extern char tt[][40];
char * source* result; //文件暂存数组
int sum; //字典长度
FILE *fp1*fp2; //定义两个文件指针
long filelen; //输入文件的长度
char scrbuf[MD]; //屏幕文件缓冲区
char scrres[SD]; //屏幕文件结果区
/*------------------------------------分词实现部分-----------------------------------------*/
//比较函数
int compare(const void* aconst void* b){
return strcmp((char*)a(char*)b);
}
//折半查找算法
int binsearch(int Lenchar *aidkey)
{ int lowhighmid;
low=0;high=Len-1;
while(low<=high)
{
mid=(low+high)/2;
if(strcmp(aidkeytt[mid])==0)
return mid; //查找成功
else if(strcmp(tt[mid]aidkey)>0)
high=mid-1; //修改查找区间上界
else
low=mid+1; //修改查找区间下界
}
return -1; //查找失败
}
//初始化函数
int initialize()
{
sum=53335;
qsort(ttsum40*sizeof(char)compare); //对字典进行排序
return 1;
}
//屏幕分词函数,采用正向最大匹配算法
void scrposcutword()
{
int ijk; //普通变量
int end; //为1标示已经扫描完待分析文件,反之为0
int mask=0; //遇到不能识别字符则标记为1,否则为0
int bpsbrp; //bp为字符串已识别指针,sb为临时用指针sp为结果数组指针
char ch[2]buffer[37];
filelen=strlen(scrbuf);
strcpy(scrres““);
//分词主程序部分,采用正向最大匹配算法
bp=0;rp=0;
while(1)
{ buffer[0]=0;
sb=bp;
for(i=0;i<36;i++) //从源数组中读入36个字符
{
if(sb==filelen&&i==0) { end=1; break; } //读到的第一个字符为文件尾,于是退出
if(sb==filelen) //遇到文件尾,跳出循环
break;
ch[1]=0;
ch[0]=scrbuf[sb];
strcat(bufferch);
sb++;
}
if(end==1)break;
for(i=i-1;i>=0;i--)
{
k=strlen(buffer);
j=-1;
if( strcmp(buffer“0“)==0||strcmp(buffer“1“)==0||strcmp(buffer“2“)==0||strcmp(buffer“3“)==0||strcmp(buffer“4“)==0||
strcmp(buffer“5“)==0||strcmp(buffer“6“)==0||strcmp(buffer“8“)==0||strcmp(buffer“7“)==0||strcmp(buffer“9“)==0)
goto A;
j=binsearch(sumbuffer);
if(j!=-1) //如果查找到,则输出查找到的内容,并将bp指针往前移相应位置
{ if(mask==1) { mask=0; scrres[rp]=‘|‘; rp++; scrres[rp]=0; }
strcat(scrresbuffer); rp+=k;
scrres[rp]=‘|‘; rp++; scrres[rp]=0;
bp=bp+k;
break;
}
else //如果查不到
{
A: if(i==1) //若还剩2个字节,则判断第一个字节,若大于0,说明不是汉字,输出一个字节
{ buffer[2]=0; //若小于0,说明该汉字不在此库中,输出该字。并将bp指针往前移相应位置
if(buffer[0]<0)
{ strcat(scrresbuffer); rp+=2; scrres[rp]=0; bp=bp+2; mask=1; break;}
else
{ buffer[1]=0;
strcat(scrresbuffer); rp+=1; scrres[rp]=0; bp=bp+1; mask=1; break;
}
}
if(i==0) //若还剩1个字节,说明肯定是不能识别字符,则直接输出这个字节,并将bp指针往前移1个字节
{ buffer[1]=0;
strcat(scrresbuffer); rp++; scrres[rp]=0; bp=bp+1; mask=1; break;
}
buffer[i]=0; //将buffer最后一位去掉,再进
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2075 2005-11-26 22:59 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\ReadMe.txt
文件 1925 2005-11-30 15:57 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\resource.h
文件 318 2005-11-28 15:58 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\small.ico
文件 11167 2005-12-06 13:55 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\StdAfx.cpp
文件 1185 2005-11-30 19:45 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\StdAfx.h
文件 520061 2005-11-30 15:13 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordlist.cpp
文件 8324 2005-12-08 18:50 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.aps
文件 14031 2005-11-30 19:51 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.cpp
文件 4513 2005-11-29 11:13 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.dsp
文件 537 2005-11-26 22:59 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.dsw
文件 1078 2005-12-08 18:50 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.ICO
文件 99328 2005-12-08 18:50 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.ncb
文件 54784 2005-12-08 18:50 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.opt
文件 1981 2005-12-08 18:50 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.plg
文件 5468 2005-12-08 18:50 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl\wordppl.rc
文件 3076205 2005-12-08 18:50 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl.exe
文件 46080 2005-12-06 13:58 采用正向逆向最大匹配才实现汉字分词wordppl\中文分词程序说明文档.doc
文件 157 2009-09-03 16:44 采用正向逆向最大匹配才实现汉字分词wordppl\哈哈.txt
文件 0 2009-09-03 16:47 采用正向逆向最大匹配才实现汉字分词wordppl\嘿嘿.txt
文件 626 2005-12-01 18:54 采用正向逆向最大匹配才实现汉字分词wordppl\测试文本一.txt
文件 841 2005-12-06 13:56 采用正向逆向最大匹配才实现汉字分词wordppl\测试文本一_neg.txt
文件 842 2005-12-01 21:14 采用正向逆向最大匹配才实现汉字分词wordppl\测试文本一_pos.txt
文件 26373 2005-11-26 22:53 采用正向逆向最大匹配才实现汉字分词wordppl\测试文本二.txt
文件 35001 2005-12-01 21:16 采用正向逆向最大匹配才实现汉字分词wordppl\测试文本二_neg.txt
文件 35000 2005-12-01 21:14 采用正向逆向最大匹配才实现汉字分词wordppl\测试文本二_pos.txt
目录 0 2009-09-09 09:36 采用正向逆向最大匹配才实现汉字分词wordppl\wordppl
目录 0 2009-09-03 16:47 采用正向逆向最大匹配才实现汉字分词wordppl
----------- --------- ---------- ----- ----
3947900 27
............此处省略0个文件信息
- 上一篇:MFC俄罗斯方块设计报告
- 下一篇:linux下c语言写的俄罗斯方块
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论