文本相似度#include<> #include<> #include<> void getmaxsamestr(char string1[],char string2[],char sub[]);// 创建二维数组,并获得最大公共子串 void diagmax(int mat[][100],int m,int n,int *maxlen,int *jpos);// 得到最大子串的长度和起点坐标 void diagscan(int mat[][100],int m,int n,int i,int j,int *maxlen,int *jpos);// 扫描当前对角线上最长公共子串 int Min(int a,int b);// 求a,b 最小值 void Substring(char *sub[],char string[],int jpos,int maxlen);// 将 string 中 jpos 位置开始的 maxlen 个字符拷贝到 sub 中去 void Similar(FILE *fp1,FILE *fp2);// 计算两个文件相似度 int CountSentence(FILE *fp);// 数文件中的句子数目 void main() { FILE *fp1,*fp2; // 定义文件指针 fp1=fopen("","r");// 打开两个文件,打开失败则返回 if(fp1==NULL) { printf("Can't open this file.\n"); exit(0); } fp2=fopen("","r"); if(fp2==NULL) { printf("Can't open this file.\n"); exit(0); } Similar(fp1,fp2);// 比较两文件,输出他们的相似度} void Similar(FILE *fp1,FILE *fp2){// 比较两文件,计算其相似度 char sent1,sent2,fs1[100],fs2[100],sub[100];/*sent1 是在文件 1 中读得的当前字符, sent2 是文件 2 的, fs1 是文件中读出的当前字符串, 本程序中一短句为一字符串, fs2 是文件 2 的, sub 是用来存放找到的最大子串*/ int i=0,j=0,sum=0,c1,c2,slen;//i ,j 分别控制对文件中字符串的读入。 sum 计数相似句子即相似字符串的个数, c1 计数文件 1的句子数,c2 计数文件 2 的句子数 while(!feof(fp1)){ sent1=fgetc(fp1); for(i=0;;i++) { if(sent1==','||sent1=='.'||sent1=='?'||sent1==';'||sent1 =='!'||sent1==-1||sent1=='\n')/* 如果遇到标点,则为一短句,当前读取过程结束。*/ { break; } if(sent1==' ') { i--; } else { fs1[i]=sent1; // 当前字符给 fs1 } sent1=fgetc(fp1); } fs1[i]='\0'; rewind(
文本相似度 来自淘豆网m.daumloan.com转载请标明出处.