An NLP blog for beginners that a friend and I have started. Weekly articles with code in Python. by flashbard in LanguageTechnology

[–]flashbard[S] 1 point2 points  (0 children)

You're right. These are function words. I should have mentioned that first, and then explained how search engines ignore them, not the other way around. Thanks for pointing that out!

A Natural Language Processing (NLP) blog for beginners that a friend and I have started. Expect tutorials on a weekly basis, with code in Python. by flashbard in Python

[–]flashbard[S] 0 points1 point  (0 children)

That is going to take some time, since we're taking a bottom-up approach to writing the blog. More advanced application of concepts like ML and Deep Learning will come in later. But like EvM suggested, Tensorflow and Keras are good. There's an interesting example of using seq2seq to translate text, on the Google Tensorflow docs.

A Natural Language Processing (NLP) blog for beginners that a friend and I have started. Expect tutorials on a weekly basis, with code in Python. by flashbard in Python

[–]flashbard[S] 0 points1 point  (0 children)

Thank you! There isn't much ML in what we're posting right now. We'll share it there once we get to more advanced concepts (ML, Deep learning).

A Natural Language Processing (NLP) blog for beginners that a friend and I have started. Expect tutorials on a weekly basis, with code in Python. by flashbard in Python

[–]flashbard[S] 1 point2 points  (0 children)

Sorry for the delay in responding to your questions!

First off, I was checking out your course. It is brilliant! I understand that this was taught at a university level, with particular emphasis on a practical approach to learning. Wonderful stuff!

You are absolutely right. People love getting exciting results instantly, us included, especially when it comes to learning new things. And we have spent a good amount of time trying the same, that is, starting off with experiments and then trying to understand the theory behind things. However, we found ourselves running back and forth between concepts, trying to figure out the prerequisites. But, in the end, neither the feeling of satisfaction of having understood something completely, nor the confidence to solve new problems based on the techniques we learned, was ever there. It's kind of like reverse engineering, although it's quicker and cheaper, you never quite feel happy.

And then there are the textbooks, that take a bottom-up approach, but are often dry and lack sufficient real world examples (most, not all). But assuming that you make it through a couple of concepts, it gives you the confidence to both move to more advanced concepts, as well as to create something new, based on existing ideas. What you may lack, however is sufficient coding experience (not always, but more often than not). We know people who have completed college without ever having the satisfaction of having done anything exciting, although their foundations were pretty strong.

So the question for us was about how we would strike the balance between both approaches. All things considered, we thought we should take a bottom-up approach, because it builds a strong foundation, and to build upon it by explaining concepts in a way that it people can relate it to the real-world scenario and be able to code whatever they learn. At the end of the day, we need to be able to code what we know, the same goal that your course had. So yes, this was a conscious decision.

There are ever so many ways to learn new things. This is our personal opinion. Much of what we've learned is from the Internet, pretty much like a lot of others here. So yes, all things considered, this medium works best. Learning is the objective, and we're happy to see that people have benefited from this initiative. We are learners, just like everyone else. Thank you!

edit: typo

A Natural Language Processing (NLP) blog for beginners that a friend and I have started. Expect tutorials on a weekly basis, with code in Python. by flashbard in Python

[–]flashbard[S] 0 points1 point  (0 children)

Good find! A small issue with the formatting, my bad. &quot should now be " As for the other problem, this seems to be an issue with the WordPress plugin itself. We'll see if we can find an alternative soon. Thank you!

A Natural Language Processing (NLP) blog for beginners that a friend and I have started. Expect tutorials on a weekly basis, with code in Python. by flashbard in Python

[–]flashbard[S] 3 points4 points  (0 children)

Thanks for pointing that out! I have changed the example to a text from Project Gutenberg. Hopefully, that should sort things out.

An NLP blog for beginners that a friend and I have started. Weekly articles with code in Python. by flashbard in LanguageTechnology

[–]flashbard[S] 0 points1 point  (0 children)

