/// <summary> /// おみくじ分析 /// </summary> public void AnalysOmikuji() { MOmikuji omikuji = this.OmikijiEntities.Omikujis.First(); Console.WriteLine($"おみくじ結果:{this.GetCodeText(omikuji.RankCode)}"); this.SentimentAnalysOmikuji(omikuji); }
/// <summary> /// おみくじ内容分析 /// </summary> /// <param name="omikuji"></param> /// <param name="omikujiText"></param> /// <param name="categoryCode"></param> private void AnalysOmikujiText(MOmikuji omikuji, string omikujiText, string categoryCode) { // 分析実行 DocumentSentiment sentiment = this.Client.AnalyzeSentiment(omikujiText); // おみくじ分析結果生成 TOmikujiAnalytics omikujiAnalytics = new TOmikujiAnalytics(omikuji.Id, omikujiText, categoryCode, sentiment); Console.WriteLine($"{this.GetCodeText(categoryCode)}:"); this.OmikijiEntities.OmikujiAnalytics.Add(omikujiAnalytics); // 分析結果をコンソールに出力 this.ConsoleOutput(omikujiText, sentiment.Sentiment, sentiment.ConfidenceScores); this.OmikijiEntities.SaveChanges(); // 分析結果が複数ある場合(文1,文2…)、文章全体の分析結果を親とし、さらに細かく分析し子要素を作成 if (sentiment.Sentences.Count > 1) { // 文章をさらに分析(句読点がついている場合に文1,文2…となる) foreach (SentenceSentiment sentence in sentiment.Sentences) { // 最初の分析結果に紐づけ、おみくじ分析結果生成 TOmikujiAnalytics child = new TOmikujiAnalytics(omikuji.Id, omikujiAnalytics.Id, categoryCode, sentence); this.OmikijiEntities.OmikujiAnalytics.Add(child); // 分析結果をコンソールに出力 this.ConsoleOutput(sentence.Text, sentence.Sentiment, sentence.ConfidenceScores); } this.OmikijiEntities.SaveChanges(); } }
/// <summary> /// おみくじデータ追加 /// </summary> public void AddOmikuji() { MOmikuji omikuji = this.GetMOmikuji(); List <MCode> codes = this.GetCodes(); this.OmikijiEntities.Omikujis.Add(omikuji); this.OmikijiEntities.Codes.AddRange(codes); this.OmikijiEntities.SaveChanges(); }
/// <summary> /// センチメント分析 /// </summary> /// <param name="omikuji"></param> private void SentimentAnalysOmikuji(MOmikuji omikuji) { Type type = typeof(MOmikuji); PropertyInfo[] propertyInfos = type.GetProperties(); foreach (PropertyInfo propertyInfo in propertyInfos) { // プロパティがおみくじ属性を持つ場合、分析実施 OmikujiAttribute attribute = propertyInfo.GetCustomAttributes <OmikujiAttribute>().FirstOrDefault(); if (attribute != null) { // 分析内容取得 string omikujiText = propertyInfo.GetGetMethod().Invoke(omikuji, null).ToString(); this.AnalysOmikujiText(omikuji, omikujiText, attribute.CategoryCode); } } }
/// <summary> /// おみくじデータ追加 /// </summary> /// <returns></returns> private MOmikuji GetMOmikuji() { MOmikuji omikuji = new MOmikuji(); omikuji.RankCode = OmikujiConst.CD_OMIKUJI_KEKKA + OmikujiConst.KEKKA_SUEKICHI; omikuji.Body = "暦の上ではうららかな春を迎えながらも依然として冬の様な時候。しかしながら冬ごもりの草木が芽を出すのは目前にある。苦あれば、楽あり。くよくよせずに春を待つがよい。"; omikuji.Ganbo = "叶う。されど無理な願いはよせ"; omikuji.Machibito = "遅けれど来たる"; omikuji.Shitsubutsu = "長引けど出る"; omikuji.Ryoko = "あせらぬが吉"; omikuji.Syobai = "後程利益多し"; omikuji.Hogaku = "北東の方よし"; omikuji.Gakugyo = "人にたよるな。自分でなせば叶う。"; omikuji.Arasoigoto = "よくよく見定めよ"; omikuji.Tenkyo = "さわりなし吉"; omikuji.Syussan = "思いのほかかるし"; omikuji.Byoki = "危き様なるも癒ゆ"; omikuji.Endan = "良縁ありまとまる"; return(omikuji); }