void put_local_vars_in_opts(Parse_Options opts) { parse_options_set_verbosity(opts, local.verbosity); parse_options_set_max_parse_time(opts, local.timeout); parse_options_set_max_memory(opts, local.memory); parse_options_set_linkage_limit(opts, local.linkage_limit); parse_options_set_null_block(opts, local.null_block); parse_options_set_islands_ok(opts, local.islands_ok); parse_options_set_short_length(opts, local.short_length); parse_options_set_echo_on(opts, local.echo_on); parse_options_set_batch_mode(opts, local.batch_mode); parse_options_set_panic_mode(opts, local.panic_mode); parse_options_set_screen_width(opts, local.screen_width); parse_options_set_allow_null(opts, local.allow_null); parse_options_set_screen_width(opts, local.screen_width); parse_options_set_display_on(opts, local.display_on); parse_options_set_display_postscript(opts, local.display_postscript); parse_options_set_display_constituents(opts, local.display_constituents); parse_options_set_max_sentence_length(opts, local.max_sentence_length); parse_options_set_display_bad(opts, local.display_bad); parse_options_set_display_links(opts, local.display_links); parse_options_set_display_walls(opts, local.display_walls); parse_options_set_display_union(opts, local.display_union); }
static void put_local_vars_in_opts(Parse_Options opts) { parse_options_set_verbosity(opts, local.verbosity); parse_options_set_max_parse_time(opts, local.timeout); parse_options_set_max_memory(opts, local.memory); parse_options_set_linkage_limit(opts, local.linkage_limit); parse_options_set_null_block(opts, local.null_block); parse_options_set_islands_ok(opts, local.islands_ok); parse_options_set_spell_guess(opts, local.spell_guess); parse_options_set_short_length(opts, local.short_length); parse_options_set_echo_on(opts, local.echo_on); parse_options_set_cost_model_type(opts, local.cost_model); parse_options_set_disjunct_costf(opts, local.max_cost); parse_options_set_batch_mode(opts, local.batch_mode); parse_options_set_panic_mode(opts, local.panic_mode); parse_options_set_screen_width(opts, local.screen_width); parse_options_set_allow_null(opts, local.allow_null); parse_options_set_use_cluster_disjuncts(opts, local.use_cluster_disjuncts); #ifdef USE_FAT_LINKAGES parse_options_set_use_fat_links(opts, local.use_fat_links); parse_options_set_display_union(opts, local.display_union); #endif /* USE_FAT_LINKAGES */ #ifdef USE_SAT_SOLVER parse_options_set_use_sat_parser(opts, local.use_sat_solver); #endif parse_options_set_use_viterbi(opts, local.use_viterbi); parse_options_set_screen_width(opts, local.screen_width); parse_options_set_display_on(opts, local.display_on); parse_options_set_display_postscript(opts, local.display_postscript); parse_options_set_display_constituents(opts, local.display_constituents); parse_options_set_max_sentence_length(opts, local.max_sentence_length); parse_options_set_display_bad(opts, local.display_bad); parse_options_set_display_disjuncts(opts, local.display_disjuncts); parse_options_set_display_links(opts, local.display_links); parse_options_set_display_senses(opts, local.display_senses); parse_options_set_display_walls(opts, local.display_walls); }
/// This is the basic sentence dissection static PyObject *sentence(PyObject *self, PyObject *args) { Dictionary dict; Parse_Options opts; Sentence sent; Linkage linkage; Linkage sub_linkage; char * diagram; /// Link counts int num_linkages; int links; /// Index's for the iterators int link_idx; int word_idx; int num_words; long span; long sub_linkages; const char *text; const char *d_output; PyObject *output_list; PyObject *word_list; PyObject *word2_list; PyObject *span_list; PyObject *temp; PyObject *sublinkage_list; PyObject *_diagram; output_list = PyList_New(0); word_list = PyList_New(0); word2_list = PyList_New(0); sublinkage_list = PyList_New(0); span_list = PyList_New(0); if (!PyArg_ParseTuple(args, "s", &text)) return NULL; opts = parse_options_create(); parse_options_set_verbosity(opts, -1); parse_options_set_screen_width(opts, 50); setlocale(LC_ALL, ""); dict = dictionary_create_default_lang(); if (!dict) { PyErr_SetString(PyExc_RuntimeError, "Fatal error: Unable to open the dictionary"); Py_INCREF(Py_None); return Py_None; } sent = sentence_create(text, dict); sentence_split(sent, opts); num_linkages = sentence_parse(sent, opts); if (num_linkages > 0) { linkage = linkage_create(0, sent, opts); /// Get the lengths of everything num_words = linkage_get_num_words(linkage); links = linkage_get_num_links(linkage); for(link_idx=0; link_idx < links; link_idx++) { PyObject *temp_subLen; diagram = linkage_print_diagram(linkage); _diagram = PyString_FromString(diagram); sub_linkage = linkage_create(link_idx, sent, opts); sub_linkages = linkage_get_num_sublinkages(linkage); temp_subLen = PyLong_FromLong(sub_linkages); linkage_delete(sub_linkage); PyList_Append(sublinkage_list, temp_subLen); span = linkage_get_link_length(linkage, link_idx); PyList_Append(span_list, PyInt_FromLong(span)); PyObject *temp_list; temp_list = PyList_New(0); /// Sub Group these (left and right labels) const char *t1 = linkage_get_link_llabel(linkage, link_idx); temp = PyString_FromString(t1); PyList_Append(temp_list, temp); const char *t2 = linkage_get_link_rlabel(linkage, link_idx); temp = PyString_FromString(t2); PyList_Append(temp_list, temp); /// Then add to the main list PyList_Append(output_list, temp_list); /// Just the label const char *t3 = linkage_get_link_label(linkage, link_idx); temp = PyString_FromString(t3); PyList_Append(word2_list, temp); } for(word_idx=0; word_idx < num_words; word_idx++) { d_output = linkage_get_word(linkage, word_idx); PyObject *word; word = PyString_FromString(d_output); PyList_Append(word_list, word); } linkage_free_diagram(diagram); linkage_delete(linkage); } else { sentence_delete(sent); dictionary_delete(dict); parse_options_delete(opts); Py_INCREF(Py_None); return Py_None; } sentence_delete(sent); dictionary_delete(dict); parse_options_delete(opts); return Py_BuildValue("SSSSSS", word_list, span_list, output_list, word2_list, sublinkage_list, _diagram); }