generating sample CharMatch challenge, CharMatch is F0.5 now

This commit is contained in:
Filip Gralinski 2017-09-05 21:36:05 +02:00 committed by Filip Gralinski
parent 72dbf33b8d
commit 54c899ddfc
4 changed files with 52 additions and 5 deletions

View File

@ -5,7 +5,7 @@ module GEval.CharMatch
import Text.EditDistance
charMatchBeta :: Double
charMatchBeta = 1.0
charMatchBeta = 0.5
getCharMatchCount :: String -> String -> String -> (Int, Int, Int)
getCharMatchCount input expected output = (correctionsDone, expectedCorrections, distanceToInput)

View File

@ -114,6 +114,33 @@ In an input file, left and right contexts (TAB-separated) are given.
In an expected file, the word to be guessed is given.
|] ++ (commonReadmeMDContents testName)
readmeMDContents CharMatch testName = [i|
GEval sample machine challenge for text transformation
======================================================
Transform from British English into American English.
This is a sample challenge for Gonito framework for CharMarch metric. Replace it with
the description of your challenge.
CharMatch is F0.5-score (precision more important than recall)
for expected corrections (i.e. changes between the input text
and the expected output).
Directory structure
-------------------
* `README.md` this file
* `config.txt` configuration file
* `train/` directory with training data
* `train/train.tsv` just some test in American English
* `dev-0/` directory with dev (test) data
* `dev-0/in.tsv` British input text for the dev set
* `dev-0/expected.tsv` American reference text for the dev set
* `${testName}` directory with test data
* `${testName}/in.tsv` British input data for the test set
* `${testName}/expected.tsv` American reference text for the test set
|]
readmeMDContents _ testName = [i|
GEval sample challenge
@ -188,6 +215,11 @@ Basia ma psa
Nie kupujemy kota w worku
Czesia ma kota
|]
trainContents CharMatch = [hereLit|Camptown ladies sing dis song, Doo-dah! doo-dah!
Camptown race-track five miles long, Oh, doo-dah day!
I come down dah wid my hat caved in, Doo-dah! doo-dah!
I go back home wid a pocket full of tin, Oh, doo-dah day!
|]
trainContents _ = [hereLit|0.06 0.39 0 0.206
1.00 1.00 1 0.017
317.8 5.20 67 0.048
@ -208,10 +240,13 @@ When the going gets tough, the tough get going.
devInContents (FMeasure _) = [hereLit|b b W 29520 779 -28 -32 a 0 0 0 0 0 0 0 0 0 0
b b W 55200 1259 35 9 a 1 0 1 0 0 0 0 0 4000 4000
|]
devInContents (LogLossHashed _) = [hereLit|Nie kupuj w worku
Ona psa
|]
devInContents CharMatch = [hereLit|honour to organise
nothing to change
time traveller
|]
devInContents _ = [hereLit|0.72 0 0.007
9.54 62 0.054
|]
@ -233,6 +268,10 @@ en
devExpectedContents (LogLossHashed _) = [hereLit|kota
ma
|]
devExpectedContents CharMatch = [hereLit|honor to organize
nothing to change
time traveler
|]
devExpectedContents _ = [hereLit|0.82
95.2
|]
@ -256,6 +295,10 @@ Kwiecień plecień, bo przeplata trochę zimy, trochę lata.
testInContents (LogLossHashed _) = [hereLit|Ala ma
Ona ma kota worku
|]
testInContents CharMatch = [hereLit|paralysed by practise
recognise
nothing
|]
testInContents _ = [hereLit|1.52 2 0.093
30.06 14 0.009
|]
@ -279,6 +322,10 @@ pl
testExpectedContents (LogLossHashed _) = [hereLit|ma
w
|]
testExpectedContents CharMatch = [hereLit|paralyzed by practice
recognize
nothing
|]
testExpectedContents _ = [hereLit|0.11
17.2
|]

View File

@ -80,7 +80,7 @@ metricReader = option auto
<> value defaultMetric
<> showDefault
<> metavar "METRIC"
<> help "Metric to be used - RMSE, MSE, Accuracy, F-measure (specify as F1, F2, F0.25, etc.), BLEU, NMI, ClippEU or LogLossHashed" )
<> help "Metric to be used - RMSE, MSE, Accuracy, F-measure (specify as F1, F2, F0.25, etc.), BLEU, NMI, ClippEU, LogLossHashed or CharMatch" )
runGEval :: [String] -> IO (Either (ParserResult GEvalOptions) (Maybe MetricValue))
runGEval args = do

View File

@ -157,11 +157,11 @@ main = hspec $ do
levenshteinDistance defaultEditCosts "źdźbło" "źdźcło" `shouldBe` 1
describe "CharMatch" $ do
it "simple test" $ do
runGEvalTest "charmatch-simple" `shouldReturnAlmost` 0.4
runGEvalTest "charmatch-simple" `shouldReturnAlmost` 0.3571428571428571
it "perfect solution" $ do
runGEvalTest "charmatch-perfect" `shouldReturnAlmost` 1.0
it "more complex test" $ do
runGEvalTest "charmatch-complex" `shouldReturnAlmost` 0.25
runGEvalTest "charmatch-complex" `shouldReturnAlmost` 0.1923076923076923
it "broken test without input" $ do
runGEvalTest "charmatch-no-input" `shouldThrow` (== NoInputFile "test/charmatch-no-input/charmatch-no-input/test-A/in.tsv")