code: def _sentiment(self, distance=True):
      
      sum_pos = 0
      sum_neg = 0
      text = self.parent
      entity_positions = range(self.start, self.end)
      non_entity_positions = set(range(len(text.words))).difference(entity_positions)
      if not distance:
        non_entity_polarities = np.array([text.words[i].polarity for i in non_entity_positions])
        sum_pos = sum(non_entity_polarities == 1)
        sum_neg = sum(non_entity_polarities == -1)
      else:
        polarities = np.array([w.polarity for w in text.words])
        polarized_positions = np.argwhere(polarities != 0)[0]
        polarized_non_entity_positions = non_entity_positions.intersection(polarized_positions)
        sentence_len = len(text.words)
        for i in polarized_non_entity_positions:
          min_dist = min(abs(self.start - i), abs(self.end - i))
          if text.words[i].polarity == 1:
            sum_pos += 1.0 - (min_dist - 1.0) / (2.0 * sentence_len)
          else:
            sum_neg += 1.0 - (min_dist - 1.0) / (2.0 *sentence_len)
      return (sum_pos, sum_neg)
docs: Calculates the sentiment of an entity as it appears in text.