diff options
| author | aarne <aarne@chalmers.se> | 2010-02-01 09:56:58 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2010-02-01 09:56:58 +0000 |
| commit | 510d511637775a1e70809fd5b1e40bc623dd421b (patch) | |
| tree | 7514eb96f7e06d20a4dd9e6afeaafd596fa1adf2 /src/compiler/GF/Quiz.hs | |
| parent | 563e65c30949d415dd6124c9b188256c328a461a (diff) | |
commands mq and tq can take a tree with metas to guide generation
Diffstat (limited to 'src/compiler/GF/Quiz.hs')
| -rw-r--r-- | src/compiler/GF/Quiz.hs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/compiler/GF/Quiz.hs b/src/compiler/GF/Quiz.hs index 6a1e5aae5..9a3540645 100644 --- a/src/compiler/GF/Quiz.hs +++ b/src/compiler/GF/Quiz.hs @@ -24,9 +24,9 @@ import GF.Data.Operations import GF.Infra.UseIO import GF.Infra.Option import GF.Text.Coding +import PGF.Probabilistic import System.Random - import Data.List (nub) -- translation and morphology quiz. AR 10/5/2000 -- 12/4/2002 @@ -39,18 +39,22 @@ mkQuiz cod msg tts = do teachDialogue qas msg translationList :: + Maybe Expr -> Maybe Probabilities -> PGF -> Language -> Language -> Type -> Int -> IO [(String,[String])] -translationList pgf ig og typ number = do - ts <- generateRandom pgf typ >>= return . take number +translationList mex mprobs pgf ig og typ number = do + gen <- newStdGen + let ts = take number $ generateRandomFrom mex mprobs gen pgf typ return $ map mkOne $ ts where mkOne t = (norml (linearize pgf ig t), map (norml . linearize pgf og) (homonyms t)) homonyms = nub . parse pgf ig typ . linearize pgf ig -morphologyList :: PGF -> Language -> Type -> Int -> IO [(String,[String])] -morphologyList pgf ig typ number = do - ts <- generateRandom pgf typ >>= return . take (max 1 number) +morphologyList :: + Maybe Expr -> Maybe Probabilities -> + PGF -> Language -> Type -> Int -> IO [(String,[String])] +morphologyList mex mprobs pgf ig typ number = do gen <- newStdGen + let ts = take (max 1 number) $ generateRandomFrom mex mprobs gen pgf typ let ss = map (tabularLinearizes pgf ig) ts let size = length (head (head ss)) let forms = take number $ randomRs (0,size-1) gen |
