{ "info": { "author": "Wesley Baugh", "author_email": "wesley@bwbaugh.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Text Processing :: Linguistic" ], "description": "InferTweet\r\n==========\r\n\r\nInfer information from Tweets. Useful for human-centered computing\r\ntasks, such as sentiment analysis, location prediction, authorship\r\nprofiling and more!\r\n\r\n|Build Status|_\r\n\r\nSentiment Analysis\r\n------------------\r\n\r\nWe provide three-class (positive, negative, objective-OR-neutral)\r\nsentiment analysis on tweets.\r\n\r\nExperiments are ongoing, but currently the system uses a hierarchical\r\nclassifier that first determines if a tweet is objective or subjective\r\n(subjectivity classifier), and then if subjective determine if the tweet\r\nis positive or negative (polarity classifier).\r\n\r\nWe use approximately 8,750 labeled training instances provided by the\r\n`Sentiment Analysis in\r\nTwitter `_ task for\r\nSemEval-2013. We then \"freeze\" the subjectivity classifier, as we\r\ncurrently haven't been able to incorporate additional high quality\r\nlabeled or unlabeled objective-OR-neutral tweets or text. However, we\r\ncontinue to train the polarity classifier through self-training on\r\napproximately 1 million unlabeled tweets that are likely to contain\r\nsentiment. The additional tweets were captured from Twitter if they had\r\na matching emoticon present in the text of the tweet.\r\n\r\nSemEval-2013\r\n~~~~~~~~~~~~\r\n\r\nAn early version of our system was entered in the SemEval-2013\r\ncompetition. Our simple system (Naive Bayes with unigrams + bigrams)\r\nscored 25th out of 48 submissions, which while not state-of-the-art is\r\nstill not too bad.\r\n\r\nThe evaluation metric was the average F-measure of the positive and\r\nnegative classes. Our system achieved an F-measure of ``0.5437``, while\r\nthe top system achieved ``0.6902``.\r\n\r\nResults of system for SemEval-2013\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n::\r\n\r\n Confusion table:\r\n gs \\ pred| positive| negative| neutral\r\n ---------------------------------------\r\n positive| 841| 233| 498\r\n negative| 74| 324| 203\r\n neutral| 276| 196| 1168\r\n\r\n\r\n Scores:\r\n class prec recall fscore\r\n positive (841/1191) 0.7061 (841/1572) 0.5350 0.6088\r\n negative (324/753) 0.4303 (324/601) 0.5391 0.4786\r\n neutral (1168/1869) 0.6249 (1168/1640) 0.7122 0.6657\r\n --------------------------------------------------------------------\r\n average(pos and neg) 0.5437\r\n\r\nIn the mean time, we have a lot more experimental ideas that may improve\r\nthe performance of our classifier, so it's time to get experimenting!\r\n\r\nRPC server\r\n~~~~~~~~~~\r\n\r\nThe sentiment analysis classifier can be loaded from file and served\r\nusing a RPC server. This allows the classifier to potentially be used by\r\nmany applications, as well as being able to stay loaded even if another\r\napplication that depends on the classifier needs to restart or update.\r\n\r\nWeb user interface\r\n~~~~~~~~~~~~~~~~~~\r\n\r\nWe have added a very simple web interface that allows users to query the\r\nsystem. Lots of upcoming features are planned for the web interface.\r\n\r\n**Known Bug:** If installing the package through ``pip`` or ``setup.py``\r\nthen the web interface files under ``web/static`` and ``web/templates``\r\nare not copied along with the installation. Therefore, either copy these\r\nfiles manually or run from the source directory.\r\n\r\nRESTful JSON API\r\n~~~~~~~~~~~~~~~~\r\n\r\nGET sentiment/classify\r\n^^^^^^^^^^^^^^^^^^^^^^\r\n\r\nResource URL\r\n''''''''''''\r\n\r\nhttp://.../api/sentiment/classify.json\r\n\r\nParameters\r\n''''''''''\r\n\r\n- text: String representing the document to be classified.\r\n\r\nResponse object fields\r\n''''''''''''''''''''''\r\n\r\n- text: String of the original input text.\r\n- label: String of the sentiment classification label.\r\n- confidence: Float of the confidence in the label.\r\n\r\nExample request\r\n'''''''''''''''\r\n\r\nGET\r\n``http://.../api/sentiment/classify.json?text=Today+is+March+30%2C+2013.``\r\n\r\n::\r\n\r\n {\r\n \"text\": \"Today is March 30, 2013.\",\r\n \"confidence\": 0.9876479882432573,\r\n \"label\": \"neutral\"\r\n }\r\n\r\n.. |Build Status| image:: https://travis-ci.org/bwbaugh/infertweet.png?branch=master\r\n.. _Build Status: https://travis-ci.org/bwbaugh/infertweet", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.github.com/bwbaugh/infertweet", "keywords": "", "license": "Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License", "maintainer": "", "maintainer_email": "", "name": "infertweet", "package_url": "https://pypi.org/project/infertweet/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/infertweet/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.github.com/bwbaugh/infertweet" }, "release_url": "https://pypi.org/project/infertweet/0.2/", "requires_dist": null, "requires_python": null, "summary": "Infer information from Tweets. Useful for human-centered computing tasks, such as sentiment analysis, location prediction, authorship profiling and more!", "version": "0.2" }, "last_serial": 793271, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "406903d4ae98f3f9ef98802db751da49", "sha256": "5130013d821accfbb2a196f152ca05cb06c749a511248714e7624bde3d7f58de" }, "downloads": -1, "filename": "infertweet-0.1.zip", "has_sig": false, "md5_digest": "406903d4ae98f3f9ef98802db751da49", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33835, "upload_time": "2013-03-22T07:31:27", "url": "https://files.pythonhosted.org/packages/1d/45/14a210ef5a048d2357252f1682ab37a3330d7b7f96b5b3d5bac64a3068e2/infertweet-0.1.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e1cad21b37afdf02d1755bd366e94828", "sha256": "eca37300a329aa0bc1370d18e7cfe36c4e6841ebda9003f7b8c75ce5e7d707a1" }, "downloads": -1, "filename": "infertweet-0.1.1.zip", "has_sig": false, "md5_digest": "e1cad21b37afdf02d1755bd366e94828", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34112, "upload_time": "2013-03-23T03:43:49", "url": "https://files.pythonhosted.org/packages/23/a0/42f2d9d108b32cc67ae19215f55ec020ba6744c865977cf0573f2f3f36c9/infertweet-0.1.1.zip" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "59e45f9b6cb8a5c27793b70edec0f776", "sha256": "23a4599396380beb08f95aee694d25c4cb493cfb0ca1b2297e794e866ce10376" }, "downloads": -1, "filename": "infertweet-0.2.zip", "has_sig": false, "md5_digest": "59e45f9b6cb8a5c27793b70edec0f776", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51842, "upload_time": "2013-05-09T05:41:27", "url": "https://files.pythonhosted.org/packages/98/26/608ad1bf7a80229f53d6273fae2e927aaa4e893bb91f021ddfafacc79dd5/infertweet-0.2.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "59e45f9b6cb8a5c27793b70edec0f776", "sha256": "23a4599396380beb08f95aee694d25c4cb493cfb0ca1b2297e794e866ce10376" }, "downloads": -1, "filename": "infertweet-0.2.zip", "has_sig": false, "md5_digest": "59e45f9b6cb8a5c27793b70edec0f776", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51842, "upload_time": "2013-05-09T05:41:27", "url": "https://files.pythonhosted.org/packages/98/26/608ad1bf7a80229f53d6273fae2e927aaa4e893bb91f021ddfafacc79dd5/infertweet-0.2.zip" } ] }