% Sean Brennan  <sbrennan@cs.unm.edu>
% Estonian Language Stochastic Parser in Prolog

% Ignore non-latin orthography
% N.B.: in Estonian, there are:
%	no articles
%	interrogatives (question words)
%	lots and lots of conjugations not covered here


utterance(Prob, X) :- sentence(Prob, _, _, _, X, []).

sentence(Prob, Int, Noun, Verb, Start, End) :-
    interrogative(Pi, Int, Start, More), 
    nounphrase(Pn, Noun, More, Rest), 
    verbphrase(Pv, Verb, Rest, End),
    pr(s1, P),
    pr([s3, Int, Verb], PrDep1),
    pr([s2, Noun, Verb], PrDep2),
    Prob is P*PrDep1*PrDep2*Pi*Pn*Pv.

sentence(Prob, _, Noun, Verb, Start, End) :-
    nounphrase(Pn, Noun, Start, Rest), 
    verbphrase(Pv, Verb, Rest, End),
    pr(s2, P),
    pr([s2, Noun, Verb], PrDep),
    Prob is P*PrDep*Pn*Pv.


% Because the person of a verb is indicated by conjugation, 
%	pronouns are optional (this parser prefers laziness).
sentence(Prob, Int, _, Verb, Start, End) :-
    interrogative(Pi, Int, Start, Rest), 
    verbphrase(Pv, Verb, Rest, End),
    pr(s3, P),
    pr([s3, Int, Verb], PrDep),
    Prob is P*PrDep*Pi*Pv.

sentence(Prob, _, _, Verb, Start, End) :-
    verbphrase(Pv, Verb, Start, End),
    pr(s4, P),
    Prob is P*Pv.


interrogative(Prob, Int, [Int|End], End) :-
    interrogator(Prob, Int).


nounphrase(Prob, Noun, [Noun|End], End) :- 
    pronoun(Pp, Noun),
    pr(n1, P),
    Prob is P*Pp.

nounphrase(Prob, Noun, [Noun|End], End) :- 
    noun(Pn, Noun),
    pr(n2, P),
    Prob is P*Pn.



verbphrase(Prob, Verb, [Verb|End], End) :- 
    verb(Pv, Verb),
    pr(v1, P),
    Prob is P*Pv.

verbphrase(Prob, Verb, [Verb, Rest|End], End) :- 
    verb(Pv, Verb),
    verb(Pv2, Rest),
    pr(v2, P),
    pr([v2, Verb, Rest], PrDep),
    Prob is P*PrDep*Pv*Pv2.

verbphrase(Prob, Verb, [Verb, Rest|End], End) :- 
    verb(Pv, Verb), 
    noun(Pn2, Rest),
    pr(v3, P),
    pr([v3, Verb, Rest], PrDep),
    Prob is P*PrDep*Pv*Pn2.



	% (yes/no interrogative) 
interrogator(0.5, kas).

	% how
interrogator(0.1, kuidas).

	% what
interrogator(0.2, mis).

	% who
interrogator(0.075, kes).

	% where
interrogator(0.05, kus).

	% when
interrogator(0.025, millal).


	% I
pronoun(0.4, mina).
	% (abbreviation)
pronoun(0.6, ma).

	% you
pronoun(0.4, sina).
pronoun(0.6, sa).

	% he/she
pronoun(0.3, tema).
pronoun(0.5, ta).

	% it
pronoun(0.2, see).

	% we
pronoun(0.4, meie).
pronoun(0.6, me).

	% you
pronoun(0.4, teie).
pronoun(0.6, te).

	% they
pronoun(0.4, nemad).
pronoun(0.6, nad).


	% dog (and conjugations)
noun(0.35, koer).
noun(0.35, koerad).
noun(0.15, koera).
noun(0.15, koeri).

	% man
noun(0.35, mees).
noun(0.35, mehed).
noun(0.15, meest).
noun(0.15, mehi).

	% shoe
noun(0.35, king).
noun(0.35, kingad).
noun(0.15, kinga).
noun(0.15, kingi).

	% brother
