void ComputeEmissionProbsForDoc(_Doc d) {
      for (int i = 0; i < d.getSenetenceSize(); i++) {
        _Stn stn = d.getSentence(i);
        Arrays.fill(emission[i], 0);

        int start = 0, end = this.number_of_topics;
        if (i == 0 && d.getSourceType() == 2) { // first sentence is specially handled for newEgg
          // get the sentiment label of the first sentence
          int sentimentLabel = stn.getSentenceSenitmentLabel();
          if (sentimentLabel == 0) { // positive sentiment in the first half					
            end = this.number_of_topics / 2;
            for (int k = end; k < this.number_of_topics; k++)
              emission[i][k] = Double.NEGATIVE_INFINITY;
          } else if (sentimentLabel == 1) { // negative sentiment in the second half
            start = this.number_of_topics / 2;
            for (int k = 0; k < start; k++) emission[i][k] = Double.NEGATIVE_INFINITY;
          }
        }

        for (int k = start; k < end; k++) {
          for (_SparseFeature w : stn.getFv()) {
            emission[i][k] +=
                w.getValue() * topic_term_probabilty[k][w.getIndex()]; // all in log-space
          }
        }
      }
    }