public MultiClassChunkEvalStats(IIndex <string> dataLabelIndex, string negLabel) : base(dataLabelIndex, negLabel) { chunker = new LabeledChunkIdentifier(); chunker.SetNegLabel(negLabel); }
public MultiClassChunkEvalStats(IClassifier <string, F> classifier, GeneralDataset <string, F> data, string negLabel) : base(classifier, data, negLabel) { chunker = new LabeledChunkIdentifier(); chunker.SetNegLabel(negLabel); }
public MultiClassChunkEvalStats(string negLabel) : base(negLabel) { chunker = new LabeledChunkIdentifier(); chunker.SetNegLabel(negLabel); }
protected internal virtual void AddGuess(LabeledChunkIdentifier.LabelTagType guess, LabeledChunkIdentifier.LabelTagType correct, bool addUnknownLabels) { if (addUnknownLabels) { if (labelIndex == null) { labelIndex = new HashIndex <string>(); } labelIndex.Add(GetTypeLabel(guess)); labelIndex.Add(GetTypeLabel(correct)); } if (inCorrect) { bool prevCorrectEnded = LabeledChunkIdentifier.IsEndOfChunk(prevCorrect, correct); bool prevGuessEnded = LabeledChunkIdentifier.IsEndOfChunk(prevGuess, guess); if (prevCorrectEnded && prevGuessEnded && prevGuess.TypeMatches(prevCorrect)) { inCorrect = false; correctGuesses.IncrementCount(GetTypeLabel(prevCorrect)); } else { if (prevCorrectEnded != prevGuessEnded || !guess.TypeMatches(correct)) { inCorrect = false; } } } bool correctStarted = LabeledChunkIdentifier.IsStartOfChunk(prevCorrect, correct); bool guessStarted = LabeledChunkIdentifier.IsStartOfChunk(prevGuess, guess); if (correctStarted && guessStarted && guess.TypeMatches(correct)) { inCorrect = true; } if (correctStarted) { foundCorrect.IncrementCount(GetTypeLabel(correct)); } if (guessStarted) { foundGuessed.IncrementCount(GetTypeLabel(guess)); } if (chunker.IsIgnoreProvidedTag()) { if (guess.TypeMatches(correct)) { tokensCorrect++; } } else { if (guess.label.Equals(correct.label)) { tokensCorrect++; } } tokensCount++; prevGuess = guess; prevCorrect = correct; }