title: ReversibleField fails when using spacy custom tokenizer
body: <h2>ReversibleField works well without spacy</h2>
  <p>When using <code>tokenize=None</code> in the <code>ReversibleField</code>, everything works fine</p>
  <pre class="lang-py prettyprint-override"><code>from torchtext.datasets import Multi30k
  from torchtext.data import Field, BucketIterator, ReversibleField
  import spacy
  
  SRC = ReversibleField(tokenize=None,
              init_token = '&lt;sos&gt;', 
              eos_token = '&lt;eos&gt;', 
              lower = True,
              batch_first= True)
  
  TRG = ReversibleField(tokenize=None,
              init_token = '&lt;sos&gt;', 
              eos_token = '&lt;eos&gt;', 
              lower = True,
              batch_first= True)
  train_data, valid_data, test_data = Multi30k.splits(exts = ('.de', '.en'), 
                                                      fields = (SRC, TRG))
  SRC.build_vocab(train_data, min_freq = 2)
  TRG.build_vocab(train_data, min_freq = 2)
  
  device = 'cuda:2'
  
  BATCH_SIZE = 3
  
  train_iterator, valid_iterator, test_iterator = BucketIterator.splits(
      (train_data, valid_data, test_data), 
      batch_size = BATCH_SIZE, 
      device = device)
  
  batch = next(iter(train_iterator))
  TRG.reverse(batch.trg)
  
  output&gt;&gt;&gt;
  ['a group of kids playing with tires.',
   'seven construction workers working on a building.',
   'a man is performing with fire sticks before a crowd outside.']
  </code></pre>
  <h2>ReversibleField fails when using spacy</h2>
  <p>However, when I try to use spacy as my tokenizer, it gives me a long chunk of string that doesn't make sense to me.</p>
  <pre class="lang-py prettyprint-override"><code>spacy_de = spacy.load('de')
  spacy_en = spacy.load('en')
  
  def tokenize_de(text):
      &quot;&quot;&quot;
      Tokenizes German text from a string into a list of strings (tokens) and reverses it
      &quot;&quot;&quot;
      return [tok.text for tok in spacy_de.tokenizer(text)][::-1]
  
  def tokenize_en(text):
      &quot;&quot;&quot;
      Tokenizes English text from a string into a list of strings (tokens)
      &quot;&quot;&quot;
      return [tok.text for tok in spacy_en.tokenizer(text)]
  
  SRC = ReversibleField(tokenize = tokenize_de, 
              init_token = '&lt;sos&gt;', 
              eos_token = '&lt;eos&gt;', 
              lower = True,
              batch_first= True)
  
  TRG = ReversibleField(tokenize = tokenize_en, 
              init_token = '&lt;sos&gt;', 
              eos_token = '&lt;eos&gt;', 
              lower = True,
              batch_first= True)
  
  train_data, valid_data, test_data = Multi30k.splits(exts = ('.de', '.en'), 
                                                      fields = (SRC, TRG))
  
  SRC.build_vocab(train_data, min_freq = 2)
  TRG.build_vocab(train_data, min_freq = 2)
  
  train_iterator, valid_iterator, test_iterator = BucketIterator.splits(
      (train_data, valid_data, test_data), 
      batch_size = BATCH_SIZE, 
      device = device)
  
  batch = next(iter(train_iterator))
  TRG.reverse(batch.trg)
  
  output &gt;&gt;&gt;
  ['agroupofkidsplayingwithtires.',
   'sevenconstructionworkersworkingonabuilding.',
   'amanisperformingwithfiresticksbeforeacrowdoutside.']
  </code></pre>
  <p>What is wrong here? How to convert tokens back to strings correctly when using spacy?</p>