def get_sentiment_value(tweets):
    data = twitterSentiment.StructureStatusesData(tweets)
    structured_data = data.getTweet()

    sentiment = twitterSentiment.SentimentScore(structured_data)
    sentiment_value = sentiment.getSentimentClassification()
    return round(sentiment_value, 2)
Example #2
0
    def seed_tweets(self, request):
        twitter_client_key = config('TWITTER_CLIENT_KEY')
        twitter_client_secret = config('TWITTER_CLIENT_SECRET')
        os.environ.setdefault("TWITTER_CLIENT_KEY", twitter_client_key)
        os.environ.setdefault("TWITTER_CLIENT_SECRET", twitter_client_secret)

        api = twitterSentiment.API()
        today = date.today()

        for i in range(7):
            current_day = today - timedelta(days=i)

            tweet = api.querySearch(q='covid', geocode=None, lang='en', result_type='recent', count=100,
                                    until=current_day.strftime('%Y-%m-%d'),
                                    since_id=None, max_id=None, include_entities=False, tweet_mode="extended",
                                    return_json=True)
            data = twitterSentiment.StructureStatusesData(tweet)

            for item in tweet['statuses']:
                Tweet.objects.create(id=item['id'], text=item['full_text'], created_at=item['created_at'])

            structured_tweets = data.getTweet()
            sentiment = twitterSentiment.SentimentScore(structured_tweets)
            score = sentiment.getSentimentClassification()
            tweet_score_id = int(f'{current_day.day}{current_day.month}{current_day.year}')
            TweetScore.objects.create(id=tweet_score_id, tweet_score=score, date=current_day)

        return Response(1)
Example #3
0
    def search(self, request):
        nltk.data.path.append("./venv/nltk")
        twitter_client_key = config('TWITTER_CLIENT_KEY')
        twitter_client_secret = config('TWITTER_CLIENT_SECRET')
        os.environ.setdefault("TWITTER_CLIENT_KEY", 'X8CEgZEOMZkHHrHKYy3b5MFZo')
        os.environ.setdefault("TWITTER_CLIENT_SECRET", '5FJHXLfWPB18eMFB89ceCjRLX8sCxey9Lt0fRYzf6fBrw0lL2Z')

        api = twitterSentiment.API()
        today = date.today()

        current_day = today

        tweet = api.querySearch(q='covid ' + request.query_params['keyword'], geocode=None, lang='en',
                                result_type='recent', count=1000,
                                until=current_day.strftime('%Y-%m-%d'),
                                since_id=None, max_id=None, include_entities=False, tweet_mode="extended",
                                return_json=True)
        data = twitterSentiment.StructureStatusesData(tweet)

        structured_tweets = data.getTweet()

        tweets = []
        for item in structured_tweets[:100]:
            tweets.append({'text': item['full_text']})
        sentiment = twitterSentiment.SentimentScore(structured_tweets)
        score = sentiment.getSentimentClassification()

        texts = ''
        for tweet in tweets:
            texts += tweet['text'] + ' '

        tokenizer = RegexpTokenizer(r'\w+')
        allWords = tokenizer.tokenize(texts)
        allWordDist = nltk.FreqDist(w.lower() for w in allWords)
        stopwords = nltk.corpus.stopwords.words('english')
        allWordExceptStopDist = nltk.FreqDist(w.lower() for w in allWords if w not in stopwords)

        filtered_words = {key: value for key, value in allWordExceptStopDist.items() if value >= 5}

        excluded_words = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "15", "23", "19", "a", "the", "it",
                          "me",
                          "my", "we", "and", "in", "us", "33", "https", "http", "co", "i", "rt", "get"]
        for item in excluded_words:
            filtered_words.pop(item, None)

        sa = sorted(filtered_words.items(), key=lambda x: x[1], reverse=True)
        data_sorted = {k: v for k, v in sorted(filtered_words.items(), key=lambda x: x[1], reverse=True)}

        return Response({'tweets': tweets, 'tweet_score': score, 'keys': list(data_sorted.keys())[:20],
                         'values': list(data_sorted.values())[:20]})
Example #4
0
 def testGetUser(self):
     structured_data = twitterSentiment.StructureStatusesData(self.search)
     user = structured_data.getUser()
     self.assertEqual(12, len(user[0]))
Example #5
0
 def testGetTweets(self):
     structured_data = twitterSentiment.StructureStatusesData(self.search)
     tweet = structured_data.getTweet()
     self.assertGreaterEqual(11, len(tweet[0]))
Example #6
0
 def testGetData(self):
     structured_data = twitterSentiment.StructureStatusesData(self.search)
     data = structured_data.getData()
     self.assertEqual(3, len(data))