31:- use_module(library(mcintyre)). 32
33:- if(current_predicate(use_rendering/1)). 34:- use_rendering(c3). 35:- endif. 36
37:- mc. 38
39:- begin_lpad. 40
41theta(_,Theta):dirichlet(Theta,Alpha):-
42 alpha(Alpha).
43
44topic(DocumentID,_,Topic):discrete(Topic,Dist):-
45 theta(DocumentID,Theta),
46 topic_list(Topics),
47 maplist(pair,Topics,Theta,Dist).
48
49word(DocumentID,WordID,Word):discrete(Word,Dist):-
50 topic(DocumentID,WordID,Topic),
51 beta_par(Topic,Beta),
52 word_list(Words),
53 maplist(pair,Words,Beta,Dist).
54
55beta_par(_,Beta):dirichlet(Beta,Parameters):-
56 n_words(N),
57 eta(Eta),
58 findall(Eta,between(1,N,_),Parameters).
59
60alpha(Alpha):-
61 eta(Eta),
62 n_topics(N),
63 findall(Eta,between(1,N,_),Alpha).
64
65eta(2).
66
67pair(V,P,V:P).
68
69topic_list(L):-
70 n_topics(N),
71 numlist(1,N,L).
72
73word_list(L):-
74 n_words(N),
75 numlist(1,N,L).
76
77
78n_topics(2).
79
80n_words(10).
81
82:-end_lpad. 83
84prob_topic_1(G):-
85 mc_sample_arg(theta(1,[T0|_]),400,T0,L0),
86 mc_mh_sample_arg(theta(1,[T1|_]),(word(1,1,1),word(1,2,1)),400,T1,L1,[lag(2)]),
87 densities(L0,L1,G,[nbins(30)])
?-
prob_topic_1(G)
. ?-mc_sample(topic(1,1,1),100,G)
. % expected result 0.5 ?-mc_mh_sample(topic(1,1,1),(word(1,1,1),word(1,2,1)),100,G,[lag(2)])
. ?-mc_sample_arg(word(1,1,W),100,W,G)
,argbar(G,C)
. ?-mc_sample_arg((word(1,1,W),topic(1,1,T)),100,(W,T),G)
,argbar(G,C)
. ?-mc_sample_arg(topic(1,1,T),100,T,G)
,argbar(G,C)
. ?-mc_mh_sample_arg(topic(1,1,T),(word(1,1,1),word(1,2,1)),100,T,G, [lag(2)])
,argbar(G,C)
.?-
mc_gibbs_sample(topic(1,1,1),100,P)
. % expected result 0.5 ?-mc_gibbs_sample(topic(1,1,1),(word(1,1,1),word(1,2,1)),100,G,[])
.?-
mc_gibbs_sample_arg(word(1,1,W),100,W,G)
,argbar(G,C)
. ?-mc_gibbs_sample_arg((word(1,1,W),topic(1,1,T)),100,(W,T),G,[])
,argbar(G,C)
. ?-mc_gibbs_sample_arg(topic(1,1,T),100,T,G)
,argbar(G,C)
. ?-mc_gibbs_sample_arg(topic(1,1,T),(word(1,1,1),word(1,2,1)),100,T,G, [])
,argbar(G,C)
.?-
mc_gibbs_sample(topic(1,1,1),(word(1,1,1),word(1,2,1)),100,G,[])
. */