<p>One of Deep Learning based solution would be to use <a href="http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/" rel="nofollow">word embeddings</a> (which ideally should represent a word by a fixed dimensional vector such that similar words lie close in that embedding space and even vector operations like <code>Germany - Berlin ~= Italy - Rome</code> may hold), two famous word embeddings techniques are <a href="https://code.google.com/archive/p/word2vec/" rel="nofollow">Word2Vec</a> and <a href="http://www.aclweb.org/anthology/D14-1162" rel="nofollow">Glove</a>, another option is to represent a sentence by a fixed dimensional vector such that similar sentence lie close in that embedding space, check <a href="https://arxiv.org/abs/1506.06726" rel="nofollow">Skip-Thought vectors</a>. Until now we have only tried to represent text (words/sentences) in a more semantic numerical way, next step is to capture the meaning of the current context (paragraphs, documents), a very naive approach would be to just average word/sentence embeddings (you have to try this to see if it works or not), better way would be to use some kind of sequence model like <a href="http://karpathy.github.io/2015/05/21/rnn-effectiveness/" rel="nofollow">RNN</a> (actually <a href="http://colah.github.io/posts/2015-08-Understanding-LSTMs/" rel="nofollow">LSTM</a> or <a href="https://arxiv.org/pdf/1412.3555v1.pdf" rel="nofollow">GRU</a>) to capture whatever has been said before. The problem in using sequence models is that it will need supervision (you should have a labelled data, but if you don't have it which I guess is the case), then just use sequence models in a <a href="https://en.wikipedia.org/wiki/Language_model" rel="nofollow">language modelling</a> setting and get the hidden representation of RNN/GRU/LSTM at last time step i.e after reading the last word or the aggregated word embeddings if you are using the naive approach. Once you have the hidden representation you may apply any clustering technique to cluster different paragraphs (you have to find the appropriate <a href="https://en.wikipedia.org/wiki/Metric_(mathematics)" rel="nofollow">distance metric</a>) or you can manually apply some distance metric and define or learn a threshold for similar paragraphs to be categorized as one.</p>
Differentiate between sentences that have the same meaning but use different word combinations
<p>I am trying to learn Natural Language Processing and an stuck with an open ended question. How do I club together sentences that mean the same. There  can be a finite set of sentences that have the same meaning. What kind of algorithms do I use to club them?</p>

<p>For example: Consider the following sentences:</p>

<pre><code>There is a man. There is a lion. The lion will chase the man on seeing him. If the lion catches the man he dies.

There is a man and a lion. If the lion catches the man he dies. The lion will chase the man if he sees him.

You have a lion that chases men on seeing them. There is one man. If the lion catches the man he dies.
</code></pre>

<p>Basically what all these sentences say is this:</p>

<pre><code> 1 Lion. 1 Man. Lions chase men. If lion catches men the man dies.
</code></pre>

<p>I am unable to zero in on one category of Machine Learning or Deep Learning algorithm that would help me achieve something similar. Please guide me in the right direction or point me to some algorithms that are good enough to achieve this.</p>

<p>Another important factor is having a scale-able solution. There could be lots of such sentences out there. What happens then?</p>

<p>One possible solutions is:
Use the parts of speech and the relations between words in a sentence as features for some Machine Leaning algo. But will this be practical in a large set of sentences? Do we need to consider more things?</p>