小编Eug*_*Yan的帖子

如何通过tweepy保存json中的流媒体推文?

我通过在线课程学习了几个月的Python,并希望通过一个真实的迷你项目来进一步学习.

对于这个项目,我想从twitter流API收集推文并以json格式存储它们(虽然你可以选择保存关键信息,如status.text,status.id,我被告知最好的方法这样做是为了保存所有数据并在之后进行处理.但是,通过添加on_data(),代码就不再起作用了.有人能帮忙吗?我也对有关存储/处理推文的最佳方式的建议持开放态度!我的最终目标是能够根据人口统计变量(例如,国家/地区,用户资料年龄等)以及特定品牌(例如,Apple,HTC,Samsung)的情绪来跟踪推文.

此外,我还想尝试按位置和关键字过滤推文.我已经改编了如何将位置过滤器分别添加到tweepy模块中的代码.但是,虽然它在有少量关键字时有效,但在关键字数量增加时会停止.我认为我的代码效率低下.有没有更好的方法呢?

### code to save tweets in json###
import sys
import tweepy
import json

consumer_key=" "
consumer_secret=" "
access_key = " "
access_secret = " "

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
file = open('today.txt', 'a')

class CustomStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print status.text

    def on_data(self, data):
        json_data = json.loads(data)
        file.write(str(json_data))

    def on_error(self, status_code):
        print >> sys.stderr, 'Encountered error with status code:', status_code
        return True # Don't kill the stream

    def on_timeout(self): …
Run Code Online (Sandbox Code Playgroud)

python json tweepy

7
推荐指数
2
解决办法
2万
查看次数

如果出错,如何重新启动tweepy脚本?

我有一个python脚本,可以将与跟踪关键字相关的推文连续存储到文件中.但是,由于下面附加了错误,脚本会反复崩溃.如何编辑脚本以便自动重新启动?我见过很多解决方案,包括这个(异常后重启程序),但我不知道如何在我的脚本中实现它.

import sys
import tweepy
import json
import os

consumer_key=""
consumer_secret=""
access_key = ""
access_secret = ""

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
# directory that you want to save the json file
os.chdir("C:\Users\json_files")
# name of json file you want to create/open and append json to
save_file = open("12may.json", 'a')

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

        # self.list_of_tweets = []

    def on_data(self, tweet):
        print tweet
        save_file.write(str(tweet))

    def on_error(self, status_code):
        print …
Run Code Online (Sandbox Code Playgroud)

python restart tweepy

6
推荐指数
2
解决办法
7906
查看次数

使用中位数(而不是平均值)使用sklearn-KN​​N进行预测

当计算平均值 x最近邻时,Sklearn-KN​​N允许设置权重(例如,均匀,距离)。

相反,与预测的平均值,是否有可能与预测值(或许还有一个用户定义的函数)?

python knn scikit-learn

6
推荐指数
1
解决办法
1037
查看次数

Elasticsearch“more_like_this”特定于字段的查询

Elasticsearch 的“more_like_this”查询允许用户根据搜索文档 ID 查找相似文档。

我有一个查询,要查找与特定字段(即标题、品牌、类别名称)上的搜索文档相似的文档。

es.search(index=INDEX_NAME, body = {'query': {
"more_like_this" : {
    "fields" : ['title', 'brand', 'category_name'],
    "like" : [
    {
        "_index" : INDEX_NAME,
        "_type" : TYPE_NAME,
        "_id" : "8117769"
    }
    ],
    "min_term_freq" : 2,
    "max_query_terms" : 25
    }
}
})
Run Code Online (Sandbox Code Playgroud)

我的印象是,它将搜索文档的标题字段与其他文档标题字段、品牌与品牌、类别名称与类别相匹配。然而,结果似乎表明并非如此。相反,它似乎结合了搜索文档标题、品牌和类别字段中的文本,然后从中进行搜索。

有没有办法限制像这样的查询来匹配字段与字段,而不是组合字段并匹配所有字段?

对 more like this 行为的更多理解来自:Elasticsearch "More Like This" API vs. more_like_this query

更像这个 api 更进一步,允许提供文档的 id 以及字段列表。这些字段的内容将从该特定文档中提取,并用于对相同字段进行更像此的查询。这意味着生成的更像此查询的属性文本将包含先前提取的文本,并将在相同的字段上执行。正如您所看到的,more like this api 在后台执行更像此查询。

python elasticsearch

6
推荐指数
0
解决办法
1186
查看次数

Elasticsearch:具有多个字段的单个“更喜欢此”查询与具有单个字段的多个“更喜欢此”查询

Elasticsearch允许通过其“更多类似”(MLT)查询来搜索相似文档。我试图更好地理解和调整查询以更好地找到相似的文档。

在进行实验时,我发现来自多个字段的单个MLT查询的结果与每个字段一个的多个MLT查询的布尔值产生不同的结果。以下示例(被截断):

具有多个字段的单个MLT查询

es.search(index=INDEX_NAME, body = {'query': {
    "more_like_this" : {
        "fields" : ['title', 'category_name', 'brand'],
        "like" : []
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

具有单个字段的多个MLT查询

es.search(index=INDEX_NAME, body = {'query': {
    'bool': {
                'should': [
                    {'more_like_this' : {
                    'fields' : ['title'],
                    'like' : [],
                    }},

                    {'more_like_this' : {
                    'fields' : ['category_name'],
                    'like' : [],
                    }},

                    {'more_like_this' : {
                    'fields' : ['brand'],
                    'like' : [],
                    }},
                ]
            }
    }
})
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

我知道MLT查询将合并单个查询中列出的所有字段中的文本以搜索文档。但是,标题,类别名称和品牌字段中的文本没有重叠。因此,结果应相同。但是,结果却有所不同-多个MLT查询的效果更好。

如果这个问题没有直接的解决方法,我深表歉意。我希望弹性专家对如何改进返回的查询有更多的了解。

如果有时间,这是我在MLT上发布的上一个问题,但仍未得到解答:Elasticsearch特定于字段的“ more_like_this”查询

python elasticsearch

5
推荐指数
1
解决办法
1081
查看次数

标签 统计

python ×5

elasticsearch ×2

tweepy ×2

json ×1

knn ×1

restart ×1

scikit-learn ×1