资源简介
本程序是北京师范大学学生根据一个中文字库对所给的文章进行分词。有详细说明文档和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语言写的俄罗斯方块
相关资源
- linux下c语言写的俄罗斯方块
- c语言语法分析器
- mp3的c语言解码程序
- C语言实现P-Q分解法潮流计算
- 简单的鼠标绘图程序C语言
- C语言学生信息管理系统.rar
- FFT和DFT完整算法C语言实现
- 机器学习中决策树ID3算法 理论分析与
- C语言实现 学生信息管理系统 双链表
- 数据结构实验教程C语言版
- C语言及其在工业控制系统中的应用
- 编译原理_词法分析器_C语言版_简单易
- C语言画柱状图,数据可以自行输入
- linux下C语言网络编程会话聊天室
- 编译原理实验——词法分析器C语言编
- c语言实现的tsv文件读取源代码
- PCA算法C语言描述
- C语言编写的超市结算系统
- C语言判定一棵二叉树是否为二叉搜索
- 《数据结构与算法分析(C语言描述)
- 贪吃蛇C语言程序源代码原创
- CMM编译器(用C#写的一个c语言子集的
- 语法分析c语言程序代码
- c语言课程设计——图书管理系统
- C语言课程设计 俄罗斯方块源程序
- 小波分析的c语言程序
- C语言游戏(完整版)
- c语言词法编辑器设计、编制并调试一
- 自制c语言编译器
- 编译原理C语言实现词法分析程序带容
评论
共有 条评论