private void ClassifyFilms(IList <Film> films, ClassificationDefine classificationDefines) { var keywords = classificationDefines.Actors.Union(classificationDefines.Genres).ToArray(); var result = new List <MoviePhrase>(); foreach (var film in films.Where(x => x.Distributor.Length != 0 && x.Identification.Length != 0)) { var model = new MoviePhrase { FilePath = film.FilePath, FileName = film.FileName }; var wording = model.FileName.Replace(film.Distributor, string.Empty).Replace(film.Identification, string.Empty); var recogPhrases = new List <string>(); var unrecogPhrases = new List <string> { wording }; SplitRecognizedPhrase(keywords, recogPhrases, unrecogPhrases); model.RecogPhrase.AddRange(recogPhrases); model.UnrecogPhrase.AddRange(unrecogPhrases); result.Add(model); } var handler = new JsonListFileHandler <MoviePhrase>(BaseConstants.MoviePhrasePath); handler.Items.Clear(); handler.Items.AddRange(result); handler.SaveItemsToJson(); }
public ClassificationDefineControl(ClassificationDefine filmDefine, Action saveClassificationDefine) : base() { InitializeComponent(); ClassificationDefine = filmDefine; SaveClassificationDefineAction = saveClassificationDefine; }
public void ClassifyAndExportDefines(IList <Film> filmInfos, ClassificationDefine classificationDefine) { var list = new List <Phrases>(); foreach (var item in filmInfos) { var name = item.FileName; if (!string.IsNullOrEmpty(item.Distributor)) { name = name.Replace(item.Distributor, string.Empty); } if (!string.IsNullOrEmpty(item.Identification)) { name = name.Replace(item.Identification, string.Empty); } var allPhrases = name.Split(' '); foreach (var phrase in allPhrases) { if (list.Any(x => x.Phrase.Equals(phrase, StringComparison.CurrentCultureIgnoreCase))) { continue; } var type = PhraseType.Undefined; if (classificationDefine.Actors.Contains(phrase)) { type = PhraseType.Actress; } else if (classificationDefine.Genres.Contains(phrase)) { type = PhraseType.Subject; } list.Add(new Phrases { Phrase = phrase, PhraseType = type }); } } var result = list.OrderBy(x => x.PhraseType).ThenBy(x => x.Phrase); BusinessFunc.ExportListToFile(result, BaseConstants.PhrasePath, false); }