public void NormalizeTestWithSimpleLemma() { var simple = "абв"; var normalizer = new LemmaNormalizer(simple); Assert.AreEqual(simple, normalizer.Normalize()); }
private List <NameForm> Lookup(string nominativeSingular, CorrectionLanguage language) { var token = HttpContext.Current.Request.GetToken(); if (token == null) { return(null); } var cache = (MorpherCacheObject)_morpherCache.Get(token.ToString().ToLowerInvariant()); var correctionCache = (List <Name>)_correctionCache.Get(cache.UserId.ToString().ToLowerInvariant()); if (correctionCache != null) { var result = correctionCache.FirstOrDefault( name => name.Lemma == LemmaNormalizer.Normalize(nominativeSingular) && name.LanguageID == language.ToDatabaseLanguage())?.NameForms; if (result == null || !result.Any()) { return(null); } return(result.ToList()); } // load to cache LoadToCache(cache.UserId.Value); return(Lookup(nominativeSingular, language)); }
public void NormalizeTestWithLetter_ё() { var complex = "ёлка"; var normalizer = new LemmaNormalizer(complex); Assert.AreEqual("елка", normalizer.Normalize()); }
private bool Remove(string nominativeSingular, CorrectionLanguage language) { var token = HttpContext.Current.Request.GetToken(); if (token == null) { throw new TokenNotFoundException(); } var cache = (MorpherCacheObject)_morpherCache.Get(token.ToString().ToLowerInvariant()); _correctionCache.Remove(cache.UserId.ToString().ToLowerInvariant()); using (UserCorrectionDataContext context = new UserCorrectionDataContext()) { var query = (from name in context.Names join userVote in context.UserVotes on name.ID equals userVote.NameID where userVote.UserID == cache.UserId && name.Lemma == LemmaNormalizer.Normalize(nominativeSingular) && name.LanguageID == language.ToDatabaseLanguage() select new { name, userVote }).FirstOrDefault(); if (query == null) { return(false); } foreach (var form in query.name.NameForms) { context.NameForms.DeleteOnSubmit(form); } context.UserVotes.DeleteOnSubmit(query.userVote); context.SubmitChanges(); return(true); } }
private void Add(string nominativeSingular, List <NameForm> forms, CorrectionLanguage language) { var token = HttpContext.Current.Request.GetToken(); if (token == null) { throw new TokenNotFoundException(); } var cache = (MorpherCacheObject)_morpherCache.Get(token.ToString().ToLowerInvariant()); string normalizedLemma = LemmaNormalizer.Normalize(nominativeSingular); using (UserCorrectionDataContext context = new UserCorrectionDataContext()) { var userVote = context.UserVotes.FirstOrDefault( vote => vote.UserID == cache.UserId && vote.Name.Lemma == normalizedLemma && vote.Name.LanguageID == language.ToDatabaseLanguage()); Name name; if (userVote == null) { var nameId = Guid.NewGuid(); name = new Name() { ID = nameId, LanguageID = language.ToDatabaseLanguage() }; context.Names.InsertOnSubmit(name); userVote = new UserVote() { Name = name, UserID = cache.UserId.Value }; context.UserVotes.InsertOnSubmit(userVote); } else { name = userVote.Name; } name.Lemma = normalizedLemma; userVote.SubmittedUTC = DateTime.UtcNow; foreach (var nameForm in forms) { var dbForm = name.NameForms.FirstOrDefault( nf => nf.FormID == nameForm.FormID && nf.Plural == nameForm.Plural); if (dbForm == null) { nameForm.Name = name; context.NameForms.InsertOnSubmit(nameForm); } else { dbForm.AccentedText = nameForm.AccentedText; } } context.SubmitChanges(); _correctionCache.Remove(cache.UserId.ToString().ToLowerInvariant()); } }