资源简介
本程序是北京师范大学学生根据一个中文字库对所给的文章进行分词。有详细说明文档和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语言实战开发108例
- C语言的嵌入式汇编基本使用.docx(2页
- C语言嵌入式Modbus协议栈,支持主站和
- C语言封装的HttpClient接口
- C语言课设计算器
- C语言 学生兴趣管理系统
- c语言实现火车订票系统(控制台)源
- 模拟笔记本电脑(C语言实现)
- c语言实现竞技比赛打分系统
- KMP算法C语言程序
- Linux c语言 学生成绩管理系统
- 弹跳的小球(test.c)
- 林锐—高质量C编程
- 基于c语言的通讯录系统
- C语言全套课件与教学资料-哈工大
- 计算机二级C语言真题.docx
- C语言实现 设备信息管理系统
- GBT 28169-2011 嵌入式软件 C语言编码规范
- C语言标准库函数大全.chm
- C语言常用代码(分章节)
- c语言课程设计:客房登记系统源码
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c语言文都讲义2020
- c语言课件56883
- C语言推箱子win控制台
- C语言程序设计50例.docx
- 烟花优化算法(c语言版)
- C语言程序设计教材习题参考答案.do
- 数据结构(C语言版)ppt课件,清华,
评论
共有 条评论