Почему эти два API (Twitter Geo / Search API) возвращают разные наборы результатов? - PullRequest
0 голосов
/ 10 июня 2018

Я получаю твиты из определенного региона, но получаю очень разные наборы результатов.Первый метод, давая долготу и широту в пределах данного радиуса.Это долгота и широта в черте города (Лахор, ПК) и радиус 5 км.5 км это очень маленькая часть этого города.Этим я получил около 60 000 твитов за один день.

Method1

import tweepy
consumer_key= 'xxxxxxxxxxxxxx'
consumer_secret= 'xxxxxxxxxxxxx'
access_token='xxxxxxxxxxxxxxx'
access_token_secret='xxxxxxxxxxxxxxxxxxxx'
api = tweepy.API(auth,wait_on_rate_limit = Truewait_on_rate_limit_notify= True)
public_tweets = tweepy.Cursor(api.search, count=100, geocode="31.578871,74.305184,5km",since="2018-06-09",show_user = True,tweet_mode="extended").items()
for tweet in public_tweets:
    print(tweet.full_text)

Второй метод, я использовал твиттер гео поиск API, запросив Lahore, granularity = "city".Теперь я получаю твиты всего города.но теперь я получаю 1200 твитов только за один день.Я также получил от прошлых 7 дней и получаю только 15 000 твитов.Это очень большая разница, что весь город дает мне только 1200 твитов, а небольшая часть того же города дает мне более 60 000 твитов.Я также печатаю идентификатор места, чтобы убедиться, что я получаю точные полигоны.Это полигоны (74.4493870, 31.4512220, 74.4493870, 31.6124170, 74.2675860, 31.6124170, 74.2675860, 31.4512220), и я проверяю их на https://www.keene.edu/ для проверки.и да, это точные полигоны города Лахор.

Method2

import tweepy
consumer_key= 'xxxxxxxxxxxxxx'
consumer_secret= 'xxxxxxxxxxxxx'
access_token='xxxxxxxxxxxxxxx'
access_token_secret='xxxxxxxxxxxxxxxxxxxx'
api = tweepy.API(auth,wait_on_rate_limit = Truewait_on_rate_limit_notify= True)

places = api.geo_search(query="Lahore", granularity="city")

for place in places:    
    print("placeid:%s" % place)
public_tweets = tweepy.Cursor(api.search, count=100,q="place:%s" % place.id,since="2018-06-09",show_user = True,tweet_mode="extended").items()
for tweet in public_tweets:
    print(tweet.full_text)

Теперь сначала скажите мне, почему в результате есть огромная разница.Я использую стандартную версию Api.

Во-вторых, расскажите мне, как эти (API) получают твиты.потому что менее 1% твитов имеют геотеги, а также не каждый пользователь в своем профиле указывает точный город и страну.Некоторые пользователи упоминают, как Марс, Земля и т. Д. Итак, как эти API работают для получения твитов в определенном регионе.либо поиск в радиусе, либо путем запроса города / страны.Я изучал твиты api и tweepy, чтобы изучить, как эти API работают в фоновом режиме, собирая твиты определенного региона, но я не нашел никакого полезного материала.

1 Ответ

0 голосов
/ 12 июня 2018

Причина, по которой первый метод дает больше результатов, заключается в том, что если твит не имеет геоинформации, поиск с геокодом откатится к профилю (как вы уже догадались) и попытается преобразовать его в широту / долготу.

См. Документацию здесь:

https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators.html

Геолокация: оператор поиска «рядом» недоступен в API, но есть болееточный способ ограничить ваш запрос заданным местоположением, используя параметр геокода, указанный в шаблоне «широта, долгота, радиус», например, «37.781157, -122.398720,1mi».При проведении гео-поиска API поиска сначала попытается найти твиты с широтой / долготой в запрашиваемом геокоде, а в случае неудачи попытается найти твиты, созданные пользователями, местоположение профиля которых может быть геокодировано в обратном направлении.lat / long в запрашиваемом геокоде, что означает, что можно получать твиты, которые не содержат информацию lat / long.

С другой стороны, поиск с помощью place_id, похоже, ищет именно это место.Вот основной синтаксис вызова API: https://developer.twitter.com/en/docs/tweets/search/guides/tweets-by-place

Место API работает в геокоде совсем не так, как lat / long.Следующая страница проливает свет на различия между двумя типами данных о местоположении, которые могут быть связаны с твитом:

https://developer.twitter.com/en/docs/tutorials/filtering-tweets-by-location

Информация о местоположении, относящаяся к твиту, подразделяется на две основные категории:

Tweets with a specific latitude/longitude “Point” coordinate
Tweets with a Twitter “Place” (see our blog post on Twitter Places: More Context For Your Tweets and our documentation on Twitter

геообъекты для получения дополнительной информации).

...

Твиты с твиттером «Место» содержат многоугольник, состоящий из 4 координат lon-latкоторые определяют общую область («Место»), из которой пользователь публикует твит.Кроме того, место будет иметь отображаемое имя, тип (например, город, район) и код страны, соответствующий стране, в которой находится место, а также другие поля.

Кроме того, этот раздел: оплатаобратите внимание на множественное использование Place IDs

место:

Фильтр для определенных мест по их названию или идентификатору.Чтобы обнаружить «Места», связанные с определенной областью, используйте конечную точку Twitter_geocode в API REST.Затем используйте идентификаторы мест, которые вы найдете с оператором place: для отслеживания твитов, которые включают конкретное место, на которое ссылаются.Если вы используете название места, а не числовой идентификатор, убедитесь, что в кавычках указаны имена, содержащие пробелы или знаки пунктуации.

...