public static String HighlightExtractedLatinWords(M_ARABICDARIJAENTRY arabicDarijaEntry, List <M_ARABICDARIJAENTRY_LATINWORD> ArabicDarijaEntryLatinWords) { // in this method ArabicDarijaEntryLatinWords are not pre-filtered // Highlith and add label of counts of variantes // find arabic darija text String arabicDarijaText = arabicDarijaEntry.ArabicDarijaText; // limit to concerned latin words List <M_ARABICDARIJAENTRY_LATINWORD> arabicDarijaEntryLatinWords = ArabicDarijaEntryLatinWords.FindAll(m => m.ID_ARABICDARIJAENTRY == arabicDarijaEntry.ID_ARABICDARIJAENTRY); foreach (var arabicDarijaEntryLatinWord in arabicDarijaEntryLatinWords) { var mostPopularVariant = arabicDarijaEntryLatinWord.MostPopularVariant; var latinWord = arabicDarijaEntryLatinWord.LatinWord; var translation = arabicDarijaEntryLatinWord.Translation; var count = arabicDarijaEntryLatinWord.VariantsCount; var guid = arabicDarijaEntryLatinWord.ID_ARABICDARIJAENTRY_LATINWORD; String newhtml; if (count > 0) { if (String.IsNullOrEmpty(translation) == false) { newhtml = $@"‏<b><mark>" + translation + "</mark></b>"; } else { if (guid != Guid.Empty) { newhtml = $@"‏<b><mark data-toggle='tooltip' title='{mostPopularVariant}'>{latinWord}</mark></b> <a href='/Train/Train_AddToCorpus/?arabiziWord={latinWord}&arabiziWordGuid={guid}'> <span class='badge'>{count}</span> </a>"; } else { newhtml = $@"‏<b><mark data-toggle='tooltip' title='{mostPopularVariant}'>{latinWord}</mark></b> <span class='badge'>{count}</span>"; } } } else { if (String.IsNullOrEmpty(translation) == false) { newhtml = $@"‏<b><mark>" + translation + "</mark></b>"; } else { newhtml = $@"‏<b><mark>" + latinWord + "</mark></b>"; } } var regex = new Regex(RegexConstant.notPreceededByMark + latinWord, RegexOptions.IgnoreCase); arabicDarijaText = regex.Replace(arabicDarijaText, newhtml, 1); } // return(arabicDarijaText); }
public static String DisplayEntitiesType(M_ARABICDARIJAENTRY arabicDarijaEntry, List <M_ARABICDARIJAENTRY_TEXTENTITY> TextEntities) { // limit to concerned text entities List <M_ARABICDARIJAENTRY_TEXTENTITY> textEntities = TextEntities.FindAll(m => m.ID_ARABICDARIJAENTRY == arabicDarijaEntry.ID_ARABICDARIJAENTRY); String entitiesString = String.Empty; foreach (var textEntity in textEntities) { if (TextEntities.IndexOf(textEntity) % 4 == 0) { entitiesString += "<span class=\"label label-primary\">" + textEntity.TextEntity.Type + "</span> "; } else if (TextEntities.IndexOf(textEntity) % 4 == 1) { entitiesString += "<span class=\"label label-default\">" + textEntity.TextEntity.Type + "</span> "; } else if (TextEntities.IndexOf(textEntity) % 4 == 2) { entitiesString += "<span class=\"label label-success\">" + textEntity.TextEntity.Type + "</span> "; } else { entitiesString += "<span class=\"label label-info\">" + textEntity.TextEntity.Type + "</span> "; } } return(entitiesString); }
public IHttpActionResult GetArabicDarijaEntry(/*[FromBody]*/ string token, String text) { var errorMessage = string.Empty; if (ValidateToken(token, "GetArabicDarijaEntry", out errorMessage)) { M_ARABICDARIJAENTRY arabicDarijaEntry = null; M_ARABIZIENTRY arabiziEntry = new M_ARABIZIENTRY { ArabiziText = text, ArabiziEntryDate = DateTime.Now }; // Arabizi to arabic script via direct call to perl script var textConverter = new TextConverter(); // List <M_ARABICDARIJAENTRY_LATINWORD> arabicDarijaEntryLatinWords = new List <M_ARABICDARIJAENTRY_LATINWORD>(); // Arabizi to arabic from perl script if (arabiziEntry.ArabiziText != null) { lock (thisLock) { // complete arabizi entry arabiziEntry.ID_ARABIZIENTRY = Guid.NewGuid(); // prepare darija from perl script var arabicText = textConverter.Convert(arabiziEntry.ArabiziText); arabicDarijaEntry = new M_ARABICDARIJAENTRY { ID_ARABICDARIJAENTRY = Guid.NewGuid(), ID_ARABIZIENTRY = arabiziEntry.ID_ARABIZIENTRY, ArabicDarijaText = arabicText }; // Save arabiziEntry to Serialization String path = HostingEnvironment.MapPath("~/App_Data/data_M_ARABIZIENTRY.txt"); new TextPersist().Serialize <M_ARABIZIENTRY>(arabiziEntry, path); // Save arabicDarijaEntry to Serialization path = HostingEnvironment.MapPath("~/App_Data/data_M_ARABICDARIJAENTRY.txt"); new TextPersist().Serialize <M_ARABICDARIJAENTRY>(arabicDarijaEntry, path); // latin words MatchCollection matches = TextTools.ExtractLatinWords(arabicDarijaEntry.ArabicDarijaText); // save every match // also calculate on the fly the number of varaiants foreach (Match match in matches) { // do not consider words in the bidict as latin words if (new TextFrequency().BidictContainsWord(match.Value)) { continue; } String arabiziWord = match.Value; int variantsCount = new TextConverter().GetAllTranscriptions(arabiziWord).Count; var latinWord = new M_ARABICDARIJAENTRY_LATINWORD { ID_ARABICDARIJAENTRY_LATINWORD = Guid.NewGuid(), ID_ARABICDARIJAENTRY = arabicDarijaEntry.ID_ARABICDARIJAENTRY, LatinWord = arabiziWord, VariantsCount = variantsCount }; // arabicDarijaEntryLatinWords.Add(latinWord); // Save to Serialization path = HostingEnvironment.MapPath("~/App_Data/data_M_ARABICDARIJAENTRY_LATINWORD.txt"); new TextPersist().Serialize <M_ARABICDARIJAENTRY_LATINWORD>(latinWord, path); } } } // if (arabicDarijaEntry == null) { return(NotFound()); } // return Ok(arabicDarijaEntry); // use expando to merge the json ouptuts : arabizi + arabic + latin words dynamic expando = new ExpandoObject(); expando.M_ARABIZIENTRY = arabiziEntry; expando.M_ARABICDARIJAENTRY = arabicDarijaEntry; expando.M_ARABICDARIJAENTRY_LATINWORD = arabicDarijaEntryLatinWords; return(Ok(expando)); } else { var message = new HttpResponseMessage(); message.StatusCode = HttpStatusCode.NotAcceptable; message.Content = new StringContent(errorMessage); return(Ok(message)); } }