noun(0.35, vend).
noun(0.35, vennad).
noun(0.15, venda).
noun(0.15, vendi).


	% to be
verb(0.06, olla).
verb(0.17, olen).
verb(0.17, oled).
verb(0.16, on).
verb(0.15, oleme).
verb(0.15, olete).
verb(0.14, on).

	% to bite
verb(0.06, hammustama).
verb(0.17, hammustan).
verb(0.17, hammustad).
verb(0.16, hammustab).
verb(0.15, hammustame).
verb(0.15, hammustate).
verb(0.14, hammustavad).

	% to go
verb(0.06, minna).
verb(0.17, lahen).
verb(0.17, lahed).
verb(0.16, laheb).
verb(0.15, laheme).
verb(0.15, lahete).
verb(0.14, lahevad).

	% to want
verb(0.06, tahta).
verb(0.17, tahan).
verb(0.17, tahad).
verb(0.16, tahab).
verb(0.15, tahame).
verb(0.15, tahate).
verb(0.14, tahavad).

	% to eat
verb(0.06, suua).
verb(0.17, soon).
verb(0.17, sood).
verb(0.16, soob).
verb(0.15, soome).
verb(0.15, soote).
verb(0.14, soovad).



% not many questions & prefer slang (no pronouns)
pr(s1, 0.05).
pr(s2, 0.4).
pr(s3, 0.1).
pr(s4, 0.45).


% prefer proper nouns
pr(n1, 0.45).
pr(n2, 0.55).


% direct objects are less likely, infinitives are outright unlikely
pr(v1, 0.55).
pr(v2, 0.1).
pr(v3, 0.35).


% define verb conjugations
pr([s2, mina, tahan], 0.45).
pr([s2, ma, tahan], 0.55).
pr([s2, sina, tahad], 0.45).
pr([s2, sa, tahad], 0.55).
pr([s2, tema, tahab], 0.4).
pr([s2, ta, tahab], 0.5).
pr([s2, see, tahab], 0.1).
pr([s2, meie, tahame], 0.45).
pr([s2, me, tahame], 0.55).
pr([s2, teie, tahate], 0.45).
pr([s2, te, tahate], 0.55).
pr([s2, nemad, tahavad], 0.45).
pr([s2, nad, tahavad], 0.55).
pr([s2, koer, tahab], 1.0).
pr([s2, mees, tahab], 1.0).
pr([s2, vend, tahab], 1.0).
pr([s2, king, tahab], 0.2).


pr([s2, mina, olen], 0.45).
pr([s2, ma, olen], 0.55).
pr([s2, sina, oled], 0.45).
pr([s2, sa, oled], 0.55).
pr([s2, tema, on], 0.4).
pr([s2, ta, on], 0.5).
pr([s2, see, on], 0.1).
pr([s2, meie, oleme], 0.45).
pr([s2, me, oleme], 0.55).
pr([s2, teie, olete], 0.45).
pr([s2, te, olete], 0.55).
pr([s2, nemad, on], 0.45).
pr([s2, nad, on], 0.55).
pr([s2, koer, on], 1.0).
pr([s2, mees, on], 1.0).
pr([s2, vend, on], 1.0).
pr([s2, king, on], 1.0).

pr([s2, mina, hammustan], 0.45).
pr([s2, ma, hammustan], 0.55).
pr([s2, sina, hammustad], 0.45).
pr([s2, sa, hammustad], 0.55).
pr([s2, tema, hammustab], 0.4).
pr([s2, ta, hammustab], 0.5).
pr([s2, see, hammustab], 0.1).
pr([s2, meie, hammustame], 0.45).
pr([s2, me, hammustame], 0.55).
pr([s2, teie, hammustate], 0.45).
pr([s2, te, hammustate], 0.55).
pr([s2, nemad, hammustavad], 0.45).
pr([s2, nad, hammustavad], 0.55).
pr([s2, koer, hammustab], 1.0).
pr([s2, mees, hammustab], 0.4).
pr([s2, vend, hammustab], 0.4).
pr([s2, king, hammustab], 0.0001).

