Наивный байесовский анализ настроений поста в Facebook

Может ли кто-нибудь из вас помочь мне со следующей проблемой?

Моя цель — провести анализ настроений в комментариях к сообщению, чтобы увидеть, являются ли отзывы положительными или отрицательными.

Для этого у меня есть следующий код RestFB JAVA API:

Comments commentsPolarity; 
commentsPolarity = post.getComments();

                        if (commentsPolarity != null){
                            polarity = bayes.classify(Arrays.asList(commentsPolarity.toString())).getCategory();

                            ((BayesClassifier<String, String>) bayes).classifyDetailed(Arrays.asList(commentsPolarity.toString()));
                        }

Моя проблема в том, что каждый анализ возвращается как отрицательный, поэтому я проверяю, что находится в переменной «commentsPolarity», и обнаружил, что она содержит такие вещи, как:

"Comments[data=[Comment[attachment=null canRemove=true comments=null createdTime=Fri Jun 05 12:21:32 BRT 2015 from=CategorizedFacebookType[category=Artist id=1440092102975875 metadata=null name=Luis Henrique type=null] id=10153129969287326_10153133899852326 isHidden=null likeCount=0 likes=null message=Модель и отправка мне на работу, консультация с моим каталогом! =false canHide=false]] totalCount=4]"

Я считаю, что если я смогу получить только сообщение, моя проблема будет решена.

Я пытался использовать post.getComments().getData();, но тогда мой источник Flume перестает создавать окончательный файл с извлеченными данными.

Итак, кто-нибудь может подсказать, что делать?


person Gabriel Braga    schedule 09.06.2015    source источник


Ответы (1)


Объект commentsPolarity имеет массив с именем data, который содержит отдельные комментарии. Каждый из этих комментариев имеет свойство сообщения. Вам нужно перебрать что-то вроде commentsPolarity.getData(); и извлечь оттуда сообщение.
Воспринимайте это только как предположение, потому что я понятия не имею, как вы инициализировали переменную post .

person Martin Boyanov    schedule 09.06.2015
comment
Я разместил только часть кода, потому что это единственная часть, в которой не работает rsrs. Итак, если я правильно понял, мне нужно сделать 'commentsPolarity.getData();' после того, как я заполню его .getComments? - person Gabriel Braga; 09.06.2015
comment
Ага. Что-то вроде: List<String> list = new ArrayList<String>(); for (Comment comment: commentsPolarity.getData()){ list.add(comment.getMessage()); } - person Martin Boyanov; 10.06.2015
comment
Я пытался это сделать, но по какой-то причине FOR не зацикливается. Это дает мне только первый комментарий - person Gabriel Braga; 12.06.2015