Esempio n. 1
0
 public MultiClassChunkEvalStats(IIndex <string> dataLabelIndex, string negLabel)
     : base(dataLabelIndex, negLabel)
 {
     chunker = new LabeledChunkIdentifier();
     chunker.SetNegLabel(negLabel);
 }
Esempio n. 2
0
 public MultiClassChunkEvalStats(IClassifier <string, F> classifier, GeneralDataset <string, F> data, string negLabel)
     : base(classifier, data, negLabel)
 {
     chunker = new LabeledChunkIdentifier();
     chunker.SetNegLabel(negLabel);
 }
Esempio n. 3
0
 public MultiClassChunkEvalStats(string negLabel)
     : base(negLabel)
 {
     chunker = new LabeledChunkIdentifier();
     chunker.SetNegLabel(negLabel);
 }
Esempio n. 4
0
        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;
        }