showing most worsening features

This commit is contained in:
Filip Gralinski 2018-08-06 22:22:33 +02:00
parent 3f3d1fd287
commit c385710719
3 changed files with 26 additions and 2 deletions

View File

@ -213,7 +213,10 @@ getExpectedDirectory :: GEvalSpecification -> FilePath
getExpectedDirectory spec = fromMaybe outDirectory $ gesExpectedDirectory spec
where outDirectory = gesOutDirectory spec
data GEvalSpecialCommand = Init | LineByLine | WorstFeatures | Diff FilePath | PrintVersion
data GEvalSpecialCommand = Init
| LineByLine | WorstFeatures
| Diff FilePath | MostWorseningFeatures FilePath
| PrintVersion
data ResultOrdering = KeepTheOriginalOrder | FirstTheWorst | FirstTheBest

View File

@ -12,6 +12,7 @@ module GEval.LineByLine
runWorstFeatures,
runLineByLineGeneralized,
runDiff,
runMostWorseningFeatures,
runDiffGeneralized,
LineRecord(..),
ResultOrdering(..)
@ -212,6 +213,17 @@ runDiff ordering otherOut spec = runDiffGeneralized ordering otherOut spec consu
formatScoreDiff :: Double -> Text
formatScoreDiff = Data.Text.pack . printf "%f"
runMostWorseningFeatures :: ResultOrdering -> FilePath -> GEvalSpecification -> IO ()
runMostWorseningFeatures ordering otherOut spec = runDiffGeneralized ordering' otherOut spec consum
where ordering' = forceSomeOrdering ordering
consum :: ConduitT (LineRecord, LineRecord) Void (ResourceT IO) ()
consum = CC.map prepareFakeLineRecord
.| (worstFeaturesPipeline spec)
prepareFakeLineRecord :: (LineRecord, LineRecord) -> LineRecord
prepareFakeLineRecord (LineRecord _ _ _ _ scorePrev, LineRecord inp exp out c score) =
LineRecord inp exp out c (score - scorePrev)
runDiffGeneralized :: ResultOrdering -> FilePath -> GEvalSpecification -> ConduitT (LineRecord, LineRecord) Void (ResourceT IO) a -> IO a
runDiffGeneralized ordering otherOut spec consum = do
(inputSource, expectedSource, outSource) <- checkAndGetFilesSingleOut True spec

View File

@ -55,7 +55,13 @@ optionsParser = GEvalOptions
( long "diff"
<> short 'd'
<> metavar "OTHER-OUT"
<> help "compare results")))
<> help "compare results"))
<|>
(MostWorseningFeatures <$> strOption
( long "most-worsening-features"
<> short 'm'
<> help "Print a ranking of the \"most worsening\" features, i.e. features that worsen the score the most when comparing outputs from two systems.")))
<*> ((flag' FirstTheWorst
(long "sort"
<> short 's'
@ -205,6 +211,9 @@ runGEval''' (Just WorstFeatures) ordering spec = do
runGEval''' (Just (Diff otherOut)) ordering spec = do
runDiff ordering otherOut spec
return Nothing
runGEval''' (Just (MostWorseningFeatures otherOut)) ordering spec = do
runMostWorseningFeatures ordering otherOut spec
return Nothing
initChallenge :: GEvalSpecification -> IO ()
initChallenge spec = case gesExpectedDirectory spec of