diff options
| author | aarne <aarne@chalmers.se> | 2012-06-10 10:43:57 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2012-06-10 10:43:57 +0000 |
| commit | 191ecc71b8b4645caf992822e18d4b506f0e55a4 (patch) | |
| tree | 2d06222dee355943b216f204d771d578d0c87e4a | |
| parent | 12b2a0d665245bf26c3cf165d9c209f29d3e357c (diff) | |
command option ma -known to drop unknown words
| -rw-r--r-- | src/compiler/GF/Command/Commands.hs | 7 | ||||
| -rw-r--r-- | src/runtime/haskell/PGF/Morphology.hs | 13 |
2 files changed, 16 insertions, 4 deletions
diff --git a/src/compiler/GF/Command/Commands.hs b/src/compiler/GF/Command/Commands.hs index 3b6e278d0..18194f340 100644 --- a/src/compiler/GF/Command/Commands.hs +++ b/src/compiler/GF/Command/Commands.hs @@ -521,6 +521,10 @@ allCommands env@(pgf, mos) = Map.fromList [ return . fromString . unwords . morphoMissing (optMorpho opts) . concatMap words . toStrings + _ | isOpt "known" opts -> + return . fromString . unwords . + morphoKnown (optMorpho opts) . + concatMap words . toStrings _ -> return . fromString . unlines . map prMorphoAnalysis . concatMap (morphos opts) . concatMap words . toStrings , @@ -528,7 +532,8 @@ allCommands env@(pgf, mos) = Map.fromList [ ("lang","the languages of analysis (comma-separated, no spaces)") ], options = [ - ("missing","show the list of unknown words in the input") + ("known", "return only the known words, in order of appearance"), + ("missing","show the list of unknown words, in order of appearance") ] }), diff --git a/src/runtime/haskell/PGF/Morphology.hs b/src/runtime/haskell/PGF/Morphology.hs index 70fa70458..2f8fdecc2 100644 --- a/src/runtime/haskell/PGF/Morphology.hs +++ b/src/runtime/haskell/PGF/Morphology.hs @@ -1,7 +1,8 @@ module PGF.Morphology(Lemma,Analysis,Morpho, buildMorpho,isInMorpho, lookupMorpho,fullFormLexicon, - morphoMissing,missingWordMsg) where + morphoMissing,morphoKnown,morphoClassify, + missingWordMsg) where import PGF.CId import PGF.Data @@ -48,8 +49,14 @@ isInMorpho (Morpho mo) s = maybe False (const True) $ Map.lookup s mo fullFormLexicon :: Morpho -> [(String,[(Lemma,Analysis)])] fullFormLexicon (Morpho mo) = Map.toList mo -morphoMissing :: Morpho -> [String] -> [String] -morphoMissing mo ws = [w | w <- ws, null (lookupMorpho mo w), notLiteral w] where +morphoMissing :: Morpho -> [String] -> [String] +morphoMissing = morphoClassify False + +morphoKnown :: Morpho -> [String] -> [String] +morphoKnown = morphoClassify True + +morphoClassify :: Bool -> Morpho -> [String] -> [String] +morphoClassify k mo ws = [w | w <- ws, k /= null (lookupMorpho mo w), notLiteral w] where notLiteral w = not (all isDigit w) ---- should be defined somewhere missingWordMsg :: Morpho -> [String] -> String |
