gpt4 book ai didi

python - 过滤从状态/过滤器(流式 API)收到的推文

转载 作者:太空狗 更新时间:2023-10-30 01:29:34 26 4
gpt4 key购买 nike

我正在跟踪 N 个不同的关键字(为简单起见,令 N=3)。所以在 GET statuses/filter 中,我会在“track”参数中给出 3 个关键字。

现在我将收到的推文可以来 self 提到的 3 个关键字中的任何一个。问题是我想解决哪个推文对应哪个关键字。即推文和关键字(在“track”参数中提到)之间的映射。

显然,如果不对收到的推文进行任何处理,就无法做到这一点。

所以我想知道进行此处理的最佳方法是什么?在推文的文本中搜索关键字?不区分大小写呢?如果同一关键字中有多个词,例如:“Katrina Kaif”,该怎么办?

我目前正在尝试制定一些正则表达式...

我在想最好的方法是使用与最初用于状态/过滤器 API 相同的逻辑(正则表达式等)。如何知道 Twitter API 状态/过滤器本身使用什么逻辑来将推文与关键字匹配?

建议?帮忙?

附言:我正在使用 Python、Tweepy、Regex、MongoDb/Apache S4(用于分布式计算)

最佳答案

我想到的第一件事是为每个关键字创建一个单独的流,并在一个单独的线程中启动它,如下所示:

from threading import Thread
import tweepy


class StreamListener(tweepy.StreamListener):
def __init__(self, keyword, api=None):
super(StreamListener, self).__init__(api)
self.keyword = keyword

def on_status(self, tweet):
print 'Ran on_status'

def on_error(self, status_code):
print 'Error: ' + repr(status_code)
return False

def on_data(self, data):
print self.keyword, data
print 'Ok, this is actually running'


def start_stream(auth, track):
tweepy.Stream(auth=auth, listener=StreamListener(track)).filter(track=[track])


auth = tweepy.OAuthHandler(<consumer_key>, <consumer_secret>)
auth.set_access_token(<key>, <secret>)

track = ['obama', 'cats', 'python']
for item in track:
thread = Thread(target=start_stream, args=(auth, item))
thread.start()

如果您仍然想在单个流中通过关键字自己区分推文,这里是 some info关于 twitter 如何使用 track 请求参数。有一些边缘情况可能会导致问题。

希望对您有所帮助。

关于python - 过滤从状态/过滤器(流式 API)收到的推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16602483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com