Mengapa kedua API ini (API geo/pencarian Twitter) menghasilkan rangkaian hasil yang berbeda?

Saya mengambil tweet dari wilayah tertentu, tetapi saya mendapatkan hasil yang sangat berbeda. Cara pertama dengan memberikan garis bujur dan garis lintang dalam radius tertentu. Ini adalah garis bujur dan garis lintang dalam kota (Lahore,PK) dan menggambar radius 5 km. 5km adalah bagian yang sangat kecil dari kota ini. Dengan ini saya mengambil sekitar 60.000 tweet dalam satu hari.

Metode1

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)

Metode Kedua, saya menggunakan api pencarian geografis Twitter, dengan menanyakan Lahore, granularity=city. Sekarang saya mengambil tweet dari seluruh kota. tapi sekarang saya mendapat 1.200 tweet hanya dalam satu hari. Saya juga mengambil dari 7 hari terakhir dan hanya mendapatkan 15.000 tweet. Ini adalah perbedaan yang sangat besar karena seluruh kota hanya memberi saya 1.200 tweet dan sebagian kecil dari kota yang sama memberi saya lebih dari 60.000 tweet. Saya juga mencetak id tempat untuk memverifikasi bahwa saya mendapatkan poligon yang akurat. Ini adalah poligonnya (74.4493870, 31.4512220 74.4493870, 31.6124170 74.2675860, 31.6124170 74.2675860, 31.4512220) dan saya menggambarnya di https://www.keene.edu/ untuk memverifikasi. dan ya, ini adalah poligon akurat kota Lahore.

Metode2

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)

Sekarang beri tahu saya dulu mengapa ada perbedaan besar dalam hasilnya. Saya menggunakan versi Api standar.

Kedua, beri tahu saya Bagaimana (api) ini mengambil tweet. karena kurang dari 1% tweet diberi tag geografis dan juga tidak semua pengguna di profil sana memberikan kota dan negara yang tepat. Beberapa pengguna menyebutkan seperti Mars dan Bumi dll. Jadi Cara kerja api ini untuk mengambil tweet di wilayah tertentu. baik mencari dalam radius atau dengan menanyakan kota/negara. Saya mempelajari dokumen api Twitter dan dokumen tweepy untuk mempelajari cara kerja api ini di latar belakang untuk mengumpulkan tweet dari wilayah tertentu, tetapi saya tidak menemukan materi yang berguna.


person ahmad iqbal    schedule 09.06.2018    source sumber


Jawaban (1)


Alasan mengapa metode pertama memiliki hasil lebih banyak adalah jika tweet tidak memiliki informasi geografis apa pun, maka pencarian dengan geocode akan kembali ke profil (seperti yang sudah Anda duga) dan akan mencoba menyelesaikannya menjadi lintang/bujur.

Lihat dokumentasinya di sini:

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

Geolokalisasi: operator penelusuran “dekat” tidak tersedia di API, namun ada cara yang lebih tepat untuk membatasi kueri Anda berdasarkan lokasi tertentu menggunakan parameter geokode yang ditentukan dengan templat “lintang, bujur, radius”, misalnya, “37.781157,-122.398720,1mi”. Saat melakukan penelusuran geografis, API penelusuran pertama-tama akan berupaya menemukan Tweet yang memiliki garis lintang/bujur dalam geokode yang ditanyakan, dan jika tidak berhasil, API penelusuran akan berupaya menemukan Tweet yang dibuat oleh pengguna yang lokasi profilnya dapat di-geokode terbalik menjadi sebuah lintang/bujur dalam geokode yang ditanyakan, artinya dimungkinkan untuk menerima Tweet yang tidak menyertakan informasi lintang/bujur.

Di sisi lain, penelusuran dengan place_id sepertinya mencari tempat yang tepat. Berikut sintaks dasar panggilan api: https://developer.twitter.com/en/docs/tweets/search/guides/tweets-by-place

Tempat api bekerja sangat berbeda dari lintang/bujur di geocode. Halaman berikut menyoroti perbedaan antara dua jenis data lokasi yang dapat dikaitkan dengan tweet:

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

Informasi lokasi khusus Tweet terbagi dalam dua kategori umum:

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

objek geografis untuk informasi lebih lanjut).

...

Tweet dengan “Tempat” Twitter berisi poligon, yang terdiri dari 4 koordinat lon-lat yang menentukan area umum (“Tempat”) tempat pengguna mengeposkan Tweet. Selain itu, Tempat akan memiliki nama tampilan, jenis (misalnya kota, lingkungan), dan kode negara yang sesuai dengan negara di mana Tempat tersebut berada, di antara bidang lainnya.

Juga, bagian ini: perhatikan penggunaan jamak Place IDs

tempat:

Filter Tempat tertentu berdasarkan nama atau ID-nya. Untuk menemukan “Tempat” yang terkait dengan area tertentu, gunakan titik akhir reverse_geocode Twitter di REST API. Kemudian gunakan ID Tempat yang Anda temukan dengan operator tempat: untuk melacak Tweet yang menyertakan Tempat tertentu yang direferensikan. Jika Anda menggunakan nama Tempat dan bukan ID numerik, pastikan Anda mengutip nama apa pun yang menyertakan spasi atau tanda baca.

person Asad Iqbal    schedule 12.06.2018