I don't know. I haven't really done NLP before. My guess is that it would be slower, but not by a significant amount. It might be more accurate, so I could give it a shot.
I don't think 2-gram bayes uses any NLP at all. To my understanding, it's just like naive bayes, but can use word combinations to improve accuracy. In terms of complexity, bayes classification is not much more than O(N).
I was also at Leeds Hack Day. I didn't know you were working on this until the presentations but I wrote a language detection library for Ruby some time back: https://github.com/peterc/whatlanguage
It uses a slightly weird technique, though. Dictionary based and using a bloom filter for memory efficiency. Going forward, though, I plan to rewrite it to use a combination of n-grams and language "fingerprints."
That's pretty cool! One of my friends suggested to use dictionaries and bloom filters but I've wanted to build probabilistic language models.
Do you have any accuracy stats? I'm guessing my approach might work better in some cases because the models include frequency information too. Did you experience significant accuracy loss when adding new languages? Anyway, I'll run it over my test data and compare.
...and these are my results: http://imgur.com/9U6II.png
I've only kept English, French and German for WhatLanguage. It looks like the Markov chains approach is indeed more accurate for shorter phrases but the dictionary approach gets slightly better for longer sentences.
No, but as you have noted, the method has the intrinsic property of being less accurate with fewer words and more accurate the longer the text. As my anticipated use was for documents over 10-20 words, this was OK. I expect the other techniques I outlined that I'm switching to to yield more accurate results across the board.
15 comments
[ 3.5 ms ] story [ 43.6 ms ] threadhttp://imgur.com/LH2Hi.png
How does this work? You claim it has "zero language knowledge," so how does it classify? Did it start out with nothing, and then train it on a corpus?
EDIT: nevermind, found your slides (http://polyglossy.com/presentation.pdf [pdf]) How big of a corpus did you use?
It uses a slightly weird technique, though. Dictionary based and using a bloom filter for memory efficiency. Going forward, though, I plan to rewrite it to use a combination of n-grams and language "fingerprints."
Do you have any accuracy stats? I'm guessing my approach might work better in some cases because the models include frequency information too. Did you experience significant accuracy loss when adding new languages? Anyway, I'll run it over my test data and compare.
No, but as you have noted, the method has the intrinsic property of being less accurate with fewer words and more accurate the longer the text. As my anticipated use was for documents over 10-20 words, this was OK. I expect the other techniques I outlined that I'm switching to to yield more accurate results across the board.