{
  "id": 10772,
  "title": "Midway thoughts",
  "url": "/competitions/billion-word-imputation/discussion/10772",
  "author_name": "",
  "post_date": "2014-10-28T17:42:04.987Z",
  "votes": 3,
  "comment_count": 7,
  "views": 4091,
  "content": "<p>I've worked on this problem for a couple months now, and it's been a blast. Thanks for organizing it! My primary motivation is to get hands on experience with recent research in language processing, while have a fair benchmark to evaluate&nbsp;&nbsp;progress.&nbsp;</p>\n<p>At the moment, I'm using a feedforward neural network to identify the missing word location, with about 55% success rate and a recurrent neural network language model to predict the missing word with about 50% success rate. Frankly, having a language model that, given a missing word location, gets half the sentences right exceeds my wildest initial expectations.</p>\n<p>The combined success rate is only about 25%, because the models are largely independent. Given the way scoring works, I only submit about 16% of the phrases, and only get 11% of the words rate, based on a crude grid search. All this for a score of &quot;5.02&quot;.&nbsp;While I'm having a lot of fun on the coding / experimentation side, I find it very difficult to relate my progress to either published results or other competitors:</p>\n<p>* The score is an aggregation of the hole model, the language model and the aggregation scheme. I can't tell which model works well and which one needs improvement.</p>\n<p>* The problem is designed such that comparison with published research is hard. Most published research uses just a language model, and uses either perplexity or, more rarely, word error rate. I could not find a single paper&nbsp;that deals with finding the location where to insert a missing word.</p>\n<p>* Perplexity comparison is a dead end, because the contest encourages considering the full pre/post context for each word, while published research I found is concerned only with the pre context. For the record, I get perplexity of 11.2, which is so low that I suspect a bug somewhere.</p>\n<p>* The evaluation code is not open source. It would be super nice to have the source of the evaluation code public, so I could run it on my cross-validation data set, instead of using crufty approximations and/or spending precious time trying to replicate it.</p>\n<p>I hope that the numbers I made public above will make easier for other competitors to evaluate their approach and/or progress on different aspects of the problem.</p>\n<p>Regards.</p>",
  "messages": [
    {
      "id": "56914",
      "postDate": "10/28/2014 17:42:04",
      "content": "<p>I've worked on this problem for a couple months now, and it's been a blast. Thanks for organizing it! My primary motivation is to get hands on experience with recent research in language processing, while have a fair benchmark to evaluate&nbsp;&nbsp;progress.&nbsp;</p>\n<p>At the moment, I'm using a feedforward neural network to identify the missing word location, with about 55% success rate and a recurrent neural network language model to predict the missing word with about 50% success rate. Frankly, having a language model that, given a missing word location, gets half the sentences right exceeds my wildest initial expectations.</p>\n<p>The combined success rate is only about 25%, because the models are largely independent. Given the way scoring works, I only submit about 16% of the phrases, and only get 11% of the words rate, based on a crude grid search. All this for a score of &quot;5.02&quot;.&nbsp;While I'm having a lot of fun on the coding / experimentation side, I find it very difficult to relate my progress to either published results or other competitors:</p>\n<p>* The score is an aggregation of the hole model, the language model and the aggregation scheme. I can't tell which model works well and which one needs improvement.</p>\n<p>* The problem is designed such that comparison with published research is hard. Most published research uses just a language model, and uses either perplexity or, more rarely, word error rate. I could not find a single paper&nbsp;that deals with finding the location where to insert a missing word.</p>\n<p>* Perplexity comparison is a dead end, because the contest encourages considering the full pre/post context for each word, while published research I found is concerned only with the pre context. For the record, I get perplexity of 11.2, which is so low that I suspect a bug somewhere.</p>\n<p>* The evaluation code is not open source. It would be super nice to have the source of the evaluation code public, so I could run it on my cross-validation data set, instead of using crufty approximations and/or spending precious time trying to replicate it.</p>\n<p>I hope that the numbers I made public above will make easier for other competitors to evaluate their approach and/or progress on different aspects of the problem.</p>\n<p>Regards.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "56998",
      "postDate": "10/29/2014 16:29:15",
      "content": "<p>Podragu, thanks for sharing. &nbsp;I'm also having a lot of fun with this problem &amp; have a few thoughts to share.&nbsp;</p>\n<p>First,&nbsp;I like&nbsp;the longer-than-average duration of this contest. It certainly gives plenty of time to mull over the problem &amp; try multiple approaches. &nbsp;</p>\n<p>Second, I know some people are trying neural-nets for this, though FYI, I've been been using a simpler approach using simple statistics over n-grams. I identify a good insertion point about 58% of the time&nbsp;(compared to podragu's 55% above using NN). &nbsp;There's probably&nbsp;only so much you can extract from the dataset, regardless of the method, due to the ambiguities of language, etc. &nbsp;</p>\n<p>Also, one&nbsp;of the biggest challenges &nbsp;has been writing (and rewriting!) code to make it efficient. &nbsp;I'm limited to a single machine &amp; this task seems hungry for both time &amp; memory. &nbsp;</p>\n<p>[quote=podragu;56914]...I could not find a single paper&nbsp;that deals with finding the location where to insert a missing word.[/quote]</p>\n<p>True,&nbsp;this task doesn't match up well with the existing literature, but maybe this means that this is an area ready for some new research! Given the distinct clusters of&nbsp;scores on the leaderboard, I suspect there are distinct groups of approaches people are using, so it'll be interesting to compare approaches&nbsp;when it's all over. &nbsp;</p>\n<p>[quote=podragu;56914]* The evaluation code is not open source. It would be super nice to have the source of the evaluation code public, so I could run it on my cross-validation data set, instead of using crufty approximations and/or spending precious time trying to replicate it.[/quote]</p>\n<p>I'm not sure what you mean -- do you mean the Levenshtein distance metric? (If so, Google <em>&quot;edit distance in {your-programming-language-of-choice}&quot; </em>to find a library, or look at something like&nbsp;<a href=\"http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance\">this</a>.)</p>\n<p>Thanks &amp; good luck everyone.&nbsp;</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57007",
      "postDate": "10/29/2014 18:32:43",
      "content": "<p>I'm also taking an n-gram based approach.</p>\n<p>Here's one little trick that may be helpful to some. &nbsp;If you can identify the position of the missing word (with some confidence), but not the word itself, generate an output sentence with a space inserted at the missing position. &nbsp;Your edit distance will improve assuming you guessed the position correctly.</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57921",
      "postDate": "11/12/2014 16:12:44",
      "content": "<p>Interesting...</p>\n<p>Two questions about this:</p>\n<p>1) What's the syntax to add a space?</p>\n<p>2) If the Levenshtein distance uses the same penalty for deletion and substitution, why would the score improve</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57922",
      "postDate": "11/12/2014 16:31:39",
      "content": "<p>Oops... my mistake...</p>\n<p>I guess I misunderstood the metric...</p>\n<p>A &quot;regular&quot; edit distance would just give a distance of 1.0 when you remove one word - so where is this 5.5 coming from?</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57935",
      "postDate": "11/12/2014 17:52:34",
      "content": "<p>The&nbsp;<a href=\"http://en.wikipedia.org/wiki/Levenshtein_distance\">Levenshtein&nbsp;distance</a>&nbsp;is&nbsp;the minimum number of single-<em>character</em> edits (i.e. insertions, deletions or substitutions) required to change one sentence&nbsp;into the other. &nbsp;So if you take a sentence and randomly delete a 4 character word &amp; the space after it, the &quot;distance&quot; to the original sentence&nbsp;4+1=5 &nbsp;(not 1). &nbsp;</p>\n<p>Next,&nbsp;the evaluation metric for this contest is <em>average</em> distance across <em>multiple&nbsp;</em>sentences. Since word lengths differ, you can get a non-integer average distance (e.g. 5.5).&nbsp;</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "57939",
      "postDate": "11/12/2014 19:01:39",
      "content": "<p>Thanks!</p>",
      "rawMarkdown": "",
      "votes": null
    },
    {
      "id": "63318",
      "postDate": "01/29/2015 18:29:20",
      "content": "<p>Hello All<br>This is Sahithya from India<br>I'm pursuing engineering in Information Science<br>I'm planning to work on this project since it seems very interesting<br>I'm very new to language modelling , and I very badly want to learn and make a very good project, definitely not for this competition.<br>would anyone guide me do so?</p>\n<p>do notify</p>\n<p>sahitya.mj@gmail.com</p>",
      "rawMarkdown": "",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 56998,
      "author_name": "chefele",
      "author_url": "",
      "post_date": "10/29/2014 16:29:15",
      "content": "<p>Podragu, thanks for sharing. &nbsp;I'm also having a lot of fun with this problem &amp; have a few thoughts to share.&nbsp;</p>\n<p>First,&nbsp;I like&nbsp;the longer-than-average duration of this contest. It certainly gives plenty of time to mull over the problem &amp; try multiple approaches. &nbsp;</p>\n<p>Second, I know some people are trying neural-nets for this, though FYI, I've been been using a simpler approach using simple statistics over n-grams. I identify a good insertion point about 58% of the time&nbsp;(compared to podragu's 55% above using NN). &nbsp;There's probably&nbsp;only so much you can extract from the dataset, regardless of the method, due to the ambiguities of language, etc. &nbsp;</p>\n<p>Also, one&nbsp;of the biggest challenges &nbsp;has been writing (and rewriting!) code to make it efficient. &nbsp;I'm limited to a single machine &amp; this task seems hungry for both time &amp; memory. &nbsp;</p>\n<p>[quote=podragu;56914]...I could not find a single paper&nbsp;that deals with finding the location where to insert a missing word.[/quote]</p>\n<p>True,&nbsp;this task doesn't match up well with the existing literature, but maybe this means that this is an area ready for some new research! Given the distinct clusters of&nbsp;scores on the leaderboard, I suspect there are distinct groups of approaches people are using, so it'll be interesting to compare approaches&nbsp;when it's all over. &nbsp;</p>\n<p>[quote=podragu;56914]* The evaluation code is not open source. It would be super nice to have the source of the evaluation code public, so I could run it on my cross-validation data set, instead of using crufty approximations and/or spending precious time trying to replicate it.[/quote]</p>\n<p>I'm not sure what you mean -- do you mean the Levenshtein distance metric? (If so, Google <em>&quot;edit distance in {your-programming-language-of-choice}&quot; </em>to find a library, or look at something like&nbsp;<a href=\"http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance\">this</a>.)</p>\n<p>Thanks &amp; good luck everyone.&nbsp;</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57007,
      "author_name": "onemillionmonkeys",
      "author_url": "",
      "post_date": "10/29/2014 18:32:43",
      "content": "<p>I'm also taking an n-gram based approach.</p>\n<p>Here's one little trick that may be helpful to some. &nbsp;If you can identify the position of the missing word (with some confidence), but not the word itself, generate an output sentence with a space inserted at the missing position. &nbsp;Your edit distance will improve assuming you guessed the position correctly.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57921,
      "author_name": "meron1",
      "author_url": "",
      "post_date": "11/12/2014 16:12:44",
      "content": "<p>Interesting...</p>\n<p>Two questions about this:</p>\n<p>1) What's the syntax to add a space?</p>\n<p>2) If the Levenshtein distance uses the same penalty for deletion and substitution, why would the score improve</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57922,
      "author_name": "meron1",
      "author_url": "",
      "post_date": "11/12/2014 16:31:39",
      "content": "<p>Oops... my mistake...</p>\n<p>I guess I misunderstood the metric...</p>\n<p>A &quot;regular&quot; edit distance would just give a distance of 1.0 when you remove one word - so where is this 5.5 coming from?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57935,
      "author_name": "chefele",
      "author_url": "",
      "post_date": "11/12/2014 17:52:34",
      "content": "<p>The&nbsp;<a href=\"http://en.wikipedia.org/wiki/Levenshtein_distance\">Levenshtein&nbsp;distance</a>&nbsp;is&nbsp;the minimum number of single-<em>character</em> edits (i.e. insertions, deletions or substitutions) required to change one sentence&nbsp;into the other. &nbsp;So if you take a sentence and randomly delete a 4 character word &amp; the space after it, the &quot;distance&quot; to the original sentence&nbsp;4+1=5 &nbsp;(not 1). &nbsp;</p>\n<p>Next,&nbsp;the evaluation metric for this contest is <em>average</em> distance across <em>multiple&nbsp;</em>sentences. Since word lengths differ, you can get a non-integer average distance (e.g. 5.5).&nbsp;</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 57939,
      "author_name": "meron1",
      "author_url": "",
      "post_date": "11/12/2014 19:01:39",
      "content": "<p>Thanks!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 63318,
      "author_name": "sahityama",
      "author_url": "",
      "post_date": "01/29/2015 18:29:20",
      "content": "<p>Hello All<br>This is Sahithya from India<br>I'm pursuing engineering in Information Science<br>I'm planning to work on this project since it seems very interesting<br>I'm very new to language modelling , and I very badly want to learn and make a very good project, definitely not for this competition.<br>would anyone guide me do so?</p>\n<p>do notify</p>\n<p>sahitya.mj@gmail.com</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "56914": "",
    "56998": "",
    "57007": "",
    "57921": "",
    "57922": "",
    "57935": "",
    "57939": "",
    "63318": ""
  },
  "source": "meta"
}