13 m4_include(`SQLCommon.m4
')
327 -- UDT for summarizing a UDF call
328 DROP TYPE IF EXISTS MADLIB_SCHEMA.lda_result;
329 CREATE TYPE MADLIB_SCHEMA.lda_result AS
357 CREATE OR REPLACE FUNCTION
358 MADLIB_SCHEMA.lda_train
362 output_data_table TEXT,
369 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
370 PythonFunctionBodyOnly(`lda', `lda
')
372 schema_madlib, data_table, model_table, output_data_table, voc_size,
373 topic_num, iter_num, alpha, beta
375 return [[model_table, 'model table
'],
376 [output_data_table, 'output data table
']]
377 $$ LANGUAGE PLPYTHONU STRICT;
391 CREATE OR REPLACE FUNCTION
392 MADLIB_SCHEMA.lda_predict
398 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
399 PythonFunctionBodyOnly(`lda', `lda
')
400 lda.lda_predict(schema_madlib, data_table, model_table, output_table)
403 'per-doc topic distribution and per-word topic assignments
']]
404 $$ LANGUAGE PLPYTHONU STRICT;
409 CREATE OR REPLACE FUNCTION
410 MADLIB_SCHEMA.lda_predict
417 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
418 PythonFunctionBodyOnly(`lda', `lda
')
420 schema_madlib, data_table, model_table, output_table, iter_num)
423 'per-doc topic distribution and per-word topic assignments
']]
424 $$ LANGUAGE PLPYTHONU STRICT;
430 CREATE OR REPLACE FUNCTION
431 MADLIB_SCHEMA.lda_get_topic_word_count
436 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
437 PythonFunctionBodyOnly(`lda', `lda
')
438 lda.get_topic_word_count(schema_madlib, model_table, output_table)
439 return [[output_table, 'per-topic word counts
']]
440 $$ LANGUAGE plpythonu STRICT;
447 CREATE OR REPLACE FUNCTION
448 MADLIB_SCHEMA.lda_get_word_topic_count
453 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
454 PythonFunctionBodyOnly(`lda', `lda
')
455 lda.get_word_topic_count(schema_madlib, model_table, output_table)
456 return [[output_table, 'per-word topic counts
']]
457 $$ LANGUAGE plpythonu STRICT;
466 CREATE OR REPLACE FUNCTION
467 MADLIB_SCHEMA.lda_get_topic_desc
474 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
475 PythonFunctionBodyOnly(`lda', `lda
')
477 schema_madlib, model_table, vocab_table, desc_table, top_k)
480 """topic description, use "ORDER BY topicid, prob DESC" to check the
482 $$ LANGUAGE plpythonu STRICT;
490 CREATE OR REPLACE FUNCTION
491 MADLIB_SCHEMA.__lda_random_assign
497 AS 'MODULE_PATHNAME
', 'lda_random_assign
'
519 CREATE OR REPLACE FUNCTION
520 MADLIB_SCHEMA.__lda_gibbs_sample
533 AS 'MODULE_PATHNAME
', 'lda_gibbs_sample
'
548 CREATE OR REPLACE FUNCTION
549 MADLIB_SCHEMA.__lda_count_topic_sfunc
554 topic_assignment INT4[],
559 AS 'MODULE_PATHNAME
', 'lda_count_topic_sfunc
'
569 CREATE OR REPLACE FUNCTION
570 MADLIB_SCHEMA.__lda_count_topic_prefunc
576 AS 'MODULE_PATHNAME
', 'lda_count_topic_prefunc
'
577 LANGUAGE C IMMUTABLE STRICT;
589 DROP AGGREGATE IF EXISTS
590 MADLIB_SCHEMA.__lda_count_topic_agg
599 MADLIB_SCHEMA.__lda_count_topic_agg
609 sfunc = MADLIB_SCHEMA.__lda_count_topic_sfunc
612 `, prefunc = MADLIB_SCHEMA.__lda_count_topic_prefunc
'
623 CREATE OR REPLACE FUNCTION
624 MADLIB_SCHEMA.lda_get_perplexity
627 output_data_table TEXT
630 PythonFunctionBodyOnly(`lda', `lda
')
631 return lda.get_perplexity(
632 schema_madlib, model_table, output_data_table)
633 $$ LANGUAGE plpythonu STRICT;
648 CREATE OR REPLACE FUNCTION
649 MADLIB_SCHEMA.__lda_perplexity_sfunc
662 AS 'MODULE_PATHNAME
', 'lda_perplexity_sfunc
'
663 LANGUAGE C IMMUTABLE;
671 CREATE OR REPLACE FUNCTION
672 MADLIB_SCHEMA.__lda_perplexity_prefunc
678 AS 'MODULE_PATHNAME
', 'lda_perplexity_prefunc
'
679 LANGUAGE C IMMUTABLE STRICT;
686 CREATE OR REPLACE FUNCTION
687 MADLIB_SCHEMA.__lda_perplexity_ffunc
692 AS 'MODULE_PATHNAME
', 'lda_perplexity_ffunc
'
693 LANGUAGE C IMMUTABLE STRICT;
707 DROP AGGREGATE IF EXISTS
708 MADLIB_SCHEMA.__lda_perplexity_agg
720 MADLIB_SCHEMA.__lda_perplexity_agg
733 sfunc = MADLIB_SCHEMA.__lda_perplexity_sfunc,
734 finalfunc = MADLIB_SCHEMA.__lda_perplexity_ffunc
737 `, prefunc = MADLIB_SCHEMA.__lda_perplexity_prefunc
'
746 CREATE OR REPLACE FUNCTION
747 MADLIB_SCHEMA.__lda_util_unnest
752 AS 'MODULE_PATHNAME
', 'lda_unnest
'
753 LANGUAGE C IMMUTABLE STRICT;
760 CREATE OR REPLACE FUNCTION
761 MADLIB_SCHEMA.__lda_util_transpose
766 AS 'MODULE_PATHNAME
', 'lda_transpose
'
767 LANGUAGE C IMMUTABLE STRICT;
775 CREATE OR REPLACE FUNCTION
776 MADLIB_SCHEMA.__lda_util_norm_with_smoothing
781 RETURNS FLOAT8[] AS $$
782 PythonFunctionBodyOnly(`lda', `lda
')
783 return lda.l1_norm_with_smoothing(arr, smooth)
784 $$ LANGUAGE PLPYTHONU STRICT;
791 CREATE OR REPLACE FUNCTION
792 MADLIB_SCHEMA.__lda_util_index_sort
797 PythonFunctionBodyOnly(`lda', `lda
')
798 return lda.index_sort(arr)
799 $$ LANGUAGE plpythonu STRICT;
808 CREATE OR REPLACE FUNCTION
809 MADLIB_SCHEMA.__lda_util_norm_vocab
812 output_vocab_table TEXT
814 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
815 PythonFunctionBodyOnly(`lda', `lda
')
816 lda.norm_vocab(vocab_table, output_vocab_table)
817 return [[output_vocab_table,'normalized vocbulary table
']]
818 $$ LANGUAGE plpythonu STRICT;
827 CREATE OR REPLACE FUNCTION
828 MADLIB_SCHEMA.__lda_util_norm_dataset
831 norm_vocab_table TEXT,
832 output_data_table TEXT
834 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
835 PythonFunctionBodyOnly(`lda', `lda
')
836 lda.norm_dataset(data_table, norm_vocab_table, output_data_table)
837 return [[output_data_table,'normalized data table
']]
838 $$ LANGUAGE plpythonu STRICT;
850 CREATE OR REPLACE FUNCTION
851 MADLIB_SCHEMA.__lda_util_conorm_data
855 output_data_table TEXT,
856 output_vocab_table TEXT
858 RETURNS SETOF MADLIB_SCHEMA.lda_result AS $$
859 PythonFunctionBodyOnly(`lda', `lda
')
861 data_table, vocab_table, output_data_table, output_vocab_table)
862 return [[output_data_table,'normalized data table
'],
863 [output_vocab_table,'normalized vocab table
']]
864 $$ LANGUAGE plpythonu STRICT;