pr([s2, mina, lahen], 0.45).
pr([s2, ma, lahen], 0.55).
pr([s2, sina, lahed], 0.45).
pr([s2, sa, lahed], 0.55).
pr([s2, tema, laheb], 0.4).
pr([s2, ta, laheb], 0.5).
pr([s2, see, laheb], 0.1).
pr([s2, meie, laheme], 0.45).
pr([s2, me, laheme], 0.55).
pr([s2, teie, lahete], 0.45).
pr([s2, te, lahete], 0.55).
pr([s2, nemad, lahevad], 0.45).
pr([s2, nad, lahevad], 0.55).
pr([s2, koer, laheb], 1.0).
pr([s2, mees, laheb], 1.0).
pr([s2, vend, laheb], 1.0).
pr([s2, king, laheb], 1.0).

pr([s2, mina, soon], 0.45).
pr([s2, ma, soon], 0.55).
pr([s2, sina, sood], 0.45).
pr([s2, sa, sood], 0.55).
pr([s2, tema, soob], 0.4).
pr([s2, ta, soob], 0.5).
pr([s2, see, soob], 0.1).
pr([s2, meie, soome], 0.45).
pr([s2, me, soome], 0.55).
pr([s2, teie, soote], 0.45).
pr([s2, te, soote], 0.55).
pr([s2, nemad, soovad], 0.45).
pr([s2, nad, soovad], 0.55).
pr([s2, koer, soob], 1.0).
pr([s2, mees, soob], 1.0).
pr([s2, vend, soob], 1.0).
pr([s2, king, soob], 0.0001).


% questions that make sense
pr([s3, kas, olen], 0.5).
pr([s3, kas, oled], 0.7).
pr([s3, kas, on], 0.9).
pr([s3, kas, oleme], 0.5).
pr([s3, kas, olete], 0.7).

pr([s3, kas, hammustan], 0.05).
pr([s3, kas, hammustab], 0.4).
pr([s3, kas, hammustad], 0.45).
pr([s3, kas, hammustame], 0.05).
pr([s3, kas, hammustate], 0.3).
pr([s3, kas, hammustavad], 0.45).

pr([s3, kas, lahen], 0.1).
pr([s3, kas, laheb], 0.4).
pr([s3, kas, lahed], 0.45).
pr([s3, kas, laheme], 0.1).
pr([s3, kas, lahete], 0.3).
pr([s3, kas, lahevad], 0.45).

pr([s3, kas, tahan], 0.15).
pr([s3, kas, tahab], 1.0).
pr([s3, kas, tahad], 0.9).
pr([s3, kas, tahame], 0.8).
pr([s3, kas, tahate], 1.0).
pr([s3, kas, tahavad], 0.9).

pr([s3, kas, soon], 0.05).
pr([s3, kas, soob], 0.5).
pr([s3, kas, sood], 0.8).
pr([s3, kas, soome], 0.2).
pr([s3, kas, soote], 0.5).
pr([s3, kas, soovad], 0.8).


pr([s3, kuidas, olen], 0.5).
pr([s3, kuidas, oled], 0.7).
pr([s3, kuidas, on], 0.9).
pr([s3, kuidas, oleme], 0.5).
pr([s3, kuidas, olete], 0.7).

pr([s3, kuidas, hammustan], 0.05).
pr([s3, kuidas, hammustab], 0.4).
pr([s3, kuidas, hammustad], 0.45).
pr([s3, kuidas, hammustame], 0.05).
pr([s3, kuidas, hammustate], 0.3).
pr([s3, kuidas, hammustavad], 0.45).

pr([s3, kuidas, lahen], 0.1).
pr([s3, kuidas, laheb], 0.4).
pr([s3, kuidas, lahed], 0.45).
pr([s3, kuidas, laheme], 0.1).
pr([s3, kuidas, lahete], 0.3).
pr([s3, kuidas, lahevad], 0.45).

