|
@ -10,29 +10,31 @@ import Data.Char |
|
|
|
|
|
|
|
|
frequencyMap [] ngmap = ngmap |
|
|
frequencyMap [] ngmap = ngmap |
|
|
frequencyMap ((_, 0.0):ngs) ngmap = frequencyMap ngs ngmap |
|
|
frequencyMap ((_, 0.0):ngs) ngmap = frequencyMap ngs ngmap |
|
|
frequencyMap ((ng, p):ngs) ngmap = case Dm.lookup (DB.head ng) ngmap of |
|
|
frequencyMap ((ng, p):ngs) ngmap = |
|
|
Nothing -> frequencyMap ngs (Dm.insert (DB.head ng) [(ng, p)] ngmap) |
|
|
case Dm.lookup (DB.head ng) ngmap of |
|
|
Just xs -> frequencyMap ngs (Dm.insert (DB.head ng) ((ng, p) : xs) ngmap) |
|
|
Nothing -> frequencyMap ngs (Dm.insert (DB.head ng) [(ng, p)] ngmap) |
|
|
|
|
|
Just xs -> frequencyMap ngs (Dm.insert (DB.head ng) ((ng, p) : xs) ngmap) |
|
|
|
|
|
|
|
|
nextChoice k xs = case k of |
|
|
nextChoice 1 xs = DB.pack [DB.head xs] |
|
|
1 -> DB.pack [DB.head xs] |
|
|
nextChoice _ xs = DB.take (k-1) xs |
|
|
_ -> DB.take (k-1) xs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
generateText k n acc cur freqmap = |
|
|
|
|
|
do |
|
|
|
|
|
let (Just probabilities) = Dm.lookup cur freqmap |
|
|
|
|
|
choice <- MR.fromList probabilities |
|
|
|
|
|
let next = DB.last choice |
|
|
|
|
|
case n of |
|
|
|
|
|
0 -> return acc |
|
|
|
|
|
_ -> generateText k (n-1) (DB.append acc (nextChoice k choice)) next freqmap |
|
|
|
|
|
|
|
|
generateText k n acc cur freqmap = do |
|
|
gibberish n = |
|
|
let (Just probabilities) = Dm.lookup cur freqmap |
|
|
do |
|
|
choice <- MR.fromList probabilities |
|
|
js <- (DB.readFile "./quadgrams.json") |
|
|
let next = DB.last choice |
|
|
let (Just ngramPairs) = decode js :: Maybe (Dm.Map DB.ByteString Rational) |
|
|
case n of |
|
|
result <- generateText 4 n "" 116 (frequencyMap (Dm.toList ngramPairs) (Dm.singleton 0 [])) |
|
|
0 -> return acc |
|
|
return result |
|
|
_ -> generateText k (n-1) (DB.append acc (nextChoice k choice)) next freqmap |
|
|
|
|
|
|
|
|
|
|
|
gibberish n = do |
|
|
main = |
|
|
js <- (DB.readFile "./quadgrams.json") |
|
|
do |
|
|
let (Just ngramPairs) = decode js :: Maybe (Dm.Map DB.ByteString Rational) |
|
|
output <- gibberish 1550 |
|
|
result <- generateText 4 n "" 116 (frequencyMap (Dm.toList ngramPairs) (Dm.singleton 0 [])) |
|
|
DB.writeFile "./output3.txt" output |
|
|
return result |
|
|
|
|
|
|
|
|
|
|
|
main = do |
|
|
|
|
|
output <- gibberish 1550 |
|
|
|
|
|
DB.writeFile "./output3.txt" output |
|
|
|
|
|