summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraarne <aarne@chalmers.se>2012-06-10 10:43:57 +0000
committeraarne <aarne@chalmers.se>2012-06-10 10:43:57 +0000
commit191ecc71b8b4645caf992822e18d4b506f0e55a4 (patch)
tree2d06222dee355943b216f204d771d578d0c87e4a
parent12b2a0d665245bf26c3cf165d9c209f29d3e357c (diff)
command option ma -known to drop unknown words
-rw-r--r--src/compiler/GF/Command/Commands.hs7
-rw-r--r--src/runtime/haskell/PGF/Morphology.hs13
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