//================== // Load DFA grammar //================== bool cJulius::loadGrammar( WORD_INFO *winfo, DFA_INFO *dfa, char *dictfile, char *dfafile, RecogProcess *r ) { boolean ret; if ( ! m_recog ) return false; // load grammar switch( r->lmvar ) { case LM_DFA_WORD: ret = init_wordlist(winfo, dictfile, r->lm->am->hmminfo, r->lm->config->wordrecog_head_silence_model_name, r->lm->config->wordrecog_tail_silence_model_name, (r->lm->config->wordrecog_silence_context_name[0] == '\0') ? NULL : r->lm->config->wordrecog_silence_context_name, r->lm->config->forcedict_flag); if (ret == FALSE) { return false; } break; case LM_DFA_GRAMMAR: ret = init_voca(winfo, dictfile, r->lm->am->hmminfo, FALSE, r->lm->config->forcedict_flag); if (ret == FALSE) { return false; } ret = init_dfa(dfa, dfafile); if (ret == FALSE) { return false; } break; } return true; }
int main(int argc, char **argv) { WORD_LIST *l = init_wordlist(); char input[512], command[128], word[128], target[128]; if (argc <2) { fprintf(stderr, "A synonym list file name must be specified\n"); return -1; } wordlist_load(l, argv[1]); for (;;) { fprintf(stderr, "> "); *command = *word = *target = 0; fgets(input, 512, stdin); if (strstr("\n", input)) *strstr("\n", input) = ' '; sscanf(input, "%s %s %s", command, word, target); if (!strcmp(command, "add")) wordlist_new(l, word, 1); else if (!strcmp(command, "del")) wordlist_delete(l, word); else if (!strcmp(command, "link")) wordlist_link(l, word, target); else if (!strcmp(command, "unlink")) wordlist_unlink(l, wordlist_locate_word(l, word), wordlist_locate_word(l, target)); else if (!strcmp(command, "list")) wordlist_list(l, word); else if (!strcmp(command, "save")) wordlist_save(l, argv[1]); else if (!strcmp(command, "help")) fprintf(stderr, "Commands: add, del, link, unlink, save\n"); else if (*command == -1) return 0; else if (!strcmp(command, "exit")) return 0; else fprintf(stderr, "? %s\n", command); } return 0; }
static void init_linectrl(LineControl *ctrl) { ctrl->line_length = 0; ctrl->part_word = false; ctrl->part_len = 0; init_wordlist(&ctrl->list); }
static void free_wordlist(WordList *list) { assert(list != 0); for (size_t i = 0; i < list->num_words; i++) free(list->words[i].word); free(list->words); init_wordlist(list); }
static ex_t get_robx(bfpath *bfp) { double rx; int ret = 0; init_wordlist("word", bfp->filepath, 0, WL_REGULAR); rx = compute_robinson_x(); if (rx < 0) return EX_ERROR; if (onlyprint) printf("%f\n", rx); else { dsv_t val; word_t *word_robx = word_news(ROBX_W); /* since compute_robinson_x() closes the wordlists, init_wordlist() must be called again */ init_wordlist("word", bfp->filepath, 0, WL_REGULAR); open_wordlists(DS_WRITE); val.goodcount = 0; val.spamcount = (uint32_t) (rx * 1000000); do { ret = ds_write(word_lists->dsh, word_robx, &val); if (ret == DS_ABORT_RETRY) { rand_sleep(1000, 1000000); begin_wordlist(word_lists); } } while (ret == DS_ABORT_RETRY); close_wordlists(true); free_wordlists(); word_free(word_robx); } return ret ? EX_ERROR : EX_OK; }
int main(int argc, char **argv) /*@globals errno,stderr,stdout@*/ { ex_t exitcode = EX_OK; fBogotune = true; /* for rob_compute_spamicity() */ dbgout = stderr; progtype = build_progtype(progname, DB_TYPE); ham_files = filelist_new("ham"); spam_files = filelist_new("spam"); /* process args and read mailboxes */ process_arglist(argc, argv); /* directories from command line and config file are already handled */ if (ds_flag == DS_DSK) { bfpath *bfp; if (ds_path == NULL) ds_path = get_directory(PR_ENV_BOGO); if (ds_path == NULL) ds_path = get_directory(PR_ENV_HOME); if (ds_path == NULL) { fprintf(stderr, "Cannot derive bogofilter directory from environment, aborting.\n"); exit(EX_ERROR); } set_bogohome(ds_path); bfp = bfpath_create(ds_path); if (!bfpath_check_mode(bfp, BFP_MUST_EXIST)) { fprintf(stderr, "Can't open wordlist '%s'\n", bfp->filepath); exit(EX_ERROR); } if (bfp->exists && bfp->isdir) { bfpath_free(bfp); ds_path = mxcat(ds_path, DIRSEP_S, WORDLIST, NULL); bfp = bfpath_create(ds_path); if (!bfpath_check_mode(bfp, BFP_MUST_EXIST)) { fprintf(stderr, "Can't open wordlist '%s'\n", bfp->filepath); exit(EX_ERROR); } } env = ds_init(bfp); init_wordlist("word", ds_path, 0, WL_REGULAR); } bogotune_init(); if (ds_flag == DS_DSK) load_wordlist(load_hook, train); /* if encoding not yet set, assume old style */ if (encoding == E_UNKNOWN) encoding = E_RAW; if (bogolex_file != NULL) bogolex(); else bogotune(); bogotune_free(); if (ds_flag == DS_DSK) ds_cleanup(env); exit(exitcode); }