protected override IEnumerable <string> execute(BeamGenerator generator) { var unknownPhrases = GetUnknownPhrases(generator); if (!PreviousPolicy <RequestRefinement>(out var refinementPolicy) || unknownPhrases.Count() != 1) { yield break; } var instanceToRefine = generator.GetValue(refinementPolicy.Tag, Concept2.Target); var unknown = unknownPhrases.First(); var assignUnknownProperty = AssignUnknownProperty.Create(instanceToRefine, unknown, generator); YesNoPrompt.Generate(generator, assignUnknownProperty, instanceToRefine); yield return($"I suppose, you would like to find {plural(instanceToRefine)} which are {unknown}?"); }
protected override IEnumerable <string> execute(BeamGenerator generator) { var evt = Get <InstanceOutputEvent>(); if (evt?.Instance.Concept != Concept2.NeedsRefinement) { yield break; } var instanceToRefine = generator.GetValue(evt.Instance, Concept2.Subject); var activationTarget = generator.GetValue(evt.Instance, Concept2.Target); var prefixesForRefine = generator.GetPrefixingUnknowns(instanceToRefine); if (!prefixesForRefine.TryGetValue(instanceToRefine, out var propertyUnknownRaw)) { //nothing to ask for yield break; } var propertyUnknown = toMeaningfulPhrase(propertyUnknownRaw); if (propertyUnknown == "") { yield break; } /* * //TODO feature based questions * * //ACTION SEQUENCE * //Do you want X which is UNKNOWN ? * Prompt * //-yes: what property UNKNOWN is ? * yes -> expect (properties) * //-- expect property * * //-no: So which X you want ? * no -> ? * //--standard refinement * * * yield return $"I know many {plural(instanceToRefine)} which one would you like?";*/ var assignUnknownProperty = AssignUnknownProperty.Create(instanceToRefine, propertyUnknown, generator); YesNoPrompt.Generate(generator, assignUnknownProperty, instanceToRefine); yield return($"So, you would like to find {plural(instanceToRefine)} which are {propertyUnknown}?"); }