def getOptions(self,recent_words):
        aggregate = {}
        for v in self.voices:
            voice = self.voices[v]
            if self.voiceWeights!=0:
                contribution = voice.weighContexts(voice.activeD,recent_words)
                for w in contribution:
                    if w in aggregate:
                        aggregate[w][0] += contribution[w] * self.voiceWeights[v]
                        aggregate[w][1][v] = contribution[w] * self.voiceWeights[v]
                    else:
                        aggregate[w] = [0,{}]
                        aggregate[w][0] += contribution[w] * self.voiceWeights[v]
                        aggregate[w][1][v] = contribution[w] * self.voiceWeights[v]
                    # express the sources as proportions
                    if self.proportional_src:
                        for v in aggregate[w][1]:
                            aggregate[w][1][v] = aggregate[w][1][v]/sum(aggregate[w][1].values())

        toReturn = []
        for w in aggregate:
            toReturn.append([w,aggregate[w][0],aggregate[w][1]])

        ranked = sorted(toReturn, key=operator.itemgetter(1))
        optionList = list(reversed(ranked))[0:self.num_opts]            # returns as much of the top of the list as specified by num_opts
        self.options = optionList
        return optionList


    # returns a list of options of length num_opts
dataset/ETHPy150Open jbrew/pt-voicebox/vbox.py/Voicebox.getOptions/original