| /* ----------------------------------------------------------------------- *//** |
| * |
| * @file viterbi.sql_in |
| * @brief concatenate a set of input values into arrays to feed into viterbi c |
| * function and create a human readable view of the output |
| * @date February 2012 |
| * |
| * |
| *//* ----------------------------------------------------------------------- */ |
| |
| m4_include(`SQLCommon.m4') |
| |
| /** |
| * @brief This function creates the specified result_tbl containing top1 labels for the sequence. |
| * @param segment_tbl Name of table containing all the testing sentences. |
| * @param label_tbl Name of table containing all the labels in the label space. |
| * @param result_tbl Name of table storing the best label sequence and the conditional probability. |
| */ |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.vcrf_top1_table( |
| segment_tbl TEXT, |
| label_tbl TEXT, |
| resulttbl_raw TEXT, |
| result_tbl TEXT |
| ) returns TEXT AS $$ |
| PythonFunction(crf, viterbi, vcrf_top1_table) |
| $$ LANGUAGE plpythonu strict |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `MODIFIES SQL DATA', `'); |
| |
| /** |
| * @brief This function implements the Viterbi algorithm which takes the sentence to be label as input and return the top1 labeling for that sentence |
| * @param marray Name of arrays containing m factors |
| * @param rarray Name of arrays containing r factors |
| * @param nlabel Total number of labels in the label space |
| * @returns the top1 label sequence, the last two elements in the array is used to calculate the top1 probability |
| */ |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.vcrf_top1_label(mArray DOUBLE PRECISION[], rArray DOUBLE PRECISION[], nlabel int) |
| returns int[] as 'MODULE_PATHNAME' language c strict; |
| |
| |
| /** |
| * @brief This function prepares the inputs for the c function 'vcrf_top1_label' and invoke the c function. |
| * @param segment_tbl Name of table containing all the testing sentences. |
| * @param factor_mtbl Name of table containing all the m factors. |
| * @param factor_rtbl Name of table containing all the r factors. |
| * @param label_tbl Name of table containing all the labels in the label space. |
| * @param result_tbl Name of table to store the output |
| * @returns the top1 label sequence, the last two elements in the array is used to calculate the top1 probability |
| */ |
| |
| CREATE OR REPLACE FUNCTION |
| MADLIB_SCHEMA.vcrf_label( |
| segment_tbl TEXT, |
| factor_mtbl TEXT, |
| factor_rtbl TEXT, |
| label_tbl TEXT, |
| result_tbl TEXT |
| ) RETURNS TEXT AS $$ |
| PythonFunction(crf, viterbi, vcrf_label) |
| $$ LANGUAGE plpythonu |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `MODIFIES SQL DATA', `'); |