2017-12-13 11 views
0

私は、インド企業のIPO(Initial Public Offering)に関する感情を研究するために、Twitterのデータを使用してPythonのテキストマイニングに取り組んでいます。それらに複数の言葉を含むつぶやきを抽出するために、私は助けが必要です。たとえば、私は "Mahindra"、 "Logistics"、 "IPO"の3つの単語すべてがそこにあります。 Pythonでストリーム関数を使ってこれを行う方法はありますか?テキストマイニング - Pythonのストリームを使用して複数の用語を同時に使用したつぶやき

私は答えを投稿していたので、あなたの質問にコメントすることができませんでした

if __name__ == '__main__': 

#This handles Twitter authetification and the connection to Twitter Streaming API 
l = StdOutListener() 
auth = OAuthHandler(consumer_key, consumer_secret) 
auth.set_access_token(access_token, access_token_secret) 


stream = Stream(auth, l) 
#This line filter Twitter Streams to capture data by the keywords: 'Mahindra' 'Logistics' 'IPO' 
stream.filter(track=['Mahindra,Logistics,IPO'])    

答えて

0

も私のコードを添付しています。

私はTwitter APIを調べていませんが、私には別の方法があります。 Twitter Scraperを使用して、多くのコーディングを行うことなく同じ結果を達成できます。

0

あなたのコードは、(不完全な)pythonフラグメントにしか見えませんが、それでも私にはよく似ています。 私はTwitterのストリームAPIからデータを取得するために次のスクリプトを使用します。

:次に、このようにそれを呼び出す
consumer_key = "7r..." 
consumer_secret = "gp..." 
access_token = "5Q..." 
access_secret = "a3..." 

# To run this code, first edit config.py with your configuration (Auth data), then install necessary modules, then: 
# 
# Call 
# 
# mkdir data 
# python twitter_stream_download.py -q apple -d data 
# 
# 
# It will produce the list of tweets for the query "apple" 
# in the file data/stream_apple.json 

# analyse tweets with jq: 
# cat stream_apple.json | jq -s '.[] | {user: .user.name} 

import tweepy 
from tweepy import Stream 
from tweepy import OAuthHandler 
from tweepy.streaming import StreamListener 
import time 
import argparse 
import string 
import config 
import json 

def get_parser(): 
    """Get parser for command line arguments.""" 
    parser = argparse.ArgumentParser(description="Twitter Downloader") 
    parser.add_argument("-q", 
         "--query", 
         dest="query", 
         help="Query/Filter", 
         default='-') 
    parser.add_argument("-l", 
         "--lang", 
         dest="languages", 
         help="Languages", 
         default='en') 

    parser.add_argument("-d", 
         "--data-dir", 
         dest="data_dir", 
         help="Output/Data Directory") 
    return parser 


class MyListener(StreamListener): 
    """Custom StreamListener for streaming data.""" 

    def __init__(self, data_dir=".", query=""): 
     query_fname = format_filename(query) 
     self.outfile = "%s/stream_%s.json" % (data_dir, query_fname) 
     print("Writing to '{}'").format(self.outfile) 


    def on_data(self, data): 
     try: 
      with open(self.outfile, 'a') as f: 
       f.write(data) 
       print(data) 
       return True 
     except BaseException as e: 
      print("Error on_data: %s" % str(e)) 
      time.sleep(5) 
     return True 

    def on_error(self, status): 
     if status_code == 420: 
      #returning False in on_data disconnects the stream 
      print("rate limited - to many connection attempts. Please wait.") 
      return False 
     else: 
      print(status) 
     return True 


def format_filename(fname): 
    """Convert file name into a safe string. 

    Arguments: 
     fname -- the file name to convert 
    Return: 
     String -- converted file name 
    """ 
    return ''.join(convert_valid(one_char) for one_char in fname) 


def convert_valid(one_char): 
    """Convert a character into '_' if invalid. 

    Arguments: 
     one_char -- the char to convert 
    Return: 
     Character -- converted char 
    """ 
    valid_chars = "-_.%s%s" % (string.ascii_letters, string.digits) 
    if one_char in valid_chars: 
     return one_char 
    else: 
     return '_' 

@classmethod 
def parse(cls, api, raw): 
    status = cls.first_parse(api, raw) 
    setattr(status, 'json', json.dumps(raw)) 
    return status 

if __name__ == '__main__': 
    parser = get_parser() 
    args = parser.parse_args() 
    auth = OAuthHandler(config.consumer_key, config.consumer_secret) 
    auth.set_access_token(config.access_token, config.access_secret) 
    api = tweepy.API(auth) 

    twitter_stream = Stream(auth, MyListener(args.data_dir, args.query)) 
    twitter_stream.filter(track=[args.query], languages=[args.languages], async=False) 

は、第一の出力ディレクトリを作成し、ファイルconfig.py

python twitter_stream_download.py --query #Logistics" -d data 
0

私はこの正確な問題を抱えていました(そして、私は1週間以上前のつぶやきを探す必要がありました)。そして、既存のパッケージが遅すぎるので、私はTwperと呼ばれる小さなパッケージを作ることに決めました。私はあなたがそれが面白いかもしれないと思う。 Readmeには、正確な問題を解決するための例があります。

免責事項:私はこのパッケージの著者であり、比較的新しいですが、うまくいけば助けになるでしょう。

関連する問題