//Conjunction based opinion word extraction process 100% protected string GetConjunctionBaseOpinionWord(string word, int index, string sentence) { FillConjunctions(); FillNegativeWords(); FillPositiveWords(); var tempWord = ""; if (index + 2 <= WordsInSentence.Length || index + 1 <= WordsInSentence.Length) { var unknown = WordsInSentence[index]; foreach (var conjunction in Conjunctions) { if (Equals(conjunction, unknown)) { if (PositiveWords.Contains(WordsInSentence[index + 1]) || NegativeWords.Contains(WordsInSentence[index + 1])) { tempWord = WordsInSentence[index + 1]; return(tempWord); } } } } return(null); }
//Extract new opinion words 70% protected List <OpinionWord> ExtractOpinionWords() { FillPositiveWords(); FillNegativeWords(); Lexicon(); PositionOfReview = 0; DoublePropagationList = new List <OpinionWord>(); foreach (var opinion in Opinions) { SentenceIndex = 0; SentencesInReview = SentencesSeparator(SentencesInReview, PositionOfReview); foreach (var sentence in SentencesInReview) { WordsInSentence = EachWordInSentence(WordsInSentence, SentencesInReview, SentenceIndex); var i = -1; foreach (var word in WordsInSentence) { i++; var tempWord = word.ToLower(); var opinionWord = new OpinionWord(tempWord, WordOrientation) { OpWord = tempWord, Orientation = WordOrientation }; var position = i; Target = GetOpinionWordTarget(tempWord, position, sentence); if (OpinionTargetList.Contains(Target)) { tempWord = GetDoublePropagationOpinionWord(tempWord, position, sentence); if ((PositiveWords.Contains(tempWord) || NegativeWords.Contains(tempWord)) && tempWord != null) { WordOrientation = GetOpinionWordOrientation(tempWord, position, sentence); if (!OpinionLexicon.Contains(tempWord)) { DoublePropagationList.Add(new OpinionWord(opinionWord.OpWord, opinionWord.Orientation)); } } else { if (tempWord != null) { DoublePropagationList.Add(new OpinionWord(tempWord, opinionWord.Orientation)); } } } } SentenceIndex++; } PositionOfReview++; } return(DoublePropagationList); }
//Filter seed extraction process 100% protected List <OpinionWord> ExtractFilteredSeedOpinionWords() { FillPositiveWords(); FillNegativeWords(); Lexicon(); PositionOfReview = 0; FilteredSeed = new List <OpinionWord>(); foreach (var opinion in Opinions) { SentenceIndex = 0; SentencesInReview = SentencesSeparator(SentencesInReview, PositionOfReview); foreach (var sentence in SentencesInReview) { WordsInSentence = EachWordInSentence(WordsInSentence, SentencesInReview, SentenceIndex); var i = -1; foreach (var word in WordsInSentence) { i++; var tempWord = word.ToLower(); var opinionWord = new OpinionWord(tempWord, WordOrientation) { OpWord = tempWord, Orientation = WordOrientation }; if (PositiveWords.Contains(tempWord) || NegativeWords.Contains(tempWord)) { var position = i; WordOrientation = GetOpinionWordOrientation(tempWord, position, sentence); if (!OpinionLexicon.Contains(tempWord)) { FilteredSeed.Add(new OpinionWord(tempWord, WordOrientation) { OpWord = tempWord, Orientation = WordOrientation }); } else { FilteredSeed.Add(opinionWord); }//in documentation says that we have to add only oriantation..how to implement that? } } SentenceIndex++; Array.Clear(WordsInSentence, 0, WordsInSentence.Length); } PositionOfReview++; } return(FilteredSeed); }
public string FilterOutNegativeWords() { string filteredWord; string filteredContent = string.Empty; List <string> filteredContentList = new List <string>(); foreach (string word in ContentArray) { if (NegativeWords.Contains(word)) { filteredWord = FilterOutNegativeWord(word); filteredContentList.Add(filteredWord); } else { filteredContentList.Add(word); } } return(string.Join(" ", filteredContentList)); }
//Conjunction based extraction process 90% protected List <OpinionWord> ExtractConjunctionBasedOpinionWords() { FillPositiveWords(); FillNegativeWords(); PositionOfReview = 0; SentenceIndex = 0; ConjunctionList = new List <OpinionWord>(); foreach (var Opinion in Opinions) { SentenceIndex = 0; SentencesInReview = SentencesSeparator(SentencesInReview, PositionOfReview); foreach (var sentence in SentencesInReview) { WordsInSentence = EachWordInSentence(WordsInSentence, SentencesInReview, SentenceIndex); var i = -1; foreach (var word in WordsInSentence) { i++; var tempWord = word.ToLower(); var position = i; var opinionWord = new OpinionWord(tempWord, WordOrientation) { OpWord = tempWord, Orientation = WordOrientation }; //check if the opinion word is included in filteredSeed list var matches = FilteredSeed.Find(Didaxto => opinionWord.OpWord == tempWord); // var matches = FilteredSeed.Where(OpinionWord => OpinionWord.OpWord == tempWord); if (FilteredSeed.Contains(matches)) //matches.OfType<OpinionWord>().Equals(opinionWord) { if (position + 1 < WordsInSentence.Length) { if (Conjunctions.Contains(WordsInSentence[position + 1])) { tempWord = GetConjunctionBaseOpinionWord(tempWord, position, sentence); { if (PositiveWords.Contains(tempWord) || NegativeWords.Contains(tempWord)) { WordOrientation = GetOpinionWordOrientation(tempWord, position, sentence); if (!OpinionLexicon.Contains(tempWord)) { ConjunctionList.Add(new OpinionWord(tempWord, WordOrientation) { OpWord = tempWord, Orientation = WordOrientation }); } else { ConjunctionList.Add(new OpinionWord(tempWord, opinionWord.Orientation)); } } } } } } } } SentenceIndex++; Array.Clear(WordsInSentence, 0, WordsInSentence.Length); } PositionOfReview++; return(ConjunctionList); }
//Orientation=> if pos = true else false 80% protected bool GetOpinionWordOrientation(string word, int position, string sentence) { FillPositiveWords(); FillNegativeWords(); FillAdverbs(); FillComparatives(); FillConjunctions(); FillDecreasers(); FillFutureWords(); FillIncreasers(); FillVerbs(); FillNegations(); //{pos} if (PositiveWords.Contains(word)) { WordOrientation = true; } if (NegativeWords.Contains(word)) { WordOrientation = false; } if (position != 0) { //{pos} {pos} if (PositiveWords.Contains(WordsInSentence[position - 1])) { WordOrientation = true; } //{neg} {pos} if (NegativeWords.Contains(WordsInSentence[position - 1])) { WordOrientation = false; } if (position >= 2) { //{fut} {verb} {pos} if (FutureWords.Contains(WordsInSentence[position - 2]) && Verbs.Contains(WordsInSentence[position - 1]) && PositiveWords.Contains(WordsInSentence[position])) { WordOrientation = true; } //{pos} {neg} if (PositiveWords.Contains(WordsInSentence[position - 1]) && NegativeWords.Contains(WordsInSentence[position])) { WordOrientation = false; } //{decr} {comp} {pos} if (Decreasers.Contains(WordsInSentence[position - 2]) && Comparatives.Contains( WordsInSentence[position - 1]) && PositiveWords.Contains( WordsInSentence[position])) { WordOrientation = true; } if (position >= 3) { //{pos} {conj} {nego} {cpos} if (PositiveWords.Contains(WordsInSentence[position - 3]) && Conjunctions.Contains( WordsInSentence[position - 2]) && Negations.Contains( WordsInSentence[position - 1]) && PositiveWords.Contains( WordsInSentence[position])) { WordOrientation = true; } //{neg} {conj} {incr} {cneg} if (NegativeWords.Contains(WordsInSentence[position - 3]) && Conjunctions.Contains( WordsInSentence[position - 2]) && Increasers.Contains( WordsInSentence[position - 1]) && NegativeWords.Contains( WordsInSentence[position])) { WordOrientation = false; } } } } return(WordOrientation); }