如何进行实时推文分类

问题描述 投票:0回答:1

我正在尝试进行实时推文分类。为此,我正在使用tweepy流类。我想

  • 获取一条推文,
  • 将其存储在数据库中,在我的情况下是一个文本文件。
  • 读取文本文件和
  • 对推文进行分类。

问题是我的系统继续获取并保存推文。它不会移至下一步。我该怎么办?

流代码

import tweepy
class MyStreamListener(tweepy.StreamListener):

    def on_status(self, status):
        if not status.text.startswith('RT'):
            if 'https://t.co' not in  status.text:
                text=status.text
                with open("Output.txt", "w",encoding='utf-8') as text_file:
                    text_file.write(text)

# Initializing the tokens
def run_stream():
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)

    api = tweepy.API(auth,wait_on_rate_limit=True)
    myStreamListener = MyStreamListener()
    myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener,tweet_mode= 'extended')
    myStream.filter(track=['corona'],languages=["en"],encoding='utf-8')

分类

def classify():
    f = open("Output.txt", "r",encoding="utf-8")
    return f.read(),clf.predict_proba(feat.transform([f.read()]))

运行功能

run_stream()
classify()

我面临的问题是系统继续运行第一个功能,而不移至下一个分类功能。

python twitter classification tweepy
1个回答
1
投票

来自http://docs.tweepy.org/en/latest/streaming_how_to.html

除非关闭连接,否则流不会终止,从而阻止线。 Tweepy在过滤器上提供了一个方便的is_async参数,因此流将在新线程上运行。例如

myStream.filter(track=['python'], is_async=True)

如果执行此操作,我怀疑您需要仔细管理对Output.txt的读写访问,否则,当文件包含部分写入操作时,您可能会读取该文件。最好使用专门构建的,线程安全的排队机制,例如Python queues

© www.soinside.com 2019 - 2024. All rights reserved.