⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phrases-main.c

📁 Ripper 分类算法
💻 C
字号:
#include <stdio.h>#include "ripper.h"#include "protos.h"#include "mdb.h"/******************************************************************************/char *Program="phrases";char *Help_str[] = {    "syntax: phrases [options] [stem]",    "   add phrases to a set-valued fields of a dataset",    "",    "options are:",    "  -s:       read from stdin",    "  -n <str>: use attribute named <str>",     "  -D #:     max distance is #",     "  -N yn:    add 'near' facts (default y)",    "  -A yn:    add 'after' facts (default y)",    NULL};main(argc,argv)int argc;char *argv[];{    vec_t *data;    char *stem;    BOOL use_stdin,add_near,add_after;    int i,j,k,el,dist,end;    example_t *exi;    symbol_t *wj,*wk,*wnew;    char cbuf[BUFSIZ];    int o;    char *attr_name;    int attr_index;    vec_t *seti;    int oldmax;    /* defaults */    set_trace_level(SUMM);    use_stdin = FALSE;    add_near = add_after = TRUE;    dist = 2;    attr_name = "";    while ((o=getopt(argc,argv,"sm:D:N:A:h"))!=EOF) {	switch (o) {	  case 's':	    use_stdin = TRUE;	    break;	  case 'D':	    dist = atoi(optarg);	    break;	  case 'N':	    add_near = (optarg[0]=='y' || optarg[0]=='Y');	    break;	  case 'A':	    add_after = (optarg[0]=='y' || optarg[0]=='Y');	    break;	  case 'n':	    attr_name = optarg;	    break;	  case 'h':	  case '?':	  default: 	    give_help();	    if (o=='h') exit(0);	    else fatal("option not implemented");	}    }    if (optind<argc) {	stem = argv[optind++];	ld_names(add_ext(stem,".names"));	if (use_stdin) data = ld_data(NULL);	else data = ld_data(add_ext(stem,".data"));    } else {	data = ld_data(NULL);    }    if (optind<argc) {	warning("not all arguments were used: %s ...",argv[optind]);    }    if (data==NULL || vmax(data)==0) fatal("no data!");    /* figure out which attribute is being used */    attr_index = 0; /* default */    for (i=0; i<n_fields(); i++) {	if (strcmp(field_name(i),attr_name)==0) {	    attr_index = i;	    break;	}    }    if (!set_field(attr_index)) {	fatal("attribute %s is not set-valued",field_name(attr_index));    }    for (i=0; i<vmax(data); i++) {	exi = vref(example_t,data,i);	seti = vref(aval_t,exi->inst,attr_index)->u.set;	/* add phrases to example */	oldmax = vmax(seti);	for (j=0; j<oldmax; j++) {	    end = oldmax-1;	    if (end >= j+dist) end = j+dist;	    for (k=j+1; k<=end; k++) {		wj = *vref(symbol_t *,seti,j);		wk = *vref(symbol_t *,seti,k);		if (add_near) {		    for (el=k-j;el<=dist;el++) {			if (strcmp(wj->name,wk->name) <= 0) {			    sprintf(cbuf,"near%d(%s,%s)",				   el,wj->name,wk->name);			    wnew = intern(cbuf);			    ext_vec(symbol_t *,seti,&wnew);			} else {			    sprintf(cbuf,"near%d(%s,%s)",				   el,wj->name,wk->name);			    wnew = intern(cbuf);			    ext_vec(symbol_t *,seti,&wnew);			}		    }		}		if (add_after) {		    sprintf(cbuf,"after%d(%s,%s)",			    dist,wj->name,wk->name);		    wnew = intern(cbuf);		    ext_vec(symbol_t *,seti,&wnew);		}	    }/* for later word k*/	}/*for earlier word j*/    } /* for example i */    /* print the extended dataset */    print_data(data);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -