2013-04-07 2 views
-5

Я делаю проект в C#, и я ищу код, который может помочь мне проверить, что любое предложение положительное или отрицательное или неопределенное на основе смайликов.поиск положительный или отрицательный на основе смайликов C#

Для примера:

  1. Я люблю свою страну :) - (положительный), потому что она содержит счастливый смайлик
  2. Я люблю свою страну :(- (отрицательный), поскольку она содержит грустный смайлик
  3. погоды Хорошо :(:) - (неопределенный), потому что он содержит два смайлика, поэтому неясно сказать, что это положительно или отрицательно.
  4. Я не хочу ходить в колледж :(:) :) - (положительный) потому что он содержит два счастливых смайлика и один грустный.

Моя область проекта - анализ настроений.

+0

python и java имеют библиотеки. вам может понадобиться написать свой собственный, см. этот q для ссылки: http://stackoverflow.com/questions/4199441/best-algorithmic-approach-to-sentiment-analysis – MatthewMartin

+3

Это не настоящий вопрос программирования, вы просто спрашивать, как делать что-то, а не как решить проблему и т. д .; вы сами пытались решить это? Вы даже просмотрели любые результаты поиска для «как искать строку»? – Clint

+0

Вы можете считать «)» и «(», чтобы оценить положительный коэффициент. – Casperah

ответ

1

Использование Regex.Matches

var upScore = Regex.Matches(input, @":\)").Count; 
var downScore = Regex.Matches(input, @":\(").Count; 
var totalScore = upScore - downScore; 

Хотя это плохая практика использовать побочные эффекты в MatchEvaluator, вы можете также использовать Regex.Replace, чтобы сделать один проход через строку:

var score = 0; 
MatchEvaluator match = m => 
{ 
    score += m.Value[1] == ')' ? 1 : -1; 
    return m.Value; 
}; 
Regex.Replace(input, ":[()]", match); 
+0

Это могло бы работать, если ** a) ** шаблон регулярного выражения ** b) ** порядок параметров был правильным. – I4V

+0

Но у него все еще есть некоторые ошибки. Угадай где? – I4V

+0

@ I4V получил его. спасибо, что поддержал меня честно –

2

Другие регулярные выражения ;)

string input = "I don't want to go to College :(:) :) "; 

var score = Regex.Matches(input, @"(?<a>:\))|(?<b>:\()") 
       .Cast<Match>() 
       .Select(m => m.Groups["a"].Success ? 1 : -1) 
       .Sum(); 
+0

Мне это нравится. +1 за отсутствие побочных эффектов. –

 Смежные вопросы

  • Нет связанных вопросов^_^