Dans mon entreprise, nous avons un produit qui fait cela et qui est également très performant. J'ai fait la plupart des travaux sur ce produit. Je peux vous en donner une brève idée :
Vous devez diviser le paragraphe en phrases, puis diviser chaque phrase en sous-phrases plus petites - en utilisant des virgules, des tirets, des points-virgules, des deux-points, des " et ", des " ou ", etc. Dans certains cas, chaque sous-phrase exprimera un sentiment totalement différent.
Certaines phrases, même si elles sont divisées, devront être réunies.
Ex : Le produit est étonnant, excellent et fantastique.
Nous avons développé un ensemble complet de règles sur le type de phrases qui doivent être divisées et celles qui ne doivent pas l'être (sur la base des balises POS des mots).
Au premier niveau, vous pouvez utiliser l'approche du sac de mots, c'est-à-dire avoir une liste de mots/phrases positifs et négatifs et les vérifier dans chaque sous phrase. En faisant cela, regardez également les mots de négation comme " pas ", " non ", etc. qui changeront la polarité de la phrase.
Même dans ce cas, si vous ne trouvez pas le sentiment, vous pouvez faire une bayes naïfs approche. Cette approche n'est pas très précise (environ 60%). Mais si vous l'appliquez uniquement aux phrases qui n'ont pas passé le premier ensemble de règles, vous pouvez facilement atteindre une précision de 80-85%.
La partie importante est la liste de mots positifs/négatifs et la façon dont vous divisez les choses. Si vous le souhaitez, vous pouvez aller encore un peu plus loin en mettant en place HMM (modèle de Markov caché) ou CRF (Champs aléatoires conditionnels). Mais je ne suis pas un pro de la PNL et quelqu'un d'autre peut vous renseigner sur cette partie.
Pour les curieux, nous avons implémenté tout cela en python avec NLTK et le module Reverend Bayes.
Assez simple et qui gère la plupart des phrases. Vous pouvez cependant rencontrer des problèmes lorsque vous essayez de baliser du contenu provenant du Web. La plupart des gens n'écrivent pas de phrases correctes sur le Web. La gestion du sarcasme est également très difficile.
7 votes
Comment géreriez-vous le sarcasme, ou d'autres figures de style compliquées dans de tels algorithmes ? Est-ce même possible ?
0 votes
Vous pouvez rapidement voir certains résultats de l'analyse des sentiments sur vos données en utilisant ce service web par nltk. corenlp.run . Mais le classificateur de sentiments n'a été formé qu'à partir des données de sentiments de Twitter et de critiques de films. Donc, si votre domaine de problème contient des mots significativement différents des corpus ci-dessus, vous pourriez ne pas obtenir les résultats souhaités.