Comment former l'outil d'analyse de sentiment PNL de Stanford
L'enfer tout le monde! Je suis à l'aide de la Stanford de Base de la PNL paquet et mon objectif est d'effectuer l'analyse des sentiments sur un flux de tweets.
À l'aide de l'analyse de sentiment de l'outil est renvoie une très mauvaise analyse de texte de "l'attitude" .. beaucoup de points positifs sont étiquetés neutre, de nombreux aspects négatifs nominale positive. Je suis allé de l'avant un acquis de plus d'un million de tweets dans un fichier texte, mais je n'ai pas la moindre idée de comment fait train l'outil et de créer mon propre modèle.
Lien de Stanford, l'Analyse des Sentiments page
"Modèles peuvent être recyclés à l'aide de la commande suivante à l'aide de la PTB format dataset:"
java -mx8g edu.stanford.nlp.sentiment.SentimentTraining -numHid 25 -trainPath train.txt -devPath dev.txt -train -model model.ser.gz
Échantillon de dev.txt (4 représente la polarité de 5 ... 4/5 positif)
(4 (4 (2 A) (4 (3 (3 warm) (2 ,)) (3 funny))) (3 (2 ,) (3 (4 (4 engaging) (2 film)) (2 .))))
Échantillon de test.txt
(3 (3 (2 If) (3 (2 you) (3 (2 sometimes) (2 (2 like) (3 (2 to) (3 (3 (2 go) (2 (2 to) (2 (2 the) (2 movies)))) (3 (2 to) (3 (2 have) (4 fun))))))))) (2 (2 ,) (2 (2 Wasabi) (3 (3 (2 is) (2 (2 a) (2 (3 good) (2 (2 place) (2 (2 to) (2 start)))))) (2 .)))))
Échantillon de train.txt
(3 (2 (2 The) (2 Rock)) (4 (3 (2 is) (4 (2 destined) (2 (2 (2 (2 (2 to) (2 (2 be) (2 (2 the) (2 (2 21st) (2 (2 (2 Century) (2 's)) (2 (3 new) (2 (2 ``) (2 Conan)))))))) (2 '')) (2 and)) (3 (2 that) (3 (2 he) (3 (2 's) (3 (2 going) (3 (2 to) (4 (3 (2 make) (3 (3 (2 a) (3 splash)) (2 (2 even) (3 greater)))) (2 (2 than) (2 (2 (2 (2 (1 (2 Arnold) (2 Schwarzenegger)) (2 ,)) (2 (2 Jean-Claud) (2 (2 Van) (2 Damme)))) (2 or)) (2 (2 Steven) (2 Segal))))))))))))) (2 .)))
J'ai deux questions à l'avenir.
Quelle est la signification et de la différence entre chaque fichier? Train.txt/Dev.txt/Test.txt ?
Comment puis-je former mon propre modèle avec un son brut, unparsed fichier texte plein de tweets?
Je suis très nouveau à la PNL donc, si je suis absent de toute information requise ou quoi que ce soit, veuillez critique! Merci!!!!
source d'informationauteur Jordan H
Vous devez vous connecter pour publier un commentaire.
C'est le standard de la machine de l'apprentissage de la terminologie. Le train est utilisé pour (surprise, surprise) former un modèle. Le développement de l'ensemble est utilisé pour ajuster les paramètres du modèle peuvent avoir. Ce que vous faire est de choisir la valeur d'un paramètre, former un modèle sur l'ensemble de la formation, et ensuite, vérifiez comment le modèle appris sur le développement de l'ensemble. Vous ensuite de choisir la valeur du paramètre et répétez. Cette procédure vous aide à trouver raisonnable des valeurs de paramètre pour votre modèle.
Une fois cela fait, vous passez à l'essai de la manière dont le modèle n'sur le jeu de test. C'est invisible- votre modèle n'a jamais rencontré aucun de ces données avant. Il est important que le jeu de test est distincte de la formation et le développement, autrement vous sont effectivement évaluation d'un modèle sur des données qu'il a vu auparavant. Ce serait une erreur car il ne sera pas vous donner une idée de la façon dont le modèle n'a vraiment.
Vous ne pouvez pas et vous ne devriez pas le train à l'aide d'un unparsed ensemble de documents. Tout le point de la récursivité modèle de profondeur (et la raison pour laquelle il effectue donc), c'est qu'il peut apprendre de le sentiment annotations à chaque niveau de l'arbre d'analyse. La phrase que vous avez donné ci-dessus peut être formaté comme ceci:
Généralement, d'un sentiment, d'un analyseur de sont formés au niveau du document annotations. Vous n'avez qu'un score, et ce score s'applique à l'ensemble du document, en ignorant le fait que les phrases dans le document peuvent exprimer différents sentiments. L'équipe a mis beaucoup d'efforts dans l'annotation de chaque phrase dans le document de sentiment. Par exemple, le mot
film
sur son propre est neutre dans le sentiment:(2 film)
. Toutefois, le membre de phraseengaging film
est très positif:(4 (4 engaging) (2 film)) (2 .)
Si vous avez étiqueté tweets, vous pouvez utiliser tout autre document au niveau du sentiment de classificateur. Le le sentiment d'analyse le tag sur stackoverflow a déjà de très bonnes réponses, je ne vais pas les répéter ici.
PS Avez-vous l'étiquette de la les tweets que vous avez? Tous les 1 millions? Si vous l'avez fait, je tiens à vous payer beaucoup d'argent pour ce fichier 🙂
Le code Java:
BuildBinarizedDataset -> [http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/sentiment/BuildBinarizedDataset.html
SentimentTraining -> http://nlp.stanford.edu/nlp/javadoc/javanlp/edu/stanford/nlp/sentiment/SentimentTraining.html
Pour ceux qui code en C#, j'ai converti la Java de la source dans les deux fichiers de code qui devrait rendre la compréhension de ce processus beaucoup plus simple.
https://arachnode.net/blogs/arachnode_net/archive/2015/09/03/buildbinarizeddataset-and-sentimenttraining-stanford-nlp.aspx
Si cela peut aider, j'ai obtenu le code C# de Arachnode de travail très facilement - un tweak ou deux pour obtenir le droit de chemins d'accès pour les modèles et ainsi de suite, mais ensuite, il fonctionne très bien. Ce qui manquait, c'était quelque chose à propos de le bon format pour les fichiers d'entrée. C'est dans la Javadoc, mais pour la référence, pour BuildBinarizedDataset c'est quelque chose comme:
Bâtiment qui est assez trivial, en fonction de ce que vous êtes en commençant par (une base de données, fichier Excel, peu importe)