Ejemplo n.º 1
0
def build_actions_and_generics_curriculum(
    num_samples: Optional[int],
    num_noise_objects: Optional[int],
    language_generator: LanguageGenerator[HighLevelSemanticsSituation,
                                          LinearizedDependencyTree],
) -> Sequence[Phase1InstanceGroup]:
    # pylint: disable=unused-argument
    return [
        _make_eat_curriculum(10, 0, language_generator),
        _make_drink_curriculum(10, 0, language_generator),
        _make_sit_curriculum(10, 0, language_generator),
        _make_jump_curriculum(10, 0, language_generator),
        _make_fly_curriculum(10, 0, language_generator),
        _make_generic_statements_curriculum(
            num_samples=20,
            noise_objects=0,
            language_generator=language_generator),
    ]
Ejemplo n.º 2
0
 ],
 "kinds-and-generics": [
     _make_each_object_by_itself_curriculum(num_samples, 0,
                                            language_generator),
     _make_kind_predicates_curriculum(None, None,
                                      language_generator),
     _make_generic_statements_curriculum(
         num_samples=3,
         noise_objects=0,
         language_generator=language_generator),
 ],
 "obj-actions-kinds-generics": [
     _make_each_object_by_itself_curriculum(num_samples, 0,
                                            language_generator),
     # Actions - verbs in generics
     _make_eat_curriculum(10, 0, language_generator),
     _make_drink_curriculum(10, 0, language_generator),
     _make_sit_curriculum(10, 0, language_generator),
     _make_jump_curriculum(10, 0, language_generator),
     _make_fly_curriculum(10, 0, language_generator),
     # Plurals
     _make_plural_objects_curriculum(None, 0, language_generator),
     # Color attributes
     _make_objects_with_colors_curriculum(None, None,
                                          language_generator),
     # Predicates
     _make_colour_predicates_curriculum(None, None,
                                        language_generator),
     _make_kind_predicates_curriculum(None, None,
                                      language_generator),
     # Generics
Ejemplo n.º 3
0
def test_eat_curriculum(language_generator):
    curriculum_test(_make_eat_curriculum(None, None, language_generator))
Ejemplo n.º 4
0
     "without-chicken-beef-cow": [CHICKEN, BEEF, COW],
     "chicken": [BEEF, COW],
     "beef-cow": [CHICKEN],
     "chicken-beef-cow": immutableset(),
 }
 for condition, banned_objects in condition_and_banned_objects.items():
     pretraining_curricula = [
         _make_each_object_by_itself_curriculum(
             num_samples,
             0,
             language_generator,
             banned_ontology_types=banned_objects,
         ),
         # Actions - verbs in generics
         _make_eat_curriculum(10,
                              0,
                              language_generator,
                              banned_ontology_types=banned_objects),
         _make_drink_curriculum(10,
                                0,
                                language_generator,
                                banned_ontology_types=banned_objects),
         _make_sit_curriculum(10,
                              0,
                              language_generator,
                              banned_ontology_types=banned_objects),
         _make_jump_curriculum(10,
                               0,
                               language_generator,
                               banned_ontology_types=banned_objects),
         _make_fly_curriculum(10,
                              0,
Ejemplo n.º 5
0
def run_generics_test(learner, language_mode):
    def build_object_multiples_situations(
            ontology: Ontology,
            *,
            samples_per_object: int = 3,
            chooser: RandomChooser) -> Iterable[HighLevelSemanticsSituation]:
        for object_type in PHASE_1_CURRICULUM_OBJECTS:
            # Exclude slow objects for now
            if object_type.handle in ["bird", "dog", "truck"]:
                continue
            is_liquid = ontology.has_all_properties(object_type, [LIQUID])
            # don't want multiples of named people
            if not is_recognized_particular(ontology,
                                            object_type) and not is_liquid:
                for _ in range(samples_per_object):
                    num_objects = chooser.choice(range(2, 4))
                    yield HighLevelSemanticsSituation(
                        ontology=GAILA_PHASE_1_ONTOLOGY,
                        salient_objects=[
                            SituationObject.instantiate_ontology_node(
                                ontology_node=object_type,
                                debug_handle=object_type.handle + f"_{idx}",
                                ontology=GAILA_PHASE_1_ONTOLOGY,
                            ) for idx in range(num_objects)
                        ],
                        axis_info=AxesInfo(),
                    )

    language_generator = phase2_language_generator(language_mode)
    # Teach plurals
    plurals = phase1_instances(
        "plurals pretraining",
        build_object_multiples_situations(ontology=GAILA_PHASE_1_ONTOLOGY,
                                          chooser=PHASE1_CHOOSER_FACTORY()),
        language_generator=language_generator,
    )

    curricula = [
        # Actions - verbs in generics
        _make_eat_curriculum(10, 0, language_generator),
        # Plurals
        plurals,
        # Color attributes
        _make_objects_with_colors_curriculum(None, None, language_generator),
        # Predicates
        _make_colour_predicates_curriculum(None, None, language_generator),
        _make_kind_predicates_curriculum(None, None, language_generator),
        # Generics
        _make_generic_statements_curriculum(
            num_samples=3,
            noise_objects=0,
            language_generator=language_generator),
    ]

    for curriculum in curricula:
        for (
                _,
                linguistic_description,
                perceptual_representation,
        ) in curriculum.instances():
            # Get the object matches first - preposition learner can't learn without already recognized objects
            learner.observe(
                LearningExample(perceptual_representation,
                                linguistic_description))