资源简介
这是我研究生的一个作业,要用贝叶斯分类器去实现垃圾邮件的分类。
第一次是用c语言实现。
第二次用Java,并且用了哈希表,用以保证其计算速度
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#define TYPE struct words
#define LEN sizeof(struct words)
TYPE *create_list(FILE * char[]);
void print_list(TYPE *);
void classification(TYPE * TYPE *);
struct words{
char word[5000]; //the word name
int count; //the amount of this word appears in this file
char classify[10]; //the class of this word
double pHam; //possibility of class ham for this word
double pSpam; //possibility of class spam
struct words *next; //point to the next word
};
//int TotCount = 0;
//int DifCount = 1;
int numSpamWords = 0; //all distinct words of class spam
int numHamWords = 0; //all distinct words of class ham
char finalClass[5]; //final class of test file
int numHamFile = 0; //the number of ham files;
int numSpamFile = 0; //the number of spam files
int main(int argc char *argv[ ])
{
TYPE *head=NULL*temp *last *head1;
FILE *fp *fp1;
DIR *dirptr = NULL;
int count = 0; //count that the amount of files
struct dirent *entry;
char trainDir[300] testFile[300] trainFile[300];
strcpy(trainDirargv[1]);
strcpy(testFileargv[2]);
if((dirptr=opendir(trainDir))==NULL)
{
printf(“There are no this dir“);
return 1;
}
else
{
while((entry=readdir(dirptr))!=NULL)
{
if((entry->d_type)==8)
{
strcpy(trainFile trainDir);
strcat(trainFile “/“);
strcat(trainFileentry->d_name);
if((fp = fopen(trainFile“r“))==NULL)
{
printf(“Can‘t open this file\n“);
exit (1);
}
if(strstr(entry->d_name “ham“))
{
temp=create_list(fp“ham“);
numHamFile++;
}
if(strstr(entry->d_name “spam“))
{
temp=create_list(fp“spam“);
numSpamFile++;
}
fclose(fp);
count++;
if(count==1)
head=temp;
else
last->next=temp;
while((temp->next)!=NULL)
temp=temp->next;
last=temp;
}
}
closedir(dirptr);
}
if((fp1=fopen(testFile“r“))==NULL)
{
printf(“Can not open this test file\n“);
exit (1);
}
head1=create_list(fp1“unknow“);
fclose(fp1);
//print_list(head4);
classification(headhead1); //classify the test file
printf(“%s\n“finalClass);
}
TYPE *create_list(FILE *fp char classify[10])
{
TYPE *in*last*head=NULL*temp;
char ch;
char chr[5000];
int n = 0;
/*int TotCount = 0;
int DifCount = 1;*/
ch = fgetc(fp); //get the first char in the file
while(ch==‘ ‘)
ch = fgetc(fp);
while(ch!=EOF)
{
//if the ‘ch‘ is ‘ ‘jump it if the ‘ch‘ is EOF exit this loop
int i = 0;
if(ch == EOF)
break;
//create a node
if((in = malloc(LEN))==NULL)
{
printf(“out of memory!\n“);
exit(0);
}
//get words from file
while(((ch>=‘a‘)&&(ch<=‘z‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5558 2007-11-20 06:32 垃圾邮件分类器(c&Java)\filter.c
文件 9879 2007-12-18 02:12 垃圾邮件分类器(c&Java)\filter.java
文件 1467809 2007-12-15 05:36 垃圾邮件分类器(c&Java)\knowledge.txt
文件 773 2007-12-11 13:59 垃圾邮件分类器(c&Java)\Word.java
目录 0 2009-05-28 08:39 垃圾邮件分类器(c&Java)
----------- --------- ---------- ----- ----
1484019 5
相关资源
- javaweb之jsp+servlet实现简单的学生管理
- java联网版五子棋源代码
- sql server 2000 java驱动包
- java 具有图形界面的最短路径问题的求
- java实现哈密顿路径,递归和非递归两
- java仿QQ() 最新版
- opencv 安卓开发jar包,2.4.9最高版本
- mysql-connector-java-5.1.37-bin jar包
- java解析Pcap文件获取五元组可执行
- Java程序设计清华大学出版社-习题参考
- 决策树算法(Java实现)
- mysql-connector-java-5.1.46.jar
- android利用Socket实现手机客户端与PC进
- java版QQ聊天室源代码
- Java加密与解密的艺术.rar 完整源代码
- RSA与AES混合加密算法的实现java版
- Java web 大作业
- Android意见反馈功能的代码框架
- 电子文档查重系统
- Java EE互联网轻量级框架整合开发 SS
- java简单版飞鸽传书
- java 路由分组转发仿真
- TF*IDFjava实现
- java源码分水岭算法
- java实现的sift全部代码
- java实现的R树
- JAVAEE图书管理系统
- java 简单购物车
- JAVA学生教师信息录入小系统
- servlet jar包
评论
共有 条评论