pr([s3, kuidas, tahan], 0.15).
pr([s3, kuidas, tahab], 1.0).
pr([s3, kuidas, tahad], 0.9).
pr([s3, kuidas, tahame], 0.8).
pr([s3, kuidas, tahate], 1.0).
pr([s3, kuidas, tahavad], 0.9).

pr([s3, kuidas, soon], 0.05).
pr([s3, kuidas, soob], 0.5).
pr([s3, kuidas, sood], 0.8).
pr([s3, kuidas, soome], 0.2).
pr([s3, kuidas, soote], 0.5).
pr([s3, kuidas, soovad], 0.8).


pr([s3, mis, olen], 0.5).
pr([s3, mis, oled], 0.7).
pr([s3, mis, on], 0.9).
pr([s3, mis, oleme], 0.5).
pr([s3, mis, olete], 0.7).

pr([s3, mis, hammustan], 0.05).
pr([s3, mis, hammustab], 0.4).
pr([s3, mis, hammustad], 0.45).
pr([s3, mis, hammustame], 0.05).
pr([s3, mis, hammustate], 0.3).
pr([s3, mis, hammustavad], 0.45).

pr([s3, mis, lahen], 0.1).
pr([s3, mis, laheb], 0.4).
pr([s3, mis, lahed], 0.45).
pr([s3, mis, laheme], 0.1).
pr([s3, mis, lahete], 0.3).
pr([s3, mis, lahevad], 0.45).

pr([s3, mis, tahan], 0.15).
pr([s3, mis, tahab], 1.0).
pr([s3, mis, tahad], 0.9).
pr([s3, mis, tahame], 0.8).
pr([s3, mis, tahate], 1.0).
pr([s3, mis, tahavad], 0.9).

pr([s3, mis, soon], 0.05).
pr([s3, mis, soob], 0.5).
pr([s3, mis, sood], 0.8).
pr([s3, mis, soome], 0.2).
pr([s3, mis, soote], 0.5).
pr([s3, mis, soovad], 0.8).


pr([s3, kes, olen], 0.5).
pr([s3, kes, oled], 0.7).
pr([s3, kes, on], 0.9).
pr([s3, kes, oleme], 0.5).
pr([s3, kes, olete], 0.7).

pr([s3, kes, hammustan], 0.05).
pr([s3, kes, hammustab], 0.4).
pr([s3, kes, hammustad], 0.45).
pr([s3, kes, hammustame], 0.05).
pr([s3, kes, hammustate], 0.3).
pr([s3, kes, hammustavad], 0.45).

pr([s3, kes, lahen], 0.1).
pr([s3, kes, laheb], 0.4).
pr([s3, kes, lahed], 0.45).
pr([s3, kes, laheme], 0.1).
pr([s3, kes, lahete], 0.3).
pr([s3, kes, lahevad], 0.45).

pr([s3, kes, tahan], 0.15).
pr([s3, kes, tahab], 1.0).
pr([s3, kes, tahad], 0.9).
pr([s3, kes, tahame], 0.8).
pr([s3, kes, tahate], 1.0).
pr([s3, kes, tahavad], 0.9).

pr([s3, kes, soon], 0.05).
pr([s3, kes, soob], 0.5).
pr([s3, kes, sood], 0.8).
pr([s3, kes, soome], 0.2).
pr([s3, kes, soote], 0.5).
pr([s3, kes, soovad], 0.8).


pr([s3, kus, olen], 0.5).
pr([s3, kus, oled], 0.7).
pr([s3, kus, on], 0.9).
pr([s3, kus, oleme], 0.5).
pr([s3, kus, olete], 0.7).

pr([s3, kus, hammustan], 0.05).
pr([s3, kus, hammustab], 0.4).
pr([s3, kus, hammustad], 0.45).
pr([s3, kus, hammustame], 0.05).
pr([s3, kus, hammustate], 0.3).
pr([s3, kus, hammustavad], 0.45).

pr([s3, kus, lahen], 0.1).
pr([s3, kus, laheb], 0.4).
pr([s3, kus, lahed], 0.45).
pr([s3, kus, laheme], 0.1).
pr([s3, kus, lahete], 0.3).
pr([s3, kus, lahevad], 0.45).

