7 ms·
State-of-the-art text classification with universal language models
- jph00 8y agoJeremy here (co-author of this paper). Let me know if you have any questions!
- woliveirajr 8y agoPortuguese (specifically, Brazilian Portuguese) isn't being studied yet ?
- jph00 8y agoDoesn't look like it. Hope to see someone take it up!
- groovybits 8y agoIs this the same classification project that was presented at this past Bsides NoVA?
- jph00 8y agoNo I don't know what that is
- derdude 8y agoHey Jeremy, thanks for sharing this awesome article! Do you think this is also applicable to classify 1. readability and 2. entertainment/fun of a text? Thanks!
- jph00 8y agoYes I think it would work great for both of those applications. For readability, you'd ideally want a dataset showing how long someone took to read each document. For entertainment, some kind of review dataset would be fine (it's basically a type of sentiment analysis, which we've already tested on 3 datasets.)
- juliango 8y agoDoes the (future) sequence labeling project refers to Part Of Speech tagging?
- jph00 8y agoThat would certainly be one of them.
- Abundnce10 8y agoThis method dramatically improves over previous approaches to text classification, and the code and pre-trained models allow anyone to leverage this new approach to better solve problems such as: Finding documents relevant to a legal case; Identifying spam, bots, and offensive comments; Classifying positive and negative reviews of a product; Grouping articles by political orientation; I'm starting a new project where I'm given many recipes and I need to take in a free form text of recipe ingredients (e.g. "1/2 cup diced onions", "two potatoes, cut into 1-inch cubes", etc.) and build a program that identifies the ingredient (e.g. onion, potato), as well as the quantity (e.g. 0.5 cup, 2.0 units). Could I use something like Fast.ai to tackle this problem?
- jph00 8y agoI'm not sure - what you're describing is information extraction. I haven't tried that yet, but I'm certainly interested in doing so (especially for medical data).
- state_less 8y agoSimilarly, could something like this be useful to extract out a command that a user wants to run from a transcription? For example, "Add a user named Jenny to our client list.", which results in the command, 'create user Jenny'. Or, "Could you add Jenny to our client list?", which results in the same command, 'create user Jenny'. Perhaps instead of outputting the next word, output the expected command from a set of commands?
- timClicks 8y agoIf you have sufficient labelled data, conditional random fields works well for this kind of problem. A technical team from NY Times have a great piece on it https://open.blogs.nytimes.com/2015/04/09/extracting-structured-data-from-recipes-using-conditional-random-fields/ https://open.blogs.nytimes.com/2015/04/09/extracting-structu...
- ioot17 8y agoCRF works quite well, it's actually what I utilize right now to approach recipe parsing on https://cookalo.com/ https://cookalo.com/. It's based on CRFsuite with Python bindings for data training on already labeled recipes. If you build your own app and want to do some comparison, feel free to run some benchmarks against it.
- Eridrus 8y agoWhen I think of state of the art in this area, I think of the Deep Contextualized Word Vectors/ELMo paper from Peters et al, which you cite, but you don't have any comparisons to. The only point of reference between the two papers I see is the CoVe models, which you guys beat pretty handily, but the ELMo model also beats the CoVe model handily, just on different datasets, so not clear how they stack up. Any chance you could do some more direct comparisons? You do say that it's a more complex architecture, and the tokenized char convolution stuff is a bit of a pain to do, but if that actually helps, it's not that bad to do once. From an engineering perspective, not changing the LM weights is kind of nice because then you can train multiple separate models on top of the embeddings without needing to retrain everything (and deal with the associated "noise" when retraining models) and it gives some nice modularity. It would be nice to know how much of the performance is lost from having embeddings that can be shared across a lot of tasks. Random note: it seems like in Table 7, you have bolded "Freez + discr + stlr" in the IMDb column which has a value of 5.00, whereas "Full + discr" has a value of 4.57, and so should probably be the bolded number.
- jph00 8y agoVery interesting comments. Yes absolutely want to do comparisons to ELMo. It's a little tricky to do so on our datasets, since ELMo isn't really a complete method on its own, but more an addendum to existing methods. In the future we hope to do seq2seq and sequence labeling studies, and we can then ensure we pick datasets that the ELMo paper covered. Using char tokens can definitely be helpful, as can sub-words. It's something we've been working on too, and hope to show results of this in the future. I mainly disagree with your view of end-to-end training. In computer vision we pretty much gave up on trying to re-use hyper-columns without fine-tuning, because the fine-tuning just helps so much. It's really no trouble doing the fine-tuning - in fact the consistency of using a single model form across so many different datasets is really convenient and helpful for doing additional levels of transfer learning. Thanks for the note about table 7 - it's actually an error (it should be 5.57, not 4.57; Sebastian is in the process of uploading a corrected version).
- madisonmay 8y ago
- deleted 8y ago[deleted]
- timClicks 8y agoHi Jeremy (& Sebastian of course), this is an amazing contribution to the state of the art! I haven't read things in depth, but am curious - how do these models cope with out of vocabulary terms?
- madisonmay 8y agoInitially embeddings of OOV terms are initialized to mean embeddings, and then the language model fine-tuning step allows the model to adjust these values. See [18] here: https://github.com/fastai/fastai/blob/master/courses/dl2/imdb.ipynb https://github.com/fastai/fastai/blob/master/courses/dl2/imd....
- web64 8y agoI'm looking forward to testing this out! I noticed the "NLP classification page" links are broken. I assume they should go to: http://nlp.fast.ai/category/classification.html http://nlp.fast.ai/category/classification.html
- jph00 8y agoOops - forgot the leading '/'. Fixed now. Many thanks for letting us know.
- amarsharma 8y agoAlso, clicking on "Universal Language Model Fine-tuning for Text Classification" sends me to https://arxiv.org/ https://arxiv.org/ not to the paper.
- jph00 8y agoD'oh! Many thanks - fixed that one too.
- dreaminvm 8y agoLink to paper for those that are curious: https://arxiv.org/abs/1801.06146 https://arxiv.org/abs/1801.06146
- jph00 8y agoThe post mentions that there's work ongoing to make this available in languages other than English. If you'd like to help contribute a language, there's a discussion thread available with 20 languages under development so far - we'd love to have more folks join us: http://forums.fast.ai/t/language-model-zoo-gorilla/14623 http://forums.fast.ai/t/language-model-zoo-gorilla/14623
- deleted 8y ago[deleted]
- jfaucett 8y agoMan that video at the bottom is great. I just finished up research on an image classification task in medical imaging and that tool would have helped out a lot in debugging and interpreting results - especially when you're working on image datasets of objects which you aren't very used to (like medical datasets where different tissue textures are important and only medical experts can distinguish between them).
- beders 8y agoI've yet to see data this is beating a SVM on a 4-character shingle approach (which also doesn't require tons of data to train).
- jph00 8y agoIt beats it easily. See the paper and citations for comparison
- gargarplex 8y agoIs there an easily accessible API? And is this robust to bad labels - imperfect training data? I have a huge corpus of labeled descriptions for jobs and I want to categorize them as 'programming' or 'not programming'. The accuracy of my manual labeling is like 95%. Can that be used to train a classifier using this newly published technology?
- bitL 8y agoFantastic! Thanks for sharing this! Can't wait to get inspiration from the paper to my work! ;-)
- pixelHD 8y agoI'm glad we're again concentrating on newer language models. Curious how it'll perform compared to fasttext when used as encoding network in larger tasks. I can't help but notice the trend of going back to simpler models with smarter optimizations and regularization to achieve better results. This is a frequent question of mine, which I ask to everyone using RNNs - what do you think of the idea that CNNs will be able to replace RNNs for sequence tasks [0]? CNNs are less computationally expensive too, so there's a definite benefit of switching to them if the performance is on par. [0]: https://twitter.com/lmthang/status/989261575482560513 https://twitter.com/lmthang/status/989261575482560513
- jph00 8y agofasttext is just an encoding of the first layer of a model (the word embeddings - or subword embeddings). Full multi-layer pre-trained models are able to do a lot more. For instance, on IMDb sentiment our method is about twice as accurate as fasttext. As to whether CNNs can replace RNNs in general, the jury is still out. Over the last couple of years there have been some sequence tasks where CNNs are state of the art, some where RNNs are. Note that with stuff like QRNNs the assumption that CNNs are less computationally expensive is no longer necessarily true: https://github.com/salesforce/pytorch-qrnn https://github.com/salesforce/pytorch-qrnn I'd be surprised if for tasks that require long-term state (like sentiment analysis on large docs) whether CNNs will win out in the end, since RNNs are specifically designed to be stateful - especially with the addition of an attention layer.
- pixelHD 8y agoJust remembered I already asked you about the CNNs, my bad! Oh wow, didn't realize that these were multi-layer pre-trained models. Also, started going through the QRNNs, they mention they've updated the AWD-LSTM Language model to use QRNNs, which is what your paper uses!
- Radim 8y agoFor instance, on IMDb sentiment our method is about twice as accurate as fasttext. Seeing as fasttext accuracy is 90%+, does this mean your method achieves 180%? I'm nitpicking of course, but lately I've seen claims like "20% improvement in accuracy", where on closer inspection, the authors mean error rate dropped from 5% to 4%. Which is not bad of course, but in the grand of scheme of things, 1% absolute improvement may not be such game-changer, especially if it comes at the cost of other relevant metrics like model complexity, developer sanity or performance. (haven't read your paper yet, just a general sigh/rant)
- eddotman 8y agoWow - great paper! Very readable / accessible. I'm working on some stuff for NLP in materials science academic literature, but we haven't tried anything beyond the usual word embedding -> supervised classifier approach. I'll have to give this a try!
- ramanan 8y agoI understand that you do mention the pre-training / transfer learning approach clearly, but isn't it disingenuous to claim that you provide better performance based on (only) 100 labeled examples, when the pre-training dataset (Wikitext-103) actually contains 103M words?
- jph00 8y agoOf course not. The use of pre-training on a large unlabeled corpus and subsequent fine-tuning is what the paper is about. It is stated repeatedly in the paper and the post. It is totally correct and in no way misleading to say we need only 100 labeled examples. Anyone can get similar results on their own datasets without even needing to train their own wikitext model, since we've made the pre-trained model available. (BTW, I see you work at a company that sells something that claims to "categorize SKUs to a standard taxonomy using neural networks." This seems like something you maybe could have mentioned.)
- ramanan 8y agoGot it. I was looking for input on how generalizable (the ability of weights to change/adapt) when the training labeled data is 100x smaller than the initial pre-training dataset? Also, I don't understand the need to be so defensive though and the relevance between my employer and my post?
- JPKab 8y agoWhen you use the word disingenuous, you invited the response you got. Totally uncalled for to write that. His response on your employer was likely driven by an assumption that you viewed this as free, open source competition to your product, and thus the negative comment. To the OP:. I've find a lot of NLP, and this is phenomenal work.
- ozcoder56 8y agoHi Jeremy, I noticed you were active on the Kaggle toxic comments challenge though did not participate. Did you apply this model to that problem and if so, how were the results?
- saulberardo 8y agoJeremy, after a quick first reading, I believe the following can be improved in the paper: 1. In the introduction, there seem to be contradictory statements about the status of Inductive Transfer for NLP. It is first stated that it "has had a large impact in practice", then in the next paragraph it is stated that "it has been unsuccessful for NLP". How is it possible, having a large impact and at the same time being unsuccessful? 2. In the introduction, it is stated that "Research in NLP focused mostly on transductive transfer". Perhaps this statement were valid back in 2007, but it seems to me outdated. Recently most transfer learning in NLP are related to using pre-trained embeddings in a inductive transfer setting. 3. In the beginning of the "2 Related Work" section, in the excerpt "Features in deep neural networks in CV have been observed to transition from task-specific to general from the first to the last layer", I believe the order "first to the last" should read "last to the first", since the last layers have the more task-specific features and the first layers have the more general.