Как извлечь твиты, связанные с конкретной страной? - PullRequest
0 голосов
/ 19 декабря 2018
    from tweepy.streaming import StreamListener
    from tweepy import OAuthHandler
    from tweepy import Stream
    import tweepy
    import textblob
    import re
    from textblob import TextBlob
    import pandas as pd     
    import numpy as np      

    ACCESS_TOKEN="XXXX"
    ACCESS_SECRET="XXXX"
    CONSUMER_KEY="XXXX"
    CONSUMER_SECRET="XXXX"

    def twitter_setup():
        """
        Utility function to setup the Twitter's API
        with our access keys provided.
        """
        # Authentication and access using keys:
        auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

        # Return API with authentication:
        api = tweepy.API(auth)
        return api
        extractor = twitter_setup()


    tweets = extractor.user_timeline(screen_name="realDonaldTrump", count=200)

    data = pd.DataFrame(data=[tweet.text for tweet in tweets], columns=['Tweets'])

data['len']  = np.array([len(tweet.text) for tweet in tweets])
data['ID']   = np.array([tweet.id for tweet in tweets])
data['Date'] = np.array([tweet.created_at for tweet in tweets])
data['Source'] = np.array([tweet.source for tweet in tweets])
data['Likes']  = np.array([tweet.favorite_count for tweet in tweets])
data['RTs']    = np.array([tweet.retweet_count for tweet in tweets])

def clean_tweet(tweet):
    '''
    Utility function to clean the text in a tweet by removing 
    links and special characters using regex.
    '''
    return ' '.join(re.sub("(@[A-Za-z0-9]+)|([^0-9A-Za-z \t])|(\w+:\/\/\S+)", " ", tweet).split())

def analize_sentiment(tweet):
    '''
    Utility function to classify the polarity of a tweet
    using textblob.
    '''
    analysis = TextBlob(clean_tweet(tweet))
    #print(analysis.sentiment.polarity)
    if analysis.sentiment.polarity > 0:
        return 1
    elif analysis.sentiment.polarity == 0:
        return 0
    else:
        return -1

data['SA'] = np.array([ analize_sentiment(tweet) for tweet in data['Tweets'] ])


display(data.head(200))

Я работаю над проектом, в этом проекте мы извлекаем твиты некоторых мировых лидеров, а затем попытаемся сравнить их отношения с другими странами на основе их комментариев в Твиттере.До сих пор мы извлекали твиты из аккаунта Дональда Трампа. Мы классифицировали твиты как позитивные и негативные, но передо мной стоит проблема, заключающаяся в том, как мы можем разделить твиты по стране.он / она написал в твиттере о какой-то стране, а остальные твиты игнорируются, так что мы можем связать только твиты со страной.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы можете загрузить список стран, таких как: github repo by marijn .Он также содержит список с национальностями github repo от marijn

Проверять за твит, встречается ли имя в списке (так что вам придется перебирать список).Вы можете добавить счетчик для каждой страны за твит.Добавьте эти контр-данные в виде столбца к вашему фрейму данных (аналогично вашему предыдущему подходу для анализа настроений).

Это просто идея, я пока не могу комментировать, потому что я новичок.

0 голосов
/ 19 декабря 2018

У меня недостаточно репутации, чтобы добавить комментарий, но вам нужно знать, что вы опубликовали все свои токены доступа, и это плохая идея.

...