pr([s3, kus, tahan], 0.15).
pr([s3, kus, tahab], 1.0).
pr([s3, kus, tahad], 0.9).
pr([s3, kus, tahame], 0.8).
pr([s3, kus, tahate], 1.0).
pr([s3, kus, tahavad], 0.9).

pr([s3, kus, soon], 0.05).
pr([s3, kus, soob], 0.5).
pr([s3, kus, sood], 0.8).
pr([s3, kus, soome], 0.2).
pr([s3, kus, soote], 0.5).
pr([s3, kus, soovad], 0.8).


pr([s3, millal, olen], 0.5).
pr([s3, millal, oled], 0.7).
pr([s3, millal, on], 0.9).
pr([s3, millal, oleme], 0.5).
pr([s3, millal, olete], 0.7).

pr([s3, millal, hammustan], 0.05).
pr([s3, millal, hammustab], 0.4).
pr([s3, millal, hammustad], 0.45).
pr([s3, millal, hammustame], 0.05).
pr([s3, millal, hammustate], 0.3).
pr([s3, millal, hammustavad], 0.45).

pr([s3, millal, lahen], 0.1).
pr([s3, millal, laheb], 0.4).
pr([s3, millal, lahed], 0.45).
pr([s3, millal, laheme], 0.1).
pr([s3, millal, lahete], 0.3).
pr([s3, millal, lahevad], 0.45).

pr([s3, millal, tahan], 0.15).
pr([s3, millal, tahab], 1.0).
pr([s3, millal, tahad], 0.9).
pr([s3, millal, tahame], 0.8).
pr([s3, millal, tahate], 1.0).
pr([s3, millal, tahavad], 0.9).

pr([s3, millal, soon], 0.05).
pr([s3, millal, soob], 0.5).
pr([s3, millal, sood], 0.8).
pr([s3, millal, soome], 0.2).
pr([s3, millal, soote], 0.5).
pr([s3, millal, soovad], 0.8).


% verb/infinitive phrases that make any sense
pr([v2, tahan, minna], 1.0).
pr([v2, tahad, minna], 1.0).
pr([v2, tahab, minna], 1.0).
pr([v2, tahame, minna], 1.0).
pr([v2, tahate, minna], 1.0).
pr([v2, tahavad, minna], 1.0).

pr([v2, tahan, suua], 1.0).
pr([v2, tahad, suua], 1.0).
pr([v2, tahab, suua], 1.0).
pr([v2, tahame, suua], 1.0).
pr([v2, tahate, suua], 1.0).
pr([v2, tahavad, suua], 1.0).

pr([v2, tahan, olla], 0.3).
pr([v2, tahad, olla], 0.3).
pr([v2, tahab, olla], 0.3).
pr([v2, tahame, olla], 0.3).
pr([v2, tahate, olla], 0.3).
pr([v2, tahavad, olla], 0.3).

pr([v2, tahan, hammustama], 0.05).
pr([v2, tahad, hammustama], 0.05).
pr([v2, tahab, hammustama], 0.05).
pr([v2, tahame, hammustama], 0.05).
pr([v2, tahate, hammustama], 0.05).
pr([v2, tahavad, hammustama], 0.05).

pr([v2, tahan, tahta], 0.01).
pr([v2, tahad, tahta], 0.01).
pr([v2, tahab, tahta], 0.01).
pr([v2, tahame, tahta], 0.01).
pr([v2, tahate, tahta], 0.01).
pr([v2, tahavad, tahta], 0.01).

pr([v2, hammustan, suua], 0.2).
pr([v2, hammustad, suua], 0.2).
pr([v2, hammustab, suua], 0.2).
pr([v2, hammustame, suua], 0.2).
pr([v2, hammustate, suua], 0.2).
pr([v2, hammustavad, suua], 0.2).

