コード例 #1
0
 public void Learn(Sentence sentence)
 {
     if(sentence.Sentiment == Sentiment.Positive)
     {
         positiveSentances++;
         allCount++;
         for (int i = 0; i < context.SentimentWords.Count; i++)
         {
             var w = context.SentimentWords[i];
             if (!positiveDict.ContainsKey(w))
                 positiveDict.Add(w, new int[2]);
             if (sentence.SentimentWords.Contains(i))
                 positiveDict[w][1]++;
             else
                 positiveDict[w][0]++;
         }
     }
     else
     {
         negtiveSentances++;
         allCount++;
         for (int i = 0; i < context.SentimentWords.Count; i++)
         {
             var w = context.SentimentWords[i];
             if (!negativeDict.ContainsKey(w))
                 negativeDict.Add(w, new int[2]);
             if (sentence.SentimentWords.Contains(i))
                 negativeDict[w][1]++;
             else
                 negativeDict[w][0]++;
         }
     }
 }
コード例 #2
0
 public void Analize(Sentence sentence)
 {
     var distpos = GetDist(sentence, positiveDict, positiveSentances);
     var distneg = GetDist(sentence, negativeDict, negtiveSentances);
     if (distpos > distneg)
         sentence.Sentiment = Sentiment.Positive;
     else
         sentence.Sentiment = Sentiment.Negative;
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: rsemenov/SentAnalizer
 static void Print(Sentence s, AnalysisContext context)
 {
     Console.WriteLine(s.Text);
     Console.WriteLine("Entities:");
     foreach(var i in s.Entities)
     {
         var word = context.Entities[i];
         Console.WriteLine("-->"+word.ToString());
     }
     Console.WriteLine("Sentiment:" + s.Sentiment);
     Console.WriteLine();
 }
コード例 #4
0
ファイル: Program.cs プロジェクト: rsemenov/SentAnalizer
        static void Main(string[] args)
        {
            //Stemmer st = new Stemmer();
            //while (true)
            {
              //  var res = st.Stem(Console.ReadLine());
               // Console.WriteLine(res);
            }
            //var matrix = WordsMatrix.Build("Files\\input_learn_pos.txt");

            var cont = AnalysisContext.CreateContext();
            BaesianClassifier baes = new BaesianClassifier(cont);
            baes.Teach();

            /*foreach (var line in File.ReadAllLines("Files\\input_learn_pos.txt"))
            {
                Sentence s = new Sentence(cont, line);
                s.GetWords();
                s.Sentiment = Sentiment.Positive;
                baes.Learn(s);
            }

            foreach (var line in File.ReadAllLines("Files\\input_learn_neg.txt"))
            {
                Sentence s = new Sentence(cont, line);
                s.GetWords();
                s.Sentiment = Sentiment.Negative;
                baes.Learn(s);
            }
             */

            List<Tuple<IWord, Sentiment>> list = new List<Tuple<IWord, Sentiment>>();
            foreach (var line in File.ReadAllLines("Files\\input.txt"))
            {
                Sentence s = new Sentence(cont, line);
                s.GetWords();
                baes.Analize(s);
                Print(s, cont);
                foreach (var i in s.Entities)
                {
                    var word = cont.Entities[i];
                    list.Add(new Tuple<IWord, Sentiment>(word, s.Sentiment));
                }
            }
            Console.WriteLine("Результат анализа");
            foreach (var t in list)
                Console.WriteLine(t.Item1 + " -> " + t.Item2);

            Console.ReadLine();
        }
コード例 #5
0
 public static int Analize([MarshalAs(UnmanagedType.LPWStr)]string text)
 {
     var sentance = new Sentence(Classifier.Context, text);
     Classifier.Analize(sentance);
     return (int)sentance.Sentiment;
 }
コード例 #6
0
        public void Teach()
        {
            foreach (var line in File.ReadAllLines(Constants.LearnPositiveFile))
            {
                Sentence s = new Sentence(context, line);
                s.GetWords();
                s.Sentiment = Sentiment.Positive;
                Learn(s);
            }

            foreach (var line in File.ReadAllLines(Constants.LearnNegativeFile))
            {
                Sentence s = new Sentence(context, line);
                s.GetWords();
                s.Sentiment = Sentiment.Negative;
                Learn(s);
            }
        }
コード例 #7
0
 double GetDist(Sentence sentence, Dictionary<IWord,int[]> dict, int classcount)
 {
     double dist = classcount / (allCount * 1.0);
     for (int i = 0; i < context.SentimentWords.Count; i++)
     {
         var word = context.SentimentWords[i];
         if (sentence.SentimentWords.Contains(i))
             dist *= dict[word][1] / (classcount * 1.0);
         else
             dist *= dict[word][0] / (classcount * 1.0);
     }
     return dist;
 }