2017-07-21 2 views
0

Je fais des recherches sur les applications existantes de l'analyseur de sentiment. Je suis actuellement en train de regarder Stanford CoreNlp/Sentiment Analysis 3.8.0 et ce que j'ai remarqué sur mes données de test est que les prédictions semblent biaisées vers le négatif. Voici quelques exemples qui reviennent Négatif:Standford Sentiment Anlysis est biaisé vers négatif?

  1. NY est où je veux finalement passer ma carrière d'enseignant et l'opportunité était trop bonne pour refuser. - Négatif
  2. Je comprends que c'est un devoir d'être un enseignant efficace et influent, mais j'ai hâte de mettre en avant les heures avant, pendant et après les heures d'école pour m'assurer que je suis une ressource disponible pour mes élèves. - Négatif
  3. De mon expérience personnelle, j'ai appris beaucoup de compétences de vie nécessaires dans la salle de classe et mes enseignants les plus influents ont été mes motivateurs et partisans. - Negative

J'ai vérifié et il n'y a qu'un seul modèle possible à utiliser (donc je ne pense pas qu'il y ait des leviers à pousser là-bas - je ne veux pas former un modèle). Je pourrais utiliser un POS différent/meilleur (peut-être?) Et cela pourrait me donner une prédiction différente, mais je suis un peu mystifié car tous les blogs/commentaires que j'ai lus sur la bibliothèque de Stanford étaient positifs et mes résultats sont si mauvais. Est-ce que je manque quelque chose?

Le code:

Properties props = new Properties(); 
    props.setProperty("annotators", "tokenize, ssplit, parse, sentiment"); 
    StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
    Annotation document = pipeline.process(text); 
    pipeline.annotate(document); 

    List<CoreMap> sentences = document.get(CoreAnnotations.SentencesAnnotation.class); 
    int mainSentiment=0; int longest = 0; 
    SimpleMatrix matrix = null; 
    for (CoreMap sentence : sentences) { 
     String s_sentiment = sentence.get(SentimentCoreAnnotations.SentimentClass.class); 

     Tree tree = sentence 
       .get(SentimentCoreAnnotations.SentimentAnnotatedTree.class); 
     int sentiment = RNNCoreAnnotations.getPredictedClass(tree); 
     matrix = RNNCoreAnnotations.getPredictions(tree); 

     System.out.println(sentence); 
     System.out.println(sentiment + "-" +s_sentiment + "\t" + matrix.elementMaxAbs()); 
    } 

Les valeurs possibles pour les scores: 0 Très négatif 1 négatif 2 Neutre 3 Positive 4 Très positif

Si vous utilisez cette bibliothèque dans une production application trouvez-vous les résultats fiables pour conduire des actions outre de lui? Merci!

Répondre

0

Tout d'abord, de la version 3.3.1 il n'y a pas un seul modèle de passer comme argument pour the option sentiment.model mais deux (malheureusement, cela ne semble pas être mentionné nulle part sur le site):

  • Un modèle à quatre classes ( Très négatif, négatif, Neutre, positive, très positif) edu/stanford/nlp/models/sentiment/sentiment.ser.gz
  • Un modèle à deux classes (négative, Neutre, positive) edu/stanford/nlp/models/sentiment/sentiment.binary.ser.gz

Ce ne fait pas partie du modèle standard établi, mais plutôt the additional models-english model; Pour l'utiliser, vous devez l'obtenir, ce qui pourrait être documenté un peu mieux. La dépendance d'artefact Maven approprié serait

<dependency> 
     <groupId>edu.stanford.nlp</groupId> 
     <artifactId>stanford-corenlp</artifactId> 
     <version>${stanford-corenlp.version}</version> 
     <classifier>models-english</classifier> 
     <scope>runtime</scope> 
</dependency> 

Comme décrit dans their 2013 paper, ils ont utilisé un corpus de critiques de films pour créer leur modèle (s), et il est très possible que ces données sont sous-optimales pour l'analyse du type de langue que vous êtes: Par exemple, looking for too good to refuse in their corpus gives no results at all malgré le fait qu'il soit un terme relativement commun.J'ai moi-même aussi essayé d'utiliser leurs modèles pré-formés pour analyser le langage conversationnel avec des résultats qui n'étaient pas mauvais mais qui n'étaient pas étonnants non plus: L'exactitude de créer juste une liste de modèles positifs et négatifs et de les chercher dans mes textes n'était pas significativement différente de celle de l'utilisation de l'analyseur de sentiment.

+0

Merci pour votre réponse! J'utilise la version 3.8 et il ne reconnaît pas ce chemin pour le second modèle. J'ai aussi cloné leur référentiel et je ne vois plus le second modèle. Peut-être qu'ils ont décidé de s'en débarrasser. – Poc

+0

C'est parce que cela ne fait pas partie du jeu de modèles standard; S'il vous plaît voir mon edit. – errantlinguist

+0

@Poc cette réponse vous a-t-elle aidé? Si oui, je serais très reconnaissant de votre [acceptation et/ou upvoting] (https://stackoverflow.com/help/someone-answers). – errantlinguist