pr([v2, lahen, hammustama], 0.1).
pr([v2, lahed, hammustama], 0.1).
pr([v2, laheb, hammustama], 0.1).
pr([v2, laheme, hammustama], 0.1).
pr([v2, lahete, hammustama], 0.1).
pr([v2, lahevad, hammustama], 0.1).

pr([v2, lahen, suua], 0.7).
pr([v2, lahed, suua], 0.7).
pr([v2, laheb, suua], 0.7).
pr([v2, laheme, suua], 0.7).
pr([v2, lahete, suua], 0.7).
pr([v2, lahevad, suua], 0.7).


% verb/direct-object phrases that make any sense
pr([v3, olen, koera], 0.01).
pr([v3, oled, koera], 0.1).
pr([v3, on, koera], 0.7).
pr([v3, oleme, koeri], 0.05).
pr([v3, olete, koeri], 0.1).
pr([v3, on, koeri], 0.7).
pr([v3, olen, meest], 1.0).
pr([v3, oled, meest], 1.0).
pr([v3, on, meest], 1.0).
pr([v3, oleme, mehi], 1.0).
pr([v3, olete, mehi], 1.0).
pr([v3, on, mehi], 1.0).
pr([v3, olen, kinga], 0.01).
pr([v3, oled, kinga], 0.1).
pr([v3, on, kinga], 1.0).
pr([v3, oleme, kingi], 0.01).
pr([v3, olete, kingi], 0.1).
pr([v3, on, kingi], 1.0).
pr([v3, olen, venda], 1.0).
pr([v3, oled, venda], 1.0).
pr([v3, on, venda], 1.0).
pr([v3, oleme, vendi], 1.0).
pr([v3, olete, vendi], 1.0).
pr([v3, on, vendi], 1.0).


pr([v3, hammustan, koera], 0.0).
pr([v3, hammustad, koera], 0.0001).
pr([v3, hammustab, koera], 0.5).
pr([v3, hammustame, koera], 0.0).
pr([v3, hammustate, koera], 0.0001).
pr([v3, hammustavad, koera], 0.5).
pr([v3, hammustan, koeri], 0.0).
pr([v3, hammustad, koeri], 0.0001).
pr([v3, hammustab, koeri], 0.5).
pr([v3, hammustame, koeri], 0.0).
pr([v3, hammustate, koeri], 0.0001).
pr([v3, hammustavad, koeri], 0.5).
pr([v3, hammustan, meest], 0.0).
pr([v3, hammustad, meest], 0.0001).
pr([v3, hammustab, meest], 0.5).
pr([v3, hammustame, meest], 0.0).
pr([v3, hammustate, meest], 0.0001).
pr([v3, hammustavad, meest], 0.5).
pr([v3, hammustan, mehi], 0.0).
pr([v3, hammustad, mehi], 0.0001).
pr([v3, hammustab, mehi], 0.1).
pr([v3, hammustame, mehi], 0.0).
pr([v3, hammustate, mehi], 0.0001).
pr([v3, hammustavad, mehi], 0.5).
pr([v3, hammustan, kinga], 0.0).
pr([v3, hamuustad, kinga], 0.0001).
pr([v3, hamuustab, kinga], 0.5).
pr([v3, hammustame, kinga], 0.0).
pr([v3, hammustate, kinga], 0.0001).
pr([v3, hammustavad, kinga], 0.1).
pr([v3, hammustan, kingi], 0.0).
pr([v3, hamuustad, kingi], 0.0001).
pr([v3, hamuustab, kingi], 0.5).
pr([v3, hammustame, kingi], 0.0).
pr([v3, hammustate, kingi], 0.0001).
pr([v3, hammustavad, kingi], 0.5).
pr([v3, hamuustan, venda], 0.0).
pr([v3, hammustad, venda], 0.0001).
pr([v3, hammustab, venda], 0.5).
pr([v3, hammustame, venda], 0.0).
pr([v3, hammustate, venda], 0.0001).
pr([v3, hammustavad, venda], 0.5).
pr([v3, hamuustan, vendi], 0.0).
pr([v3, hammustad, vendi], 0.0001).
pr([v3, hammustab, vendi], 0.5).
pr([v3, hammustame, vendi], 0.0).
pr([v3, hammustate, vendi], 0.0001).
pr([v3, hammustavad, vendi], 0.5).


