コード例 #1
0
 def form_valid(self, form, time_elapsed=None):
     meaning = Meaning.objects.get(pk=form.cleaned_data['item'])
     word_use = WordUse(meaning=meaning)
     word_use.value = form.cleaned_data['use']
     word_use.informer = self.request.user.as_informer()
     word_use.interface = self.interface
     word_use.elapsed_time = time_elapsed
     word_use.save()
     return super(WordUseRun, self).form_valid(form=None)
コード例 #2
0
ファイル: run_worduse.py プロジェクト: jgsogo/neutron
 def form_valid(self, form, time_elapsed=None):
     meaning = Meaning.objects.get(pk=form.cleaned_data['item'])
     word_use = WordUse(meaning=meaning)
     word_use.value = form.cleaned_data['use']
     word_use.informer = self.request.user.as_informer()
     word_use.interface = self.interface
     word_use.elapsed_time = time_elapsed
     word_use.save()
     return super(WordUseRun, self).form_valid(form=None)
コード例 #3
0
    def generate(self):
        interface, _ = Interface.objects.get_or_create(name='synthetic')

        random_gen = RandomWeighted()
        random_gen.seed(self.seed)

        # Data related to word use
        word_data = self.configuration.wordmeaningdata_set.filter(region=self.informer.region)
        n_word_data = len(word_data)
        if n_word_data:
            for _ in range(self.n_use_data):
                w = word_data[random_gen.randint(0, n_word_data-1)]  # TODO: El extremo derecho está incluído o no?
                dato = WordUse(interface=interface, informer=self.informer)
                dato.meaning = w.meaning
                if random_gen.random() < self.randomness:
                    dato.value = random_gen.choice([WordUse.USES.ok, WordUse.USES.prefer_other, WordUse.USES.unrecognized])
                    if dato.value == WordUse.USES.prefer_other:
                        # TODO: Cuando al azar prefiero otra palabra... ¿prefiero otra cualquiera al azar o una del subset?
                        # dato.alternative = random_gen.choice(list(w.alternatedata_set.all()))
                        word = random_gen.choice(Word.objects.all())
                        alternative_meaning = Meaning(word=word, definition=dato.meaning.definition, informer=self.informer)
                        alternative_meaning.save()
                        dato.alternative = alternative_meaning
                else:
                    dato.value = random_gen.weighted_choice([(WordUse.USES.ok, w.ok),
                                                             (WordUse.USES.prefer_other, 1-w.ok-w.unknown),
                                                             (WordUse.USES.unrecognized, w.unknown)])
                    if dato.value == WordUse.USES.prefer_other:
                        word = random_gen.weighted_choice([(it.word, it.percentage) for it in w.alternatedata_set.all()])
                        alternative_meaning = Meaning(word=word, definition=dato.meaning.definition, informer=self.informer)
                        alternative_meaning.save()
                        dato.alternative = alternative_meaning
                dato.save()

        # Data related to coarsity
        coarse_data = self.configuration.wordcoarsedata_set.filter(region=self.informer.region)
        n_word_data = len(coarse_data)
        if n_word_data:
            for _ in range(self.n_coarse_data):
                w = coarse_data[random_gen.randint(0, n_word_data-1)]  # TODO: El extremo derecho está incluído o no?
                dato = CoarseWord(interface=interface, informer=self.informer)
                dato.word = w.word
                if random_gen.random() < self.randomness:
                    # At random
                    dato.value = random_gen.random() < 0.5  # TODO: ¿mayor o mayor-igual?
                else:
                    # Use data
                    dato.value = random_gen.random() < w.coarse
                dato.save()

        self.generated = True
        self.save()