4 ms·
I think it's probably a bad strategy to try to be the "NLP guy" to potential employers. You'd do much better off being a software engineer on a project with peo
by syllogism 8y ago
I think it's probably a bad strategy to try to be the "NLP guy" to potential employers. You'd do much better off being a software engineer on a project with people with ML or NLP expertise.
NLP projects fail a lot. If you line up a job as a company's first NLP person, you'll probably be setting yourself up for failure. You'll get handed an idea that can't work, you won't know enough about how to push back to change it into something that might, etc. After the project fails, you might get a chance to fail at a second one, but maybe not a third. This isn't a great way to move into any new field.
I think a cunning plan would be to angle to be the person who "productionises" models. Tonnes of data scientists these days are surprisingly light on programming skills, and they expect to hand off a notebook to someone who'll "make it work". I think that sort of role would position you well to take over the actual modelling as well.
As a bit of background, I'm the lead author of spaCy, a popular NLP library. I'd like to stress that spaCy's definitely just one part of a solution --- nothing is a "make NLP go now" button. I do think you'll need to know machine learning to have really successful NLP projects. Another thing you might want to check out is our annotation tool Prodigy: https://prodi.gy https://prodi.gy . This is especially good for experimenting, as you really need to annotate data to get anything done.
- tinyhouse 8y agoThis is a great advice. I can relate to your second paragraph a lot. Not only that some startups have NLP ideas that can't work, often those ideas have very little impact on the product, especially in the early days, and you slowly understand that the main reason for that idea is to have a more attractive pitch.
- ragona 8y agoIf I can briefly gush, I'm just a huge fan of spaCy. I spent a lot of time back in the day cobbling things together with NLTK, and my more recent projects with spaCy feel like cheating -- they come together so nicely. Thanks for building such a great library!
- AlexCoventry 8y ago> NLP projects fail a lot. Has having seen a lot of NLP projects given you any insight into prerequisites for success?
- syllogism 8y agoYeah I've been giving talks about this: https://www.youtube.com/watch?v=jpWqz85F_4Y https://www.youtube.com/watch?v=jpWqz85F_4Y The biggest problem I see people having is they don't realise that defining a consistent annotation scheme takes a lot of work. If you don't define your problem well, you won't be able to collect consistent annotations, and your model will always perform poorly. You need an annotation scheme that "carves reality at the joints". There will always be boundary cases, but some ways of dividing things up are just bad. For instance, if you want to collect opinions about bands you like on social media, you don't want to have an NER category "BANDS_I_LIKE". That's just dumb: detect bands to handle ambiguities, run the classifier over lots of text, get a frequency list, and then mark the ones you like. Another example. Let's say you were looking for suspicious activity in some dataset like the Panama papers. You might have a bunch of indicators for suspicious activity, like companies that change name a lot, or the same director on companies from very different industries. A lot of people have gotten the message that they should make their models as direct and end-to-end as possible, so they might try to label emails as "INDICATES_SUSPICIOUS_ACTIVITY". This label is unlikely to be the easiest way to do things. For one thing, it's bad to have one category that applies to a bunch of disjunct sets. If you've got a single label for "A or B", you won't have a linear decision boundary. Linearly separable problems are much easier to learn. Another problem here is that the decision you're trying to make rests on tonnes of world knowledge. The business goals would be much better met by learning some simple text annotations like NER, a few simple text categories etc, and using a rule-based approach to stitch things together. Basically, don't just work on having more powerful solutions. Make sure you've tried hard to have easier problems as well --- that part tends to be higher leverage.
- deleted 8y ago[deleted]
- starchild_3001 8y agoReally good thoughts here. It definitely pays off to have a versatile skill set ranging from theory, to model building, all the way to writing & owning the production code. If you lack skills in one area, develop it & become an expert, don't be the guy who only does Python/R/matlab etc. People with full spectrum skill set tend to be in more influential (and better paid) positions.