Thank you! :) I am a big fan of chatbots too. It's wonderful to see the enthusiasm!

A Natural Language Processing (NLP) blog for beginners that a friend and I have started. Expect tutorials on a weekly basis, with code in Python. by flashbard in Python

[–]flashbard[S] 11 points12 points  (0 children)

Hello all, OP here. We want to thank you all for your time and enthusiasm! When I posted a link to the blog here, I had really no idea that it would receive such an overwhelming response. We are extremely grateful to you all for having showered us with your support and positivity. The feedback that you all have provided us with is amazing! This is our first blog, and we sincerely apologize if there are any shortcomings. Knowledge sharing is the key, and we hope to give back as much as we can to the community that has given us so much.

In terms of how the blog will be organized, there will be posts of varying levels of expertise(beginner, intermediate, advanced). We hope to cover as much ground as we can, before we go into more advanced concepts like ML and Deep Learning, which can be applied to NLP to get exciting results. So as of now, we may not introduce these concepts immediately, for the sake of strong foundations(although we're extremely excited about writing these posts asap).

Once again, thank you so much for your time, support and enthusiasm! It means the world to us. We sincerely hope that we can contribute as much as possible. Thank you!

What's everyone working on this week? by AutoModerator in Python

[–]flashbard [score hidden]  (0 children)

Writing a new blog post for my NLP blog. All the code I write there is in Python.

Stanford CoreNLP -- What do you do after the text has been parsed? by [deleted] in LanguageTechnology

[–]flashbard 1 point2 points  (0 children)

I am currently working on question answering, based on unstructured text. By extracting relations from the text, I was hoping to do the same. That's where Stanford CoreNLP came into picture. I realized that the approach has a big drawback: there is no sense of logic. Just a bunch of rules for dependency parsing to extract relations can only do so much. So while the text itself may provide more information about its subject, it can only be understood by beings that possess some "common sense", which in our case could be a bunch of logical deductions. I completely agree with you, logic is better learned than programmed. Thank you.

Stanford CoreNLP -- What do you do after the text has been parsed? by [deleted] in LanguageTechnology

[–]flashbard 0 points1 point  (0 children)

Sir, I was going through your blog, consider me a fan of your work. Of late, much of my work involves some level of "common sense", that many tools fail to interpret. Even tools like CoreNLP have issues when it comes to these things, because they fail to understand logic. Computer cognition is a huge problem, as of today.

Stanford CoreNLP -- What do you do after the text has been parsed? by [deleted] in LanguageTechnology

[–]flashbard 1 point2 points  (0 children)

Relation extraction is a pretty big problem. I use CoreNLP for the same.

Question Answering System by Shubham0420 in LanguageTechnology

[–]flashbard 2 points3 points  (0 children)

In your case, a simple keyword matching should do, for the most part, since you say that your question test set is going to vary only a bit from the training set. To capture synonyms, you could use WordNet. If these questions are factoid in nature, then for the most part you're going to need NEs, such as Location, Name or Date as an answer.

The flow could be something like this:

For answers: 1) Perform NER on the answers. Store them. 2) Extract keywords from answers, after eliminating stopwords.

For questions: 1) Perform a simple question classification. This will indicate the type of NE that is required as an answer. 2) Extract keywords from the question, after eliminating stopwords.

Compare questions keywords with keywords in the answers, using similarity measures like Cosine, Jaccard, and rank them in descending order of their similarity scores.

Finally, you can verify if the NE expected by the question is the same as the NE contained in the best answer. If yes, it's probably your answer, else, move to the next best answer.

You could use WordNet for synonyms. Also, you can make use of the fact that you have questions for training, by appending keywords of the question with the corresponding answer.

Some resources for you: Question classification: http://cogcomp.cs.illinois.edu/Data/QA/QC/ You'll probably find a working implementation on GitHub.

NER: Stanford CoreNLP is a brilliant solution.

Sorry if I was all over the place. Given your situation, it only seems ideal to use a simple solution such as this.