Answers.Body: <p>This is a tricky issue. I assume you are using transition probabilities to pick the next suitable word, so you could use some other corpus data, derive probabilities from it, and compare  those to your system. Not very satisfactory, though, as you might end up evaluating the system in a circular way, deriving your test data in the same way as you generate your output.</p>
  
  <p>A better, if somewhat more laborious evaluation would be to present the trigger sequence to human beings (on a fairly large scale), and then measure the overlap between your system and the human choices. Of course, with <em>the</em> you will get a very large set of possible replies, but <em>the round yellow</em> would be a lot more restricted (and it would make more sense to include that kind of sequence in an evaluation anyway).</p>
  
  <p>The figure you will get might be quite small (depending on the range of possible options), but that is to be expected, so your system could score well even with a small overlap only. That's how I would approach this problem.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2018-12-06T10:03:55.080Z
Answers.LastActivityDate: 2018-12-06T10:03:55.080Z
Answers.UserDisplayName: Oliver Mason
Answers.Body: <p>Human evaluation is the gold standard as stated in <a href="https://nlphighlights.allennlp.org/120_evaluation_of_text_generation_with_asli_celikyilmaz" rel="nofollow noreferrer">this podcast</a> by Asli Celikyilmaz, even if you only test a very small part of the generated text.</p>
  <p>You needed an automated method and this one: <a href="https://ai.googleblog.com/2020/05/evaluating-natural-language-generation.html" rel="nofollow noreferrer">BLEURT by Google</a> would be helpful. It's a flexible, semantic-level metric/model trained in a multi-stage way: 1) masked language model like BERT; 2) pre-training on synthetic sentence pairs; 3) fine-turning on public human ratings(WMT metrics shared task); 4) fine-tuning on application-specific human ratings. And it applies very well even in the presence of domain drift.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2021-01-16T07:49:58.453Z
Answers.LastActivityDate: 2021-01-16T07:49:58.453Z
Answers.UserDisplayName: Lerner Zhang
Body: <p>I am preparing to perform research comparing the performance of two different systems that probabilistically generate the next word of an input sentence.</p>
  
  <p>For example, given the word 'the', a system might output 'car', or any other word. Given the input 'the round yellow', a system might output 'sun', or it might output something that doesn't make sense.</p>
  
  <p>My question is, how can I quantitatively evaluate the performance of the two different systems performing this task? Of course if I tested each system manually I could qualitatively determine how often each system responded in a way that makes sense, and compare how often each system responds correctly, but I'd really like a meaningful quantitative method of evaluation that I could preferably automate.</p>
  
  <p>Precision and recall don't seem like they would work here, seeing as for each given input there are many potentially acceptable outputs. Any suggestions?</p>
  
Tags: <natural-language-processing><software-evaluation><data-science>
Title: How can I evaluate the performance of a system that generates text?
UserDisplayName: Christian Westbrook
ThreadText: # How can I evaluate the performance of a system that generates text?
  
  (Asked by: username_0 on 2018-12-06)
  
  I am preparing to perform research comparing the performance of two different systems that probabilistically generate the next word of an input sentence.
  
  For example, given the word 'the', a system might output 'car', or any other word. Given the input 'the round yellow', a system might output 'sun', or it might output something that doesn't make sense.
  
  My question is, how can I quantitatively evaluate the performance of the two different systems performing this task? Of course if I tested each system manually I could qualitatively determine how often each system responded in a way that makes sense, and compare how often each system responds correctly, but I'd really like a meaningful quantitative method of evaluation that I could preferably automate.
  
  Precision and recall don't seem like they would work here, seeing as for each given input there are many potentially acceptable outputs. Any suggestions?
  
  **Tags:** natural-language-processing, software-evaluation, data-science
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2018-12-06. Score: 1
  
  This is a tricky issue. I assume you are using transition probabilities to pick the next suitable word, so you could use some other corpus data, derive probabilities from it, and compare those to your system. Not very satisfactory, though, as you might end up evaluating the system in a circular way, deriving your test data in the same way as you generate your output.
  
  A better, if somewhat more laborious evaluation would be to present the trigger sequence to human beings (on a fairly large scale), and then measure the overlap between your system and the human choices. Of course, with *the* you will get a very large set of possible replies, but *the round yellow* would be a lot more restricted (and it would make more sense to include that kind of sequence in an evaluation anyway).
  
  The figure you will get might be quite small (depending on the range of possible options), but that is to be expected, so your system could score well even with a small overlap only. That's how I would approach this problem.
  
  
  ---
  
  ### Answer by username_2 on 2021-01-16. Score: 1
  
  Human evaluation is the gold standard as stated in [this podcast](https://nlphighlights.allennlp.org/120_evaluation_of_text_generation_with_asli_celikyilmaz) by Asli Celikyilmaz, even if you only test a very small part of the generated text.
  
  You needed an automated method and this one: [BLEURT by Google](https://ai.googleblog.com/2020/05/evaluating-natural-language-generation.html) would be helpful. It's a flexible, semantic-level metric/model trained in a multi-stage way: 1) masked language model like BERT; 2) pre-training on synthetic sentence pairs; 3) fine-turning on public human ratings(WMT metrics shared task); 4) fine-tuning on application-specific human ratings. And it applies very well even in the presence of domain drift.
  
  
  ---
  
  