public void ExpectedGuess_MultipleAnalyses_EquallyApproved_NoneInTexts() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newAnalysisWag1 = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var newAnalysisWag2 = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var newAnalysis1 = newAnalysisWag1.Analysis; var newAnalysis2 = newAnalysisWag2.Analysis; setup.UserAgent.SetEvaluation(newAnalysis1, Opinions.approves); setup.UserAgent.SetEvaluation(newAnalysis2, Opinions.approves); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreNotEqual(new NullWAG(), guessActual); } }
public void ExpectedGuess_MultipleAnalyses_PreferUserAgentGuessOverMatchingEntryGuess() { using (var setup = new AnalysisGuessBaseSetup(Cache, AnalysisGuessBaseSetup.Flags.PartsOfSpeech)) { // create an affix entry var expectedMatch = setup.EntryFactory.Create("a", "astem", SandboxGenericMSA.Create(MsaType.kStem, setup.Pos_noun)); // expect a guess to be generated setup.GuessServices.GenerateEntryGuesses(setup.StText); // create user approved guess var newWagUserApproves = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); setup.UserAgent.SetEvaluation(newWagUserApproves.Analysis, Opinions.approves); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(newWagUserApproves.Analysis, guessActual); } }
public void NoExpectedGuessForAnalysis_NoAnalyses() { // don't make any analyses. so we don't expect any guesses. using (var setup = new AnalysisGuessBaseSetup(Cache)) { var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(new NullWAG(), guessActual); } }
public void ExpectedGuessForAnalysis_OneGloss_NoOpinion() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagGloss = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); setup.UserAgent.SetEvaluation(newWagGloss.WfiAnalysis, Opinions.noopinion); // should be equivalent to no evaluation. var guessActual = setup.GuessServices.GetBestGuess(newWagGloss.WfiAnalysis); Assert.AreEqual(newWagGloss.Gloss, guessActual); } }
public void ExpectedAnalysisGuess_ForSentenceInitialUppercaseWithAnalysis() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagUppercase = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[0]); WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); var wagUppercase = new TestModAnalysisOccurrence(setup.Para0.SegmentsOS[0], 0, newWagUppercase.WfiAnalysis); var guessActual = setup.GuessServices.GetBestGuess(wagUppercase); Assert.AreEqual(newWagUppercase.Gloss, guessActual); } }
public void ExpectedAnalysisGuessForAnalysis_PreferFrequentGlossOverLessFrequentGloss() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagFrequentGloss = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); var newWagLessFrequentGloss = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); setup.Para0.SetAnalysis(0, 1, newWagLessFrequentGloss.Gloss); setup.Para0.SetAnalysis(0, 2, newWagFrequentGloss.Gloss); setup.Para0.SetAnalysis(0, 3, newWagFrequentGloss.Gloss); setup.UserAgent.SetEvaluation(newWagLessFrequentGloss.WfiAnalysis, Opinions.approves); setup.UserAgent.SetEvaluation(newWagFrequentGloss.WfiAnalysis, Opinions.approves); var guessActual = setup.GuessServices.GetBestGuess(newWagFrequentGloss.WfiAnalysis); Assert.AreEqual(newWagFrequentGloss.Gloss, guessActual); } }
public void ExpectedGuessForWord_MatchingEntry() { using (var setup = new AnalysisGuessBaseSetup(Cache, AnalysisGuessBaseSetup.Flags.PartsOfSpeech)) { // create an affix entry var newEntry1 = setup.EntryFactory.Create("a-", "aPrefix", SandboxGenericMSA.Create(MsaType.kInfl, null)); var newEntry2 = setup.EntryFactory.Create("-a", "aSuffix", SandboxGenericMSA.Create(MsaType.kDeriv, null)); var newEntry3 = setup.EntryFactory.Create("-a-", "aInfix", SandboxGenericMSA.Create(MsaType.kUnclassified, null)); var newEntry4_expectedMatch = setup.EntryFactory.Create("a", "astem", SandboxGenericMSA.Create(MsaType.kStem, setup.Pos_noun)); var newEntry5 = setup.EntryFactory.Create("a", "aroot", SandboxGenericMSA.Create(MsaType.kRoot, null)); // expect a guess to be generated setup.GuessServices.GenerateEntryGuesses(setup.StText); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreNotEqual(new NullWAG(), guessActual); Assert.AreEqual(newEntry4_expectedMatch.LexemeFormOA.Form.BestVernacularAlternative.Text, guessActual.Wordform.Form.BestVernacularAlternative.Text); Assert.AreEqual(1, guessActual.Analysis.MorphBundlesOS.Count); Assert.AreEqual(newEntry4_expectedMatch.LexemeFormOA, guessActual.Analysis.MorphBundlesOS[0].MorphRA); Assert.AreEqual(newEntry4_expectedMatch.SensesOS[0], guessActual.Analysis.MorphBundlesOS[0].SenseRA); Assert.AreEqual(newEntry4_expectedMatch.SensesOS[0].MorphoSyntaxAnalysisRA, guessActual.Analysis.MorphBundlesOS[0].MsaRA); Assert.AreEqual(newEntry4_expectedMatch.SensesOS[0].Gloss.BestAnalysisAlternative.Text, guessActual.Analysis.MeaningsOC.First().Form.BestAnalysisAlternative.Text); Assert.AreEqual(setup.Pos_noun, guessActual.Analysis.CategoryRA); int cAnalyses = Cache.ServiceLocator.GetInstance<IWfiAnalysisRepository>().Count; Assert.AreEqual(1, cAnalyses, "Should have only generated one computer guess analysis."); } }
public void ExpectedAnalysisGuess_ForSentenceInitialPositionUpperCaseAlternative() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagUppercase = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[0]); var wagUppercase = new AnalysisOccurrence(setup.Para0.SegmentsOS[0],0); var guessActual = setup.GuessServices.GetBestGuess(wagUppercase); Assert.AreEqual(newWagUppercase.Analysis, guessActual); } }
public void NoExpectedGuessForWord_DontMatchBoundedStemOrRoot() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var morphTypeRepository = Cache.ServiceLocator.GetInstance<IMoMorphTypeRepository>(); var morphTypeBoundedRoot = morphTypeRepository.GetObject(MoMorphTypeTags.kguidMorphBoundRoot); var morphTypeBoundedStem = morphTypeRepository.GetObject(MoMorphTypeTags.kguidMorphBoundStem); // first make sure these types don't care about prefix/postfix markers morphTypeBoundedRoot.Prefix = morphTypeBoundedRoot.Postfix = null; morphTypeBoundedStem.Prefix = morphTypeBoundedStem.Postfix = null; // create an affix entry var newEntry1 = setup.EntryFactory.Create("a-", "aPrefix", SandboxGenericMSA.Create(MsaType.kInfl, null)); var newEntry2 = setup.EntryFactory.Create("-a", "aSuffix", SandboxGenericMSA.Create(MsaType.kDeriv, null)); var newEntry3 = setup.EntryFactory.Create("-a-", "aInfix", SandboxGenericMSA.Create(MsaType.kUnclassified, null)); var boundedStem = setup.EntryFactory.Create(morphTypeBoundedStem, TsStringUtils.MakeTss("a", Cache.DefaultVernWs), "aboundedstem", SandboxGenericMSA.Create(MsaType.kStem, null)); var boundedRoot = setup.EntryFactory.Create(morphTypeBoundedRoot, TsStringUtils.MakeTss("a", Cache.DefaultVernWs), "aboundedroot", SandboxGenericMSA.Create(MsaType.kRoot, null)); // try to generate analyses for matching entries (should have no results) setup.GuessServices.GenerateEntryGuesses(setup.StText); int cAnalyses = Cache.ServiceLocator.GetInstance<IWfiAnalysisRepository>().Count; Assert.AreEqual(0, cAnalyses, "Should not have generated guesses."); // make sure we don't actually make a guess. var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(new NullWAG(), guessActual); } }
public void NoExpectedGuessForAnalysis_DisapprovesParserApprovedAnalysis() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWag = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var newAnalysis = newWag.Analysis; setup.ParserAgent.SetEvaluation(newAnalysis, Opinions.approves); setup.UserAgent.SetEvaluation(newAnalysis, Opinions.disapproves); var guessActual = setup.GuessServices.GetBestGuess(newWag.Analysis); Assert.AreEqual(new NullWAG(), guessActual); } }
public void NoExpectedGuessForWord_NoMatchingEntries() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { // create an affix entry var newEntry1= setup.EntryFactory.Create("a-", "aPrefix", SandboxGenericMSA.Create(MsaType.kInfl, null)); var newEntry2 = setup.EntryFactory.Create("-a", "aSuffix", SandboxGenericMSA.Create(MsaType.kDeriv, null)); var newEntry3 = setup.EntryFactory.Create("-a-", "aInfix", SandboxGenericMSA.Create(MsaType.kUnclassified, null)); var newEntry4 = setup.EntryFactory.Create("ay", "Astem", SandboxGenericMSA.Create(MsaType.kStem, null)); var newEntry5 = setup.EntryFactory.Create("ay", "Aroot", SandboxGenericMSA.Create(MsaType.kRoot, null)); // try to generate analyses for matching entries (should have no results) setup.GuessServices.GenerateEntryGuesses(setup.StText); int cAnalyses = Cache.ServiceLocator.GetInstance<IWfiAnalysisRepository>().Count; Assert.AreEqual(0, cAnalyses, "Should not have generated guesses."); // make sure we don't actually make a guess. var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(new NullWAG(), guessActual); } }
public void NoExpectedGuessForWord_DisapprovesHumanAnalysisOfGloss() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newGlossWag = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); setup.UserAgent.SetEvaluation(newGlossWag.WfiAnalysis, Opinions.disapproves); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(new NullWAG(), guessActual); } }
public void NoExpectedGuessForAnalysis_NoGlosses() { // make two analyses, but don't make any glosses. so we don't expect any guesses for one of the analyses. using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newAnalysisWag = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var newAnalysisWag2 = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var guessActual = setup.GuessServices.GetBestGuess(newAnalysisWag2.Analysis); Assert.AreEqual(new NullWAG(), guessActual); } }
public void ExpectedGuess_MultipleAnalyses_PreferOneApprovedInTextToMatchingEntry() { using (var setup = new AnalysisGuessBaseSetup(Cache, AnalysisGuessBaseSetup.Flags.PartsOfSpeech)) { // create an affix entry var expectedMatch = setup.EntryFactory.Create("a", "astem", SandboxGenericMSA.Create(MsaType.kStem, setup.Pos_noun)); // expect a guess to be generated setup.GuessServices.GenerateEntryGuesses(setup.StText); // create user approved guess var newWagInText = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); // set the analysis at the appropriate location to be the one we created. setup.Para0.SetAnalysis(0, 1, newWagInText.Analysis); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(newWagInText.Analysis, guessActual); } }
public void ExpectedGuessForWord_MatchingVariantOfEntry() { using (var setup = new AnalysisGuessBaseSetup(Cache, AnalysisGuessBaseSetup.Flags.PartsOfSpeech, AnalysisGuessBaseSetup.Flags.VariantEntryTypes)) { // create an affix entry var mainEntry = setup.EntryFactory.Create("aMain", "astem", SandboxGenericMSA.Create(MsaType.kStem, setup.Pos_noun)); ILexEntryRef ler1 = mainEntry.CreateVariantEntryAndBackRef(setup.Vet_DialectalVariant, TsStringUtils.MakeTss("a", Cache.DefaultVernWs)); var variantOfEntry = ler1.OwnerOfClass<ILexEntry>(); // try to generate analyses for matching entries (should have no results) setup.GuessServices.GenerateEntryGuesses(setup.StText); var guessVariantOfEntry = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreNotEqual(new NullWAG(), guessVariantOfEntry); Assert.AreEqual(1, guessVariantOfEntry.Analysis.MorphBundlesOS.Count); Assert.AreEqual(variantOfEntry.LexemeFormOA, guessVariantOfEntry.Analysis.MorphBundlesOS[0].MorphRA); Assert.AreEqual(mainEntry.SensesOS[0], guessVariantOfEntry.Analysis.MorphBundlesOS[0].SenseRA); Assert.AreEqual(mainEntry.SensesOS[0].MorphoSyntaxAnalysisRA, guessVariantOfEntry.Analysis.MorphBundlesOS[0].MsaRA); Assert.AreEqual(mainEntry.SensesOS[0].Gloss.BestAnalysisAlternative.Text, guessVariantOfEntry.Analysis.MeaningsOC.First().Form.BestAnalysisAlternative.Text); Assert.AreEqual(setup.Pos_noun, guessVariantOfEntry.Analysis.CategoryRA); int cAnalyses = Cache.ServiceLocator.GetInstance<IWfiAnalysisRepository>().Count; Assert.AreEqual(1, cAnalyses, "Should have only generated one computer guess analysis."); } }
public void ExpectedAnalysisGuess_MultipleAnalyses_PreferAnalysisInText() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagOutsideTexts = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); var newWagInText = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); // set the analysis at the appropriate location to be the one we created. setup.Para0.SetAnalysis(0, 1, newWagInText.Analysis); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(newWagInText.Analysis, guessActual); } }
public void ExpectedGuessForWord_MatchingVariantHavingSense() { using (var setup = new AnalysisGuessBaseSetup(Cache, AnalysisGuessBaseSetup.Flags.PartsOfSpeech, AnalysisGuessBaseSetup.Flags.VariantEntryTypes)) { // create an affix entry var mainEntry = setup.EntryFactory.Create("aMain", "astem", SandboxGenericMSA.Create(MsaType.kStem, setup.Pos_noun)); ILexEntryRef ler = mainEntry.CreateVariantEntryAndBackRef(setup.Vet_FreeVariant, TsStringUtils.MakeTss("a", Cache.DefaultVernWs)); var variantOfEntry = ler.OwnerOfClass<ILexEntry>(); // make the variant have it's own gloss...should take precendence over main entry gloss info (cf. LT-9681) var senseFactory = Cache.ServiceLocator.GetInstance<ILexSenseFactory>(); senseFactory.Create(variantOfEntry, SandboxGenericMSA.Create(MsaType.kStem, setup.Pos_verb), "variantOfSenseGloss"); // try to generate analyses for matching entries (should have no results) setup.GuessServices.GenerateEntryGuesses(setup.StText); var guessVariantOfSense = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreNotEqual(new NullWAG(), guessVariantOfSense); Assert.AreEqual(1, guessVariantOfSense.Analysis.MorphBundlesOS.Count); // (LT-9681) Not sure how the MorphRA/SenseRA/MsaRA data should be represented for this case. // typically for variants, MorphRA points to the variant, and SenseRA points to the primary entry's sense. // in this case, perhaps the SenseRA should point to the variant's sense. Assert.AreEqual(variantOfEntry.LexemeFormOA, guessVariantOfSense.Analysis.MorphBundlesOS[0].MorphRA); Assert.AreEqual(variantOfEntry.SensesOS[0], guessVariantOfSense.Analysis.MorphBundlesOS[0].SenseRA); Assert.AreEqual(variantOfEntry.SensesOS[0].MorphoSyntaxAnalysisRA, guessVariantOfSense.Analysis.MorphBundlesOS[0].MsaRA); Assert.AreEqual(variantOfEntry.SensesOS[0].Gloss.BestAnalysisAlternative.Text, guessVariantOfSense.Analysis.MeaningsOC.First().Form.BestAnalysisAlternative.Text); Assert.AreEqual(setup.Pos_noun, guessVariantOfSense.Analysis.CategoryRA); int cAnalyses = Cache.ServiceLocator.GetInstance<IWfiAnalysisRepository>().Count; Assert.AreEqual(1, cAnalyses, "Should have only generated one computer guess analysis."); } }
public void ExpectedAnalysisGuess_ForSentenceInitialOnlyLowercase() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var wagUppercaseB = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[5]); var wagLowercaseB = new AnalysisOccurrence(setup.Para0.SegmentsOS[1], 0); var guessActual = setup.GuessServices.GetBestGuess(wagLowercaseB); Assert.AreEqual(new NullWAG(), guessActual); } }
public void ExpectedGuessForAnalysis_OneGloss_HumanApprovesAnalysis() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagGloss = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); setup.UserAgent.SetEvaluation(newWagGloss.WfiAnalysis, Opinions.approves); var guessActual = setup.GuessServices.GetBestGuess(newWagGloss.WfiAnalysis); Assert.AreEqual(newWagGloss.Gloss, guessActual); } }
public void ExpectedAnalysisGuessForWord_GlossOfApprovedAnalysis() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagApproves = WordAnalysisOrGlossServices.CreateNewAnalysisTreeGloss(setup.Words_para0[1]); // set the analysis at the appropriate location to be the one we created. setup.Para0.SetAnalysis(0, 1, newWagApproves.Gloss); setup.UserAgent.SetEvaluation(newWagApproves.WfiAnalysis, Opinions.approves); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(newWagApproves.Gloss, guessActual); } }
public void ExpectedGuess_OneAnalysis_NoOpinion() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWag = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var newAnalysis = newWag.Analysis; setup.UserAgent.SetEvaluation(newAnalysis, Opinions.noopinion); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(newWag.Analysis, guessActual); } }
public void ExpectedGuess_MultipleAnalyses_MostApprovedAfterDisapproved() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagDisapproved = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var newWagApproved = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); setup.UserAgent.SetEvaluation(newWagDisapproved.Analysis, Opinions.disapproves); setup.UserAgent.SetEvaluation(newWagApproved.Analysis, Opinions.approves); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(newWagApproved.Analysis, guessActual); } }
public void ExpectedGuess_PreferUserApprovedAnalysisOverParserApprovedAnalysis() { using (var setup = new AnalysisGuessBaseSetup(Cache)) { var newWagParserApproves = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); var newWagHumanApproves = WordAnalysisOrGlossServices.CreateNewAnalysisWAG(setup.Words_para0[1]); setup.ParserAgent.SetEvaluation(newWagParserApproves.Analysis, Opinions.approves); setup.UserAgent.SetEvaluation(newWagHumanApproves.Analysis, Opinions.approves); var guessActual = setup.GuessServices.GetBestGuess(setup.Words_para0[1]); Assert.AreEqual(newWagHumanApproves.Analysis, guessActual); } }