docs: def get_raw_counts(self):
          """Determines counts for unique words, repetitions, etc using the raw text response.
  
          Adds the following measures to the self.measures dictionary:
              - COUNT_total_words: count of words (i.e. utterances with semantic content) spoken
                  by the subject. Filled pauses, silences, coughs, breaths, words by the interviewer,
                  etc. are all excluded from this count.
              - COUNT_permissible_words: Number of words spoken by the subject that qualify as a
                  valid response according to the clustering criteria. Compound words are counted
                  as a single word in SEMANTIC clustering, but as two words in PHONETIC clustering.
                  This is implemented by tokenizing SEMANTIC clustering responses in the __init__
                  method before calling the current method.
              - COUNT_exact_repetitions: Number of words which repeat words spoken earlier in the
                  response. Responses in SEMANTIC clustering are lemmatized before this function is
                  called, so slight variations (dog, dogs) may be counted as exact responses.
              - COUNT_stem_repetitions: Number of words stems identical to words uttered earlier in
                  the response, according to the Porter Stemmer.  For example, 'sled' and 'sledding'
                  have the same stem ('sled'), and 'sledding' would be counted as a stem repetition.
              - COUNT_examiner_words: Number of words uttered by the examiner. These start
                  with "E_" in .TextGrid files.
              - COUNT_filled_pauses: Number of filled pauses uttered by the subject. These begin
                  with "FILLEDPAUSE_" in the .TextGrid file.
              - COUNT_word_fragments: Number of word fragments uttered by the subject. These
                  end with "-" in the .TextGrid file.
              - COUNT_asides: Words spoken by the subject that do not adhere to the test criteria are
                  counted as asides, i.e. words that do not start with the appropriate letter or that
                  do not represent an animal.
              - COUNT_unique_permissible_words: Number of works spoken by the subject, less asides,
                  stem repetitions and exact repetitions.
          """
  
          #for making the table at the end
          words = []
          labels = []
          words_said = set()
  
          # Words like "polar_bear" as one semantically but two phonetically
          # Uncategorizable words are counted as asides
          for unit in self.parsed_response:
              word = unit.text
              test = False
              if self.type == "PHONETIC":
                  test = (word.startswith(self.letter) and
                          "T_" not in word and "E_" not in word and "!" not in word and # Weed out tags
                          "FILLEDPAUSE_" not in word and # Weed out filled pauses
                          not word.endswith('-') and # Weed out false starts
                          word.lower() in self.english_words)  #weed out non-words
              elif self.type == "SEMANTIC":
                  #automatically weed out all non-semantically-appropriate responses
                  test = (word in self.permissible_words)
  
              if test:
                  self.measures['COUNT_total_words'] += 1
                  self.measures['COUNT_permissible_words'] += 1
                  if any(word == w for w in words_said):
                      self.measures['COUNT_exact_repetitions'] += 1
                      labels.append('EXACT REPETITION')
                  elif any(stemmer.stem(word) == stemmer.stem(w) for w in words_said):
                      self.measures['COUNT_stem_repetitions'] += 1
                      labels.append('STEM REPETITION')
                  else:
                      labels.append('PERMISSIBLE WORD')
                  words_said.add(word)
                  words.append(word)
              elif word.lower().startswith('e_'):
                  self.measures['COUNT_examiner_words'] += 1
                  words.append(word)
                  labels.append('EXAMINER WORD')
              elif word.endswith('-'):
                  self.measures['COUNT_word_fragments'] += 1
                  words.append(word)
                  labels.append('WORD FRAGMENT')
              elif word.lower().startswith('filledpause'):
                  self.measures['COUNT_filled_pauses'] += 1
                  words.append(word)
                  labels.append('FILLED PAUSE')
              elif word.lower() not in ['!sil', 't_noise', 't_cough', 't_lipsmack', 't_breath']:
                  self.measures['COUNT_total_words'] += 1
                  self.measures['COUNT_asides'] += 1
                  words.append(word)
                  labels.append('ASIDE')
  
          if not self.quiet:
              print
              print "Labels:"
              print_table([(word,label) for word,label in zip(words,labels)])
  
          self.measures['COUNT_unique_permissible_words'] = \
              self.measures['COUNT_permissible_words'] - \
              self.measures['COUNT_exact_repetitions'] - \
              self.measures['COUNT_stem_repetitions']
  
          if not self.quiet:
              print
              print "Counts:"
              collection_measures = [x for x in self.measures if x.startswith("COUNT_")]
              collection_measures.sort()
              if not self.quiet:
                  print_table([(k, str(self.measures[k])) for k in collection_measures])