tf-idf向量模型文本分类算法.DOC

上传人:天*** 文档编号:958686 上传时间:2018-11-09 格式:DOC 页数:8 大小:95.50KB
下载 相关 举报
tf-idf向量模型文本分类算法.DOC_第1页
第1页 / 共8页
tf-idf向量模型文本分类算法.DOC_第2页
第2页 / 共8页
tf-idf向量模型文本分类算法.DOC_第3页
第3页 / 共8页
tf-idf向量模型文本分类算法.DOC_第4页
第4页 / 共8页
tf-idf向量模型文本分类算法.DOC_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、现代信息检索李志峰 04061130 11/5/2018 1tf-idf向量模型(文本分类算法)1题目:试按 tf-idf在剔除一些常用词后给出文本中术语的统计算法和程序,并按降序进行排序。2算法思想:对于中文检索需要有中文词库,程序中用到20万的词库。数据结构用了最简单的数组。读取文献,采用每次读取1KB的内容进行分词。分词采用正向最大匹配算法,查找用二分法(词库中词已排序) 。3程序代码:#include #include #include using namespace std;#define N 9 /文献数目int comminute (char *text,long lg,int

2、number); /分词程序int fileopen(char *f,int n); /独指定文件char word20000022=0; /200000条词库int frequency200000N=0; /N篇文章int wordleng=0; /词库中实际词条数目void main(int n,char *arg)int i=0,j=0;int ni;int maxN=0; /存放文献使用频率最大词char ch;char *fileN=0; /需要检索的文献char *savefile; /结果存放文档clock_t start0, finish0; /程序运行时间double sft

3、ime0;start0 = clock();savefile=“idf文档.txt“;file0 = “抱愧山西.txt“;file1 = “一梦三四年.txt“; file2 = “漂泊的人生.txt“;file3 = “linux下驱动编程.txt“;FILE *cp = fopen(“词库.txt“,“r“); /词库位置while(!feof(cp) /读取词库ch=fgetc(cp);for(i=0;ch!=13 for(i=0;i=0);else text i = fgetc(fp);else 现代信息检索李志峰 04061130 11/5/2018 3for (i=0;i=0);

4、else text i = fgetc(fp);leng=leng-1024;comminute (text,i,n); /调用分词程序memset(char *)text,0,(i+18)*sizeof(char);fclose(fp); /指定文件关闭finish = clock();sftime = (double)(finish - start) / CLOCKS_PER_SEC;/计算用时std:cout0)while(end-begin10) /二分法查找,大范围定位middle=(int)(begin+end)/2);k =(int) strcmp(segment,wordmid

5、dle);if(k2)if(begin1) /二分法重新定位middle=(int)(begin+end)/2);k =(int) strcmp(temp,wordmiddle);if(k#include using namespace std;struct cellchar lemma20;unsigned char *p;cell inver200000;int wordleng=0;int comminute (char *text,long lg,int N);unsigned char *Reallmoc(unsigned char *oldp,int oldn);void main

6、 (char *arg)int i=0,N=0,j=0;int piece=0;int number=0;char *text = NULL; /检索的文献读取存放long length=0;char ch=0;char *file=0;FILE *fp = NULL;char *savefile; /结果存放文档clock_t start0, finish0; /程序运行时间double sftime0;start0 = clock();savefile=“D:倒排文档.txt“;file = “D:抱愧山西.txt“;FILE *cp = fopen(“词库.txt“,“r“);/词库位置

7、while(!feof(cp) /读取词库ch=fgetc(cp);i=0;while(ch!=13ch=fgetc(cp);i+; if(i3)现代信息检索李志峰 04061130 11/5/2018 6 for(;i=0);elsetext i = fgetc(fp);N+;else for (i=0;i=0);else text i = fgetc(fp);length=length-piece;N+;comminute (text,i,N); /调用分词程序memset(char *)text,0,(i+18)*sizeof(char);fclose(fp);FILE *wp = fo

8、pen(savefile,“w“); /文本输出for(i=0;i0) while(end-begin3) /二分法查找,大范围定位 middle=(int)(begin+end)/2);k =(int) strcmp(segment,invermiddle.lemma);if(k2) if(begin1) /二分法重新定位 middle=(int)(begin+end)/2);k =(int) strcmp(temp,invermiddle.lemma);if(k0)end=middle;elsebegin=middle;if(strcmp(temp,inverbegin.lemma)=0)

9、/与词库匹配 if(inverbegin.p)=NULL)inverbegin.p = (unsigned char *)malloc(2* sizeof(char);/申请空间inverbegin.p0 = 1;inverbegin.p1 = N;break;else number = inverbegin.p0;if(inverbegin.pnumber!=N) inverbegin.p0 = number+1;inverbegin.p = Reallmoc(inverbegin.p, number+1);/调整空间大小inverbegin.pnumber+1 = N;break;else

10、现代信息检索李志峰 04061130 11/5/2018 8i=i-2; /缩短字符串point=point+i;i=0; /最大匹配 return 0;unsigned char *Reallmoc(unsigned char *oldp,int oldn) /替代realloc函数unsigned char *newp = (unsigned char *)malloc(oldn+1) * sizeof(unsigned char);for(int i=0;ioldn;i+)newpi = oldpi;newpoldn+1 = 0; return newp;4对文章抱愧山西建立倒排文档,运行过程如下:倒排文档部分结果如下:跋涉 90把对 194把手 18把他 86 173把它 129 135罢了 82 197罢休 197白色 85白银 149百年 56 163179213百姓 26 31 153百余 153摆脱 95败落 180 207 208 210 214

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 1

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。