2017-12-13 26 views
0

저는 인도 기업용 IPO (Initial Public Offering)에 대한 정서를 연구하기 위해 트위터 데이터를 사용하여 파이썬에서 텍스트 마이닝 작업을하고 있습니다. 그 (것)들에있는 다수 기간 - 모두를 포함하는 짹짹를 추출하기 위하여 나는 도움을 필요로한다. 예를 들어, "Mahindra", "Logistics"및 "IPO"라는 세 단어가 모두 포함 된 트윗을 원합니다. 파이썬에서 스트림 함수를 사용하여이를 수행 할 수있는 방법이 있습니까?텍스트 마이닝 - 파이썬에서 스트림을 사용하여 여러 용어를 동시에 사용하는 짹짹 달기

나는 내 코드는

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

코드가 불완전한 파이썬 조각 인 것처럼 보이지만 여전히 나에게 친숙한 모양입니다. 다음과 같이 호출

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 :

을 나는 트위터 스트림 API에서 데이터를 가져 오기 위해 다음 스크립트를 사용하여
python twitter_stream_download.py --query #Logistics" -d data 
0

나는이 정확한 문제점을 가지고 있었고 (나는 1 주일 넘은 트윗을 찾아야했다.) 그리고 기존 패키지가 너무 느려서 Twper이라는 작은 패키지를 만들기로 결정했습니다. 나는 네가 그걸 흥미로울 것 같아. Readme에는 정확한 문제를 해결하는 예제가 있습니다.

면책 조항 : 본인은이 패키지의 저자이며 상대적으로 새 것이지만 잘하면 도움이 될 것입니다.