pr([v3, lahen, koera], 0.0).
pr([v3, lahed, koera], 0.0).
pr([v3, laheb, koera], 0.0).
pr([v3, laheme, koera], 0.0).
pr([v3, lahete, koera], 0.0).
pr([v3, lahevad, koera], 0.0).
pr([v3, lahen, koeri], 0.0).
pr([v3, lahed, koeri], 0.0).
pr([v3, laheb, koeri], 0.0).
pr([v3, laheme, koeri], 0.0).
pr([v3, lahete, koeri], 0.0).
pr([v3, lahevad, koeri], 0.0).
pr([v3, lahen, meest], 0.0).
pr([v3, lahed, meest], 0.0).
pr([v3, laheb, meest], 0.0).
pr([v3, laheme, meest], 0.0).
pr([v3, lahete, meest], 0.0).
pr([v3, lahevad, meest], 0.0).
pr([v3, lahen, mehi], 0.0).
pr([v3, lahed, mehi], 0.0).
pr([v3, laheb, mehi], 0.0).
pr([v3, laheme, mehi], 0.0).
pr([v3, lahete, mehi], 0.0).
pr([v3, lahevad, mehi], 0.0).
pr([v3, lahen, kinga], 0.0).
pr([v3, lahed, kinga], 0.0).
pr([v3, laheb, kinga], 0.0).
pr([v3, laheme, kinga], 0.0).
pr([v3, lahete, kinga], 0.0).
pr([v3, lahevad, kinga], 0.0).
pr([v3, lahen, kingi], 0.0).
pr([v3, lahed, kingi], 0.0).
pr([v3, laheb, kingi], 0.0).
pr([v3, laheme, kingi], 0.0).
pr([v3, lahete, kingi], 0.0).
pr([v3, lahevad, kingi], 0.0).
pr([v3, lahen, venda], 0.0).
pr([v3, lahed, venda], 0.0).
pr([v3, laheb, venda], 0.0).
pr([v3, laheme, venda], 0.0).
pr([v3, lahete, venda], 0.0).
pr([v3, lahevad, venda], 0.0).
pr([v3, lahen, vendi], 0.0).
pr([v3, lahed, vendi], 0.0).
pr([v3, laheb, vendi], 0.0).
pr([v3, laheme, vendi], 0.0).
pr([v3, lahete, vendi], 0.0).
pr([v3, lahevad, vendi], 0.0).


pr([v3, tahan, koera], 1.0).
pr([v3, tahad, koera], 1.0).
pr([v3, tahab, koera], 1.0).
pr([v3, tahame, koera], 1.0).
pr([v3, tahate, koera], 1.0).
pr([v3, tahavad, koera], 1.0).
pr([v3, tahan, koeri], 1.0).
pr([v3, tahad, koeri], 1.0).
pr([v3, tahab, koeri], 1.0).
pr([v3, tahame, koeri], 1.0).
pr([v3, tahate, koeri], 1.0).
pr([v3, tahavad, koeri], 1.0).
pr([v3, tahan, meest], 0.5).
pr([v3, tahad, meest], 0.5).
pr([v3, tahab, meest], 0.5).
pr([v3, tahame, meest], 0.01).
pr([v3, tahate, meest], 0.01).
pr([v3, tahavad, meest], 0.5).
pr([v3, tahan, mehi], 0.2).
pr([v3, tahad, mehi], 0.2).
pr([v3, tahab, mehi], 0.2).
pr([v3, tahame, mehi], 0.5).
pr([v3, tahate, mehi], 0.5).
pr([v3, tahavad, mehi], 0.5).
pr([v3, tahan, kinga], 1.0).
pr([v3, tahad, kinga], 1.0).
pr([v3, tahab, kinga], 1.0).
pr([v3, tahame, kinga], 1.0).
pr([v3, tahate, kinga], 1.0).
pr([v3, tahavad, kinga], 1.0).
pr([v3, tahan, kingi], 1.0).
pr([v3, tahad, kingi], 1.0).
pr([v3, tahab, kingi], 1.0).
pr([v3, tahame, kingi], 1.0).
pr([v3, tahate, kingi], 1.0).
pr([v3, tahavad, kingi], 1.0).
pr([v3, tahan, venda], 0.8).
pr([v3, tahad, venda], 0.8).
pr([v3, tahab, venda], 0.8).
pr([v3, tahame, venda], 0.8).
pr([v3, tahate, venda], 0.8).
pr([v3, tahavad, venda], 0.8).
pr([v3, tahan, vendi], 0.7).
pr([v3, tahad, vendi], 0.7).
pr([v3, tahab, vendi], 0.7).
pr([v3, tahame, vendi], 0.7).
pr([v3, tahate, vendi], 0.7).
pr([v3, tahavad, vendi], 0.7).


