text: Title: [Good First Issue] Add test cases for Truncated Gumbel
  Body: Well, [Gumbel Distribution](https://numpy.org/doc/stable/reference/random/generated/numpy.random.gumbel.html) is *magical*. Basically, given a sequence of K logits, i.e., "\log a_1, \log a_2, ..., \log a_K" and K **independent** gumbel random variables, i.e., "g_1, g_2, ..., g_K". We have
  ```
  \argmax_i \log a_i + g_i ~ Categorical({a_i / sum(a)})
  ```
  
  This gives you a very simple way to sample from categorical distribution:
  - Just draw a bunch of gumble variables with the same shape as the input logits. You may do that with `np.random.gumble()` as implemented in the source code: 
  https://github.com/dmlc/gluon-nlp/blob/32e87d4d4aa20a6eb658ee90d765ccffbd160571/src/gluonnlp/op.py#L187
  - Add the gumbels to the logits
  - Perform an argmax on the correct axis (i.e., the one that you will need to enumerate the classes).
  
  Now, let's understand the meaning of *TruncatedGumbel*. The definition is that you need to sample from a distribution that has the same cumulative density function as Gumbel, but is **truncated** at the given threshold \tau, meaning that it will never exceed \tau.
  
  Here, we implement the TruncatedGumbel via the inverse CDF technique, which is also used in [A* sampling](https://papers.nips.cc/paper/5449-a-sampling.pdf) (See footnote 1 on Page 3):
  https://github.com/dmlc/gluon-nlp/blob/32e87d4d4aa20a6eb658ee90d765ccffbd160571/src/gluonnlp/op.py#L200-L228
  
  The question is **how would you verify that the implementation is correct?** Basically, it relates to how you may conduct statistical testing and the author of this piece of codes has not implemented the test case well  (he's not sure about how to do it well...):
  https://github.com/dmlc/gluon-nlp/blob/32e87d4d4aa20a6eb658ee90d765ccffbd160571/tests/test_op.py#L106-L113
  
  We will need your help and this will be a great contribution to GluonNLP!
  
  Just FYI @xidulu @aashiqmuhamed  @GomuGomuGo @liangliannie
  