เหตุใด API ทั้งสองนี้ (twitter geo/search API) จึงส่งคืนชุดผลลัพธ์ที่แตกต่างกัน

ฉันกำลังดึงทวีตจากภูมิภาคใดภูมิภาคหนึ่ง แต่ฉันได้รับชุดผลลัพธ์ที่แตกต่างกันมาก วิธีแรกโดยให้ลองจิจูดและละติจูดภายในรัศมีที่กำหนด นี่คือลองจิจูดและละติจูดภายในเมือง (ละฮอร์, พีเค) และวาดรัศมี 5 กม. 5 กม. เป็นส่วนเล็ก ๆ ของเมืองนี้ จากสิ่งนี้ ฉันดึงข้อมูลทวีตได้ประมาณ 60,000 ทวีตในหนึ่งวัน

วิธีที่ 1

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)

วิธีที่สอง ฉันใช้ twitter geo search api โดยสอบถาม Lahore, granularity=city ตอนนี้ฉันกำลังดึงทวีตของคนทั้งเมือง แต่ตอนนี้ฉันได้รับ 1,200 ทวีตเพียงวันเดียวเท่านั้น ฉันดึงข้อมูลจาก 7 วันที่ผ่านมาและได้รับทวีตเพียง 15,000 รายการเท่านั้น นี่เป็นข้อแตกต่างที่ยิ่งใหญ่มากที่ทั้งเมืองให้ทวีตกับฉันเพียง 1,200 ทวีต และส่วนเล็กๆ ในเมืองเดียวกันให้ทวีตฉันมากกว่า 60,000 ทวีต ฉันยังพิมพ์รหัสสถานที่เพื่อยืนยันว่าฉันได้รับรูปหลายเหลี่ยมที่แม่นยำ เหล่านี้คือรูปหลายเหลี่ยม ( 74.4493870, 31.4512220 74.4493870, 31.6124170 74.2675860, 31.6124170 74.2675860, 31.4512220) และฉันวาดสิ่งเหล่านี้บน https://www.keene.edu/ เพื่อตรวจสอบ และนี่คือรูปหลายเหลี่ยมที่แม่นยำของเมืองลาฮอร์

วิธีที่ 2

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% จะถูกแท็กตำแหน่งและไม่ใช่ผู้ใช้ทุกคนในโปรไฟล์นั้นที่จะระบุเมืองและประเทศที่แน่นอน ผู้ใช้บางคนพูดถึงเช่น Mars และ Earth เป็นต้น ดังนั้น API เหล่านี้ทำงานอย่างไรเพื่อดึงทวีตในภูมิภาคเฉพาะ ไม่ว่าจะค้นหาในรัศมีหรือสอบถามเมือง/ประเทศ ฉันศึกษาเอกสาร twitter api และเอกสาร tweepy เพื่อศึกษาว่า api เหล่านี้ทำงานอย่างไรในเบื้องหลังเพื่อรวบรวมทวีตของภูมิภาคเฉพาะ แต่ฉันไม่พบเนื้อหาที่เป็นประโยชน์ใด ๆ


person ahmad iqbal    schedule 09.06.2018    source แหล่งที่มา


คำตอบ (1)


สาเหตุที่วิธีแรกมีผลลัพธ์มากกว่าก็คือ หากทวีตไม่มีข้อมูลทางภูมิศาสตร์ การค้นหาด้วย geocode จะย้อนกลับไปที่โปรไฟล์ (ตามที่คุณเดาไว้แล้ว) และจะพยายามแก้ไขเป็นละติจูด/ลองจิจูด

ดูเอกสารที่นี่:

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

การระบุตำแหน่งทางภูมิศาสตร์: โอเปอเรเตอร์การค้นหา "ใกล้" ไม่พร้อมใช้งานใน API แต่มีวิธีที่แม่นยำกว่าในการจำกัดการค้นหาของคุณตามตำแหน่งที่กำหนด โดยใช้พารามิเตอร์ geocode ที่ระบุด้วยเทมเพลต "ละติจูด ลองจิจูด รัศมี" เป็นต้น “37.781157,-122.398720,1ไมล์” เมื่อทำการค้นหาทางภูมิศาสตร์ API การค้นหาจะพยายามค้นหาทวีตที่มีละติจูด/ลองจิจูดภายในรหัสภูมิศาสตร์ที่สืบค้น และในกรณีที่ไม่ประสบผลสำเร็จ API การค้นหาจะพยายามค้นหาทวีตที่สร้างโดยผู้ใช้ซึ่งมีตำแหน่งโปรไฟล์ที่สามารถย้อนกลับรหัสทางภูมิศาสตร์เป็น ละติจูด/ลองจิจูดภายในรหัสทางภูมิศาสตร์ที่สอบถาม ซึ่งหมายความว่าสามารถรับทวีตที่ไม่มีข้อมูลละติจูด/ลองจิจูดได้

ในทางกลับกัน การค้นหาด้วย place_id ดูเหมือนจะกำลังมองหาสถานที่ที่แน่นอนนั้น นี่คือไวยากรณ์การเรียก API พื้นฐาน: https://developer.twitter.com/en/docs/twitters/search/guides/twitters-by-place

place api ทำงานแตกต่างจาก lat/long ใน geocode อย่างมาก หน้าถัดไปให้ความกระจ่างเกี่ยวกับความแตกต่างระหว่างข้อมูลตำแหน่งสองประเภทที่สามารถเชื่อมโยงกับทวีต:

https://developer.twitter.com/en/docs/tutorials/filtering-twitters-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

วัตถุทางภูมิศาสตร์สำหรับข้อมูลเพิ่มเติม)

...

ทวีตที่มี Twitter “Place” มีรูปหลายเหลี่ยม ซึ่งประกอบด้วยพิกัด 4 lon-lat ที่กำหนดพื้นที่ทั่วไป (“Place”) ที่ผู้ใช้โพสต์ทวีต นอกจากนี้ สถานที่จะมีชื่อที่แสดง ประเภท (เช่น เมือง บริเวณใกล้เคียง) และรหัสประเทศที่สอดคล้องกับประเทศที่สถานที่นั้นตั้งอยู่ รวมถึงช่องอื่นๆ

นอกจากนี้ในส่วนนี้: โปรดใส่ใจกับการใช้พหูพจน์ Place IDs

สถานที่:

กรองสถานที่เฉพาะตามชื่อหรือรหัส หากต้องการค้นหา “สถานที่” ที่เกี่ยวข้องกับพื้นที่เฉพาะ ให้ใช้จุดสิ้นสุด Reverse_geocode ของ Twitter ใน REST API จากนั้นใช้รหัสสถานที่ที่คุณพบพร้อมกับตัวดำเนินการ place: เพื่อติดตามทวีตที่มีสถานที่เฉพาะที่ถูกอ้างอิง หากคุณใช้ชื่อสถานที่แทนรหัสตัวเลข ตรวจสอบให้แน่ใจว่าคุณได้อ้างอิงชื่อที่มีการเว้นวรรคหรือเครื่องหมายวรรคตอน

person Asad Iqbal    schedule 12.06.2018