Exemplo n.º 1
0
int     nmatch(char *s1, char *s2)
{
  if (*s1 != '\0' && *s2 == '*')
    return (nmatch(s1 + 1, s2) +  nmatch(s1, s2 + 1));
  else if (*s1 == '\0' && *s2 == '*')
    return (nmatch(s1, s2 + 1));
  else if (*s1 == *s2 && *s1 != '\0' && *s2 != '\0')
    return (nmatch(s1 + 1, s2 + 1));
  else if (*s1 == '\0' && *s2 == '\0')
    return (1);
  return (0);
}
Exemplo n.º 2
0
int		nmatch(char *s1, char *s2)
{
	if (!*s1 && !*s2)
		return (1);
	else if (*s1 == *s2)
		return (nmatch(s1 + 1, s2 + 1));
	else if (*s2 == '*' && !*s1)
		return (nmatch(s1, s2 + 1));
	else if (*s2 == '*' && *s1)
		return (nmatch(s1 + 1, s2) + nmatch(s1, s2 + 1));
	return (0);
}
Exemplo n.º 3
0
int main (int ac, char **av)
{
	if (ac > 1)
	{
		printf("%d", nmatch(av[1], av[2]));
	}
}
Exemplo n.º 4
0
int nmatch(char *s1, char *s2)
{
	static int i = 0;

	if (*s2)
		if (*s2 == '*' && *(s2 + 1) == '\0')
			return (i+1);
	if (*s2 == '*' && *s1)
	{
		if (nmatch(s1, s2 + 1))
			return (i+1);
		else
			return (nmatch(s1 + 1, s2));
	}
	if (*s2 == '\0' && *s1 == '\0')
		return (i+1);
	if (*s1 == *s2)
		return(nmatch(s1 + 1, s2 + 1));
	else
		return (i);
}
Exemplo n.º 5
0
unsigned rtps_def_trace (unsigned handle, const char *name)
{
	unsigned	i;

	for (i = 0; i < MAX_HANDLE_TRACES && rtps_handle_traces [i].handle; i++)
		if (rtps_handle_traces [i].handle == handle)
			return (rtps_handle_traces [i].mode);

	for (i = 0; i < MAX_NAME_TRACES && rtps_name_traces [i].name [0]; i++)
		if (!nmatch (rtps_name_traces [i].name, name, NM_NOESCAPE))
			return (rtps_name_traces [i].mode);

	return (dds_dtrace);
}
Exemplo n.º 6
0
void t_ignore (const char *cmd, DDS_DomainParticipant part)
{
	Topic	*tp;
	char	spec [192];

	skip_blanks (&cmd);
	skip_string (&cmd, spec);
	if (spec [0]) {
		lock_take (topic_lock);
		LIST_FOREACH (topics, tp)
			if (tp->active &&
			    !nmatch (spec, tp->topic_name, NM_CASEFOLD))
				stop_reader (part, tp);
		lock_release (topic_lock);
	}
}
Exemplo n.º 7
0
Arquivo: main.c Projeto: bq/qeo-core
int main (int argc, const char *argv[])
{
	const char	*name, *pattern, *s;
	unsigned	i;
	int		flags = 0, r;

	if (argc == 4)
		if (argv [1][0] == '-') {
			pattern = argv [2];
			name = argv [3];
			s = argv [1];
			while (*++s != '\0')
				if (*s == 'e')
					flags |= NM_NOESCAPE;
				else if (*s == 'c')
					flags |= NM_CASEFOLD;
				else if (*s == 's')
					flags |= NM_SQL;
				else
					usage ();
		}
		else
			usage ();
	else if (argc == 3) {
		pattern = argv [1];
		name = argv [2];
	}
	else
		usage ();

	printf ("NoEscape:%u, CaseFold:%u, SQL:%u, Pattern:'%s', Name:'%s'  ->  ",
			(flags & NM_NOESCAPE) != 0,
			(flags & NM_CASEFOLD) != 0,
			(flags & NM_SQL) != 0,
			pattern,
			name);
	r = nmatch (pattern, name, flags);
	if (r == NM_MATCH)
		printf ("Match!\r\n");
	else
		printf ("No match\n");
}
Exemplo n.º 8
0
void train_once_KernelPerceptronModel(KernelPerceptron mdl, const CoNLLCorpus corpus, int max_rec) {
    long match = 0, total = 0;
    //size_t slen=0;

    double s_initial = dsecnd();
    int max_sv = 0;


    log_info("Total number of training instances %d", (max_rec == -1) ? DArray_count(corpus->sentences) : max_rec);

    for (int si = 0; si < ((max_rec == -1) ? DArray_count(corpus->sentences) : max_rec); si++) {

        FeaturedSentence sent = (FeaturedSentence) DArray_get(corpus->sentences, si);

        debug("Building feature matrix for sentence %d", si);
        set_FeatureMatrix(NULL, corpus, si);

        set_adjacency_matrix_fast(corpus, si, mdl, false);

        max_sv += (sent->length + 1) * sent->length - sent->length;

        int *model = parse(sent);

        //printfarch(model, sent->length);
        debug("Parsing sentence %d of length %d is done", si, sent->length);
        int *empirical = get_parents(sent);

        //printfarch(empirical, sent->length);
        int nm = nmatch(model, empirical, sent->length);

        debug("Model matches %d arcs out of %d arcs", nm, sent->length);
        if (nm != sent->length) { // root has no valid parent.
            log_info("Sentence %d (section %d) of length %d (%d arcs out of %d arcs are correct)", si, sent->section, sent->length, nm, sent->length);

            int sentence_length = sent->length;
            for (int to = 1; to <= sentence_length; to++) {

                if (model[to] != empirical[to]) {

                    update_alpha(mdl, si, model[to], to, sent, -1);

                    update_alpha(mdl, si, empirical[to], to, sent, +1);
                }


            }
        } else {
            log_info("Sentence %d (section %d) of length %d (Perfect parse)", si, sent->section, sent->length);
        }

        size_t nsuccess;
        if (budget_method == RANDOMIZED) {
            if (mdl->M > budget_target) {
                size_t nbefore = mdl->M;
                size_t nasked = nbefore - budget_target;
                nsuccess = delete_n_random_hypothesis(mdl, nasked);

                log_info("%lu vectors deleted (%lu asked). Current hypothesis set size reduced from %lu to %lu", nsuccess, nasked, nbefore, mdl->M);
            }
        }

        mdl->c++;

        free_feature_matrix(corpus, si);

        match += nm;
        total += (sent->length);


        if ((si + 1) % 1000 == 0 && si != 0) {
            log_info("Running training accuracy %lf after %d sentence.", (match * 1.) / total, si + 1);

            unsigned nsv = mdl->M;
            log_info("%u (%f of total %d) support vectors", nsv, (nsv * 1.) / max_sv, max_sv);
        }

        free(model);
        free(empirical);
    }

    unsigned nsv = mdl->M;
    log_info("Running training accuracy %lf", (match * 1.) / total);
    log_info("%u (%f of total %d) support vectors", nsv, (nsv * 1.) / max_sv, max_sv);

    if (verbosity > 0) {

        dump_support_vectors(mdl);



    }

    update_average_alpha(mdl);

    return;
}
Exemplo n.º 9
0
Endpoint *ep_create (DDS_DomainParticipant           part,
		     DDS_BuiltinTopicKey_t           *key,
		     const char                      *topic_name,
		     const char                      *type_name,
		     DDS_PublicationBuiltinTopicData *data,
		     int                             writer)
{
	Topic		*tp;
	Endpoint	*ep;

	printf ("* New %s (%s/%s)\r\n", (writer) ? "writer" : "reader", 
						topic_name, type_name);
	ep = ep_lookup (key);
	if (ep) {
		if (writer) {
			ep->data = *data;
			tp = ep->topic;
			ep->data.topic_name = tp->topic_name;
			ep->data.type_name = tp->type_name;
		}
		return (ep);
	}
	ep = malloc (sizeof (Endpoint));
	if (!ep) {
		fprintf (stderr, "Not enough memory to create endpoint!\r\n");
		return (NULL);
	}
	ep->topic = tp = t_lookup (topic_name);
	if (!tp) {
		ep->link = NULL;
		tp = malloc (sizeof (Topic));
		if (!tp) {
			fprintf (stderr, "Not enough memory to create topic!\r\n");
			free (ep);
			return (NULL);
		}
		if (writer) {
			tp->writers = ep;
			tp->readers = NULL;
		}
		else {
			tp->readers = ep;
			tp->writers = NULL;
		}
		tp->topic_name = strdup (topic_name);
		tp->type_name = strdup (type_name);
		tp->active = 0;
		tp->topic = NULL;
		tp->dtype = NULL;
		tp->sub = NULL;
		tp->ts = NULL;
		tp->ndata = tp->ndispose = tp->nnowriter = 0;
		ep->topic = tp;
		LIST_ADD_TAIL (topics, *tp);
	}
	else if (writer) {
		ep->link = tp->writers;
		tp->writers = ep;
	}
	else {
		ep->link = tp->readers;
		tp->readers = ep;
	}
	ep->writer = writer;
	ep->key = *key;
	if (ep->writer) {
		ep->data = *data;
		ep->data.topic_name = tp->topic_name;
		ep->data.type_name = tp->type_name;
	}
	LIST_ADD_TAIL (endpoints, *ep);

	/* Endpoint successfully added -- check if we need a reader. */
	if (writer &&
	    !ep->link &&
	    auto_filter [0] &&
	    !nmatch (auto_filter, tp->topic_name, NM_CASEFOLD))
		start_reader (part, tp);
	return (ep);
}
Exemplo n.º 10
0
void train_once_PerceptronModel(PerceptronModel mdl, const CoNLLCorpus corpus, int max_rec) {
    long match = 0, total = 0;
    //size_t slen=0;

    log_info("Total number of training instances %d", (max_rec == -1) ? DArray_count(corpus->sentences) : max_rec);
    for (int si = 0; si < ((max_rec == -1) ? DArray_count(corpus->sentences) : max_rec); si++) {
        //log_info("Parsing sentence %d/%d", si+1, DArray_count(corpus));
        FeaturedSentence sent = (FeaturedSentence) DArray_get(corpus->sentences, si);


        start(&parser_rate);
        //debug("Building feature matrix for sentence %d of length %d", si, sent->length);
        //set_FeatureMatrix(NULL, corpus, si);


        //printfembedding(sent->feature_matrix, sent->length);

        debug("Building adjacency matrix for sentence %d of length %d", si, sent->length);
        build_adjacency_matrix(corpus, si, mdl->embedding_w, NULL);

        //printfmatrix(sent->adjacency_matrix, sent->length);

        //log_info("Adjacency matrix construction is done");


        int *model = parse(sent);
        stop(&parser_rate);
        debug("Parsing sentence %d is done", si);
        int *empirical = get_parents(sent);

        /*
        log_info("Model:");
        printfarch(model, sent->length);
        log_info("Empirical:");
        printfarch(empirical, sent->length);
         */

        int nm = nmatch(model, empirical, sent->length);
        debug("Model matches %d arcs out of %d arcs", nm, sent->length);
        if (nm != sent->length) { // root has no valid parent.

            if (corpus->disrete_patterns_parts) {

                log_info("I have discrete features");

                DArray* model_features = DArray_create(sizeof (uint32_t), 16);
                DArray* empirical_features = DArray_create(sizeof (uint32_t), 16);

                for (int fi = 1; fi < sent->length; fi++) {
                    fill_features(mdl->features->map, model_features, model[fi], fi, sent);

                    fill_features(mdl->features->map, empirical_features, empirical[fi], fi, sent);
                }

                for (int i = 0; i < DArray_count(model_features); i++) {
                    uint32_t *fidx = (uint32_t *) DArray_get(model_features, i);

                    mdl->discrete_w->data[*fidx] -= 1.0;
                    mdl->discrete_w_avg->data[*fidx] -= (mdl->c) * 1.0;
                    mdl->discrete_w_temp->data[*fidx] -= 1.0;

                }

                for (int i = 0; i < DArray_count(empirical_features); i++) {
                    uint32_t *fidx = (uint32_t *) DArray_get(empirical_features, i);

                    mdl->discrete_w->data[*fidx] += 1.0;
                    mdl->discrete_w_avg->data[*fidx] += (mdl->c) * 1.0;

                    mdl->discrete_w_temp->data[*fidx] += 1.0;
                }

                DArray_destroy(model_features);
                DArray_destroy(empirical_features);
            }

            for (int i = 1; i <= sent->length; i++) {

                if (model[i] != empirical[i]){
                    // -1 for Model arch
                    embedding_feature(sent, model[i], i, xformed_v);
                    vadd(mdl->embedding_w, xformed_v, -1.0);
                    vadd(mdl->embedding_w_temp, xformed_v, -1.0);
                    vadd(mdl->embedding_w_avg, xformed_v, -(mdl->c));

                    // +1 for Gold arc
                    embedding_feature(sent, empirical[i], i, xformed_v);

                    vadd(mdl->embedding_w, xformed_v, 1.0);
                    vadd(mdl->embedding_w_temp, xformed_v, 1.0);
                    vadd(mdl->embedding_w_avg, xformed_v, (mdl->c));
                }

                //free(real_embedding);
                //free(model_embedding);
            }
        }

        free_feature_matrix(corpus, si);

        mdl->c++;

        match += nm;
        total += (sent->length);

        if (si % 1000 == 0 && si > 0) {
            log_info("Running training accuracy %lf", (match * 1.) / total);

        }


        free(model);
        free(empirical);

        //free_sentence_structures(sent);
    }

    log_info("Running training accuracy %lf", (match * 1.) / total);

    if (corpus->disrete_patterns_parts) {
        for (int i = 0; i < mdl->n; i++) {
            //        mdl->w_avg[i] /= (numit * DArray_count(corpus));

            //mdl->w[i] -=(mdl->w_avg[i])/(mdl->c);

            mdl->discrete_w_temp->data[i] = mdl->discrete_w->data[i] - (mdl->discrete_w_avg->data[i]) / (mdl->c);
        }
    }

    //vadd(mdl->w_cont, mdl->w_cont_avg, -1./(mdl->c), SCODE_FEATURE_VECTOR_LENGTH);
    memcpy(mdl->embedding_w_temp->data, mdl->embedding_w->data, mdl->embedding_w->n * sizeof (float));
    vadd(mdl->embedding_w_temp, mdl->embedding_w_avg, -1. / (mdl->c));

    //    free(mdl->w);
    //    mdl->w = mdl->w_avg;

    //free_feature_matrix(sent);
}
Exemplo n.º 11
0
int		main(void)
{
	printf("%d\n", nmatch("bonjour", "**j**"));
	return (0);
}
Exemplo n.º 12
0
/* Return a pointer to the interface struct for the passed address. */
struct ifreq *
getif(int s, struct in_addr *addrp)
	      						/* socket file descriptor */
	                      		/* destination address on interface */
{
	int maxmatch;
	int len, m, incr;
	struct ifreq *ifrq, *ifrmax;
	struct sockaddr_in *sip;
	char *p;

	/* If no address was supplied, just return NULL. */
	if (!addrp)
		return (struct ifreq *) 0;

	/* Get the interface config if not done already. */
	if (ifconf.ifc_len == 0) {
#ifdef	SVR4
		/*
		 * SysVr4 returns garbage if you do this the obvious way!
		 * This one took a while to figure out... -gwr
		 */
		struct strioctl ioc;
		ioc.ic_cmd = SIOCGIFCONF;
		ioc.ic_timout = 0;
		ioc.ic_len = sizeof(ifreq);
		ioc.ic_dp = (char *) ifreq;
		m = ioctl(s, I_STR, (char *) &ioc);
		ifconf.ifc_len = ioc.ic_len;
		ifconf.ifc_req = ifreq;
#else	/* SVR4 */
		ifconf.ifc_len = sizeof(ifreq);
		ifconf.ifc_req = ifreq;
		m = ioctl(s, SIOCGIFCONF, (caddr_t) & ifconf);
#endif	/* SVR4 */
		if ((m < 0) || (ifconf.ifc_len <= 0)) {
			report(LOG_ERR, "ioctl SIOCGIFCONF");
			return (struct ifreq *) 0;
		}
	}
	maxmatch = 7;				/* this many bits or less... */
	ifrmax = (struct ifreq *) 0;/* ... is not a valid match  */
	p = (char *) ifreq;
	len = ifconf.ifc_len;
	while (len > 0) {
		ifrq = (struct ifreq *) p;
		if (ifrq->ifr_addr.sa_family == AF_INET) {
			sip = (struct sockaddr_in *) &ifrq->ifr_addr;
			m = nmatch((u_char *)addrp, (u_char *)&(sip->sin_addr));
			if (m > maxmatch) {
				maxmatch = m;
				ifrmax = ifrq;
			}
		}
		/* XXX - Could this be just #ifndef IFNAMSIZ instead? -gwr */
#if (BSD - 0) < 43
		/* BSD not defined or earlier than 4.3 */
		incr = sizeof(*ifrq);
#else /* NetBSD */
		incr = ifrq->ifr_addr.sa_len + IFNAMSIZ;
#endif /* NetBSD */

		p += incr;
		len -= incr;
	}

	return ifrmax;
}
Exemplo n.º 13
0
int             *parsing_file(char *file_name, int *counter, llist l_args)
{
  FILE          *fp;
  FILE          *np;
  char          *line = NULL;
  size_t        len = 0;
  ssize_t       read;
  int           i = 1;
  int		comment_count = 0;
  DIR           *d;
  char		*directory = make_directory(l_args->directory, file_name);
  int		sub_dir = l_args->pr_s;
  char		*org_dir = l_args->directory;
  struct dirent *dir;

  if (nmatch(file_name, "*/..") == 1 || nmatch(file_name, "*/.") == 1 ||
      nmatch(file_name, ".") == 1 || nmatch(file_name, "..") == 1 ||
      nmatch(file_name, "no_comment") == 1)
    return (counter);
  counter[3] = counter[3] + 1;
  if  (is_directory(file_name) == 1 && nmatch(file_name, org_dir) == 0)
    {
      d = opendir(file_name);
      if (d && sub_dir == 1)
	{
	  printf(ANSI_COLOR_BLUE"!---> Reading directory '%s':\n"ANSI_COLOR_RESET,
		 file_name);
	  while ((dir = readdir(d)) != NULL)
	    {
	      check_directory(directory, 1);
	      counter = parsing_file(make_directory(file_name, dir->d_name),
				     counter, l_args);
	    }
	  printf(ANSI_COLOR_BLUE"End of directory '%s' <---!\n"ANSI_COLOR_RESET,
		 file_name);
	  return (counter);
	  closedir(d);
	}
      return (counter);
    }
  printf("\n> Reading file: '%s'\n", file_name);
  printf("Destination: '%s'\n", directory);
  if ((fp = fopen(file_name, "r")) == NULL)
    {
      printf(ANSI_COLOR_RED"! Error while reading file '%s'\n" ANSI_COLOR_RESET
	     , (file_name ? file_name : " "));
      counter[1] = counter[1] + 1;
      return (counter);
    }
  if ((np = fopen(directory, "w+")) == NULL)
    {
      printf(ANSI_COLOR_RED"! Error while creating file '%s'\n"ANSI_COLOR_RESET
	     , (file_name ? file_name : " "));
      counter[1] = counter[1] + 1;
      return (counter);
    }
  counter[0] = counter[0] + 1;
  while ((read = getline(&line, &len, fp)) != -1)
    comment_count = write_file(np, line, comment_count);
  printf("Total of comments deleted: %d\n", comment_count);
  printf(ANSI_COLOR_GREEN "--> Done for %s\n\n"ANSI_COLOR_RESET, file_name);
  counter[2] = counter[2] + comment_count;
  return (counter);
  fclose(fp);
  fclose (np);
}