pr([v3, soon, koera], 0.0).
pr([v3, sood, koera], 0.0).
pr([v3, soob, koera], 0.0).
pr([v3, soome, koera], 0.0).
pr([v3, soote, koera], 0.0).
pr([v3, soovad, koera], 0.0).
pr([v3, soon, koeri], 0.0).
pr([v3, sood, koeri], 0.0).
pr([v3, soob, koeri], 0.0).
pr([v3, soome, koeri], 0.0).
pr([v3, soote, koeri], 0.0).
pr([v3, soovad, koeri], 0.0).
pr([v3, soon, meest], 0.0).
pr([v3, sood, meest], 0.0).
pr([v3, soob, meest], 0.0).
pr([v3, soome, meest], 0.0).
pr([v3, soote, meest], 0.0).
pr([v3, soovad, meest], 0.0).
pr([v3, soon, mehi], 0.0).
pr([v3, sood, mehi], 0.0).
pr([v3, soob, mehi], 0.0).
pr([v3, soome, mehi], 0.0).
pr([v3, soote, mehi], 0.0).
pr([v3, soovad, mehi], 0.0).
pr([v3, soon, kinga], 0.001).
pr([v3, sood, kinga], 0.001).
pr([v3, soob, kinga], 0.1).
pr([v3, soome, kinga], 0.001).
pr([v3, soote, kinga], 0.001).
pr([v3, soovad, kinga], 0.1).
pr([v3, soon, kingi], 0.001).
pr([v3, sood, kingi], 0.001).
pr([v3, soob, kingi], 0.1).
pr([v3, soome, kingi], 0.001).
pr([v3, soote, kingi], 0.001).
pr([v3, soovad, kingi], 0.01).
pr([v3, soon, venda], 0.0).
pr([v3, sood, venda], 0.0).
pr([v3, soob, venda], 0.0).
pr([v3, soome, venda], 0.0).
pr([v3, soote, venda], 0.0).
pr([v3, soovad, venda], 0.0).
pr([v3, soon, vendi], 0.0).
pr([v3, sood, vendi], 0.0).
pr([v3, soob, vendi], 0.0).
pr([v3, soome, vendi], 0.0).
pr([v3, soote, vendi], 0.0).
pr([v3, soovad, vendi], 0.0).



% Some examples:

%  Do you want to eat?
%?- utterance(Prob, [kas, sa, tahad, suua]).
%
% Prob = 3.40808e-06
%
% Yes

%  Who is it?
%?- utterance(Prob, [kes, on]).
%
% Prob = 0.000594
%
% Yes

%  The man bites the dog.
%?- utterance(Prob, [mees, hammustab, koera]).
%
% Prob = 0.00012936
%
% Yes

%  Where are you going?
%?- utterance(Prob, [kus, teie, lahete]).
%
% Prob = 5.01188e-06
%
% Yes

%  The dog eats the shoe.
%?- utterance(Prob, [koer, soob, kinga]).
%
% Prob = 6.468e-05
%
% Yes

% Man we bite they are
%?- utterance(Prob, [mees, hammustame, olevad]).
%
% No
