สร้างคะแนนสถานที่ตั้งที่กำหนดเองด้วยข้อมูลเชิงลึกเกี่ยวกับสถานที่

ภาพรวม

ประกาศอสังหาริมทรัพย์ที่แสดงคะแนนสวรรค์สำหรับเจ้าของสัตว์เลี้ยงที่กำหนดเอง 9.1 โดยอิงตามสวนสาธารณะและสถานที่ที่อนุญาตให้นำสุนัขเข้าได้ในบริเวณใกล้เคียง

ข้อมูลตำแหน่งมาตรฐานจะบอกคุณได้ว่ามีอะไรอยู่ใกล้ๆ แต่ก็มักจะตอบคำถามที่สำคัญกว่าไม่ได้ นั่นคือ "ย่านนี้เหมาะกับฉันไหม" ความต้องการของ ผู้ใช้มีความแตกต่างกัน ครอบครัวที่มีเด็กเล็กมีลำดับความสำคัญที่แตกต่าง เมื่อเทียบกับคนหนุ่มสาวที่เพิ่งเริ่มทำงานและมีสุนัข คุณต้องให้ข้อมูลเชิงลึกที่สะท้อนความต้องการเฉพาะเหล่านี้เพื่อช่วยให้ผู้ใช้ตัดสินใจได้อย่างมั่นใจ คะแนนตำแหน่งที่กำหนดเองเป็นเครื่องมือที่มีประสิทธิภาพในการมอบมูลค่านี้และสร้างประสบการณ์ของผู้ใช้ที่แตกต่างอย่างเห็นได้ชัด

เอกสารนี้อธิบายวิธีสร้างคะแนนสถานที่ตั้งแบบหลายมิติที่กำหนดเอง โดยใช้ชุดข้อมูล ข้อมูลเชิงลึกเกี่ยวกับสถานที่ ใน BigQuery การเปลี่ยนข้อมูลจุดที่น่าสนใจให้เป็นเมตริกที่มีความหมายจะช่วยเพิ่มคุณค่าให้กับแอปพลิเคชันอสังหาริมทรัพย์ ค้าปลีก หรือการท่องเที่ยว และให้ข้อมูลที่เกี่ยวข้องซึ่งผู้ใช้ต้องการ นอกจากนี้ เรายังมีตัวเลือกในการใช้ Gemini Developer API เป็นวิธีที่มีประสิทธิภาพ ในการคำนวณคะแนนตำแหน่ง

เพิ่มมูลค่าทางธุรกิจด้วยคะแนนที่ปรับแต่ง

ตัวอย่างต่อไปนี้แสดงให้เห็นวิธีที่คุณสามารถแปลข้อมูลตำแหน่งดิบเป็นเมตริกที่เน้นผู้ใช้เป็นหลักและมีประสิทธิภาพเพื่อปรับปรุงแอปพลิเคชัน

  • นักพัฒนาอสังหาริมทรัพย์สามารถสร้าง "คะแนนความเป็นมิตรกับครอบครัว" หรือ "คะแนนในฝันของคนเดินทาง" เพื่อช่วยให้ผู้ซื้อและผู้เช่าเลือกย่านที่สมบูรณ์แบบซึ่งตรงกับไลฟ์สไตล์ของตนได้ ซึ่งจะช่วยเพิ่มการมีส่วนร่วมของผู้ใช้ โอกาสในการขายที่มีคุณภาพสูงขึ้น และ Conversion ที่เร็วขึ้น
  • วิศวกรด้านการท่องเที่ยวและโรงแรมสามารถสร้าง "คะแนนสถานบันเทิงยามค่ำคืน" หรือ "คะแนนสวรรค์ของนักท่องเที่ยว" เพื่อช่วยให้นักเดินทางเลือกโรงแรมที่ตรงกับสไตล์การพักผ่อน ซึ่งจะช่วยเพิ่มอัตราการจองและความพึงพอใจของลูกค้า
  • นักวิเคราะห์ค้าปลีกสามารถสร้าง "คะแนนฟิตเนสและสุขภาพ" เพื่อระบุ สถานที่ตั้งที่เหมาะสมที่สุดสำหรับยิมหรือร้านขายอาหารเพื่อสุขภาพแห่งใหม่โดยอิงตาม ธุรกิจเสริมที่อยู่ใกล้เคียง เพื่อเพิ่มศักยภาพในการกำหนดเป้าหมายไปยังกลุ่มประชากรผู้ใช้ที่เหมาะสม ให้ได้สูงสุด

ในคู่มือนี้ คุณจะได้เรียนรู้ระเบียบวิธีแบบ 3 ส่วนที่ยืดหยุ่นสำหรับการสร้างคะแนนสถานที่ตั้งที่กำหนดเองทุกประเภทโดยใช้ข้อมูล Places ใน BigQuery โดยตรง เรา จะอธิบายรูปแบบนี้โดยการสร้างคะแนนตัวอย่างที่แตกต่างกัน 2 รายการ ได้แก่ คะแนนความเป็นมิตรกับครอบครัวและคะแนนสวรรค์ของคนรักสัตว์ แนวทางนี้ ช่วยให้คุณก้าวข้ามการนับสถานที่และใช้ประโยชน์จากแอตทริบิวต์ที่สมบูรณ์และมีรายละเอียด ภายในชุดข้อมูลข้อมูลเชิงลึกเกี่ยวกับสถานที่ คุณใช้ข้อมูล เช่น เวลาทำการ สถานที่เหมาะสำหรับเด็กหรือไม่ หรืออนุญาตให้นำสุนัขเข้าได้หรือไม่ เพื่อ สร้างเมตริกที่ซับซ้อนและมีความหมายสำหรับผู้ใช้ได้

เวิร์กโฟลว์ของโซลูชัน

แผนภาพเวิร์กโฟลว์ 3 ขั้นตอน: ระบุสถานที่ตั้ง ค้นหาสถานที่ใกล้เคียง
และปรับผลลัพธ์ให้เป็นมาตรฐานเพื่อสร้างคะแนนสุดท้าย

บทแนะนำนี้ใช้คำค้นหา SQL ที่มีประสิทธิภาพเพียงรายการเดียวเพื่อสร้างคะแนนที่กำหนดเองซึ่งคุณ สามารถปรับให้เข้ากับกรณีการใช้งานใดก็ได้ เราจะอธิบายกระบวนการนี้โดยการสร้างคะแนนตัวอย่าง 2 รายการสำหรับชุดข้อมูลอพาร์ตเมนต์สมมติ

ข้อกำหนดเบื้องต้น

ก่อนเริ่มต้น ให้ทำตามวิธีการ เหล่านี้เพื่อตั้งค่าข้อมูลเชิงลึกเกี่ยวกับสถานที่

1. สร้างรากฐาน: สถานที่ที่สนใจ

คุณต้องมีรายชื่อสถานที่ที่ต้องการวิเคราะห์ก่อนจึงจะสร้างคะแนนได้ ขั้นตอนแรกคือการตรวจสอบว่าข้อมูลนี้มีอยู่ในรูปแบบตารางใน BigQuery เคล็ดลับคือการมีตัวระบุที่ไม่ซ้ำกันสำหรับแต่ละสถานที่และGEOGRAPHY คอลัมน์ที่จัดเก็บพิกัด

คุณสร้างและป้อนข้อมูลตารางสถานที่เพื่อจัดอันดับด้วยการค้นหาต่อไปนี้ได้

CREATE OR REPLACE TABLE `your_project.your_dataset.apartment_listings`
(
  id INT64,
  name STRING,
  location GEOGRAPHY
);

INSERT INTO `your_project.your_dataset.apartment_listings` VALUES
  (1, 'The Downtowner', ST_GEOGPOINT(-74.0077, 40.7093)),
  (2, 'Suburban Oasis', ST_GEOGPOINT(-73.9825, 40.7507)),
  (3, 'Riverside Lofts', ST_GEOGPOINT(-73.9470, 40.8079))
  -- More rows can be added here
  . . . ;

การดำเนินการ SELECT * กับข้อมูลตำแหน่งจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

ผลการค้นหา BigQuery ที่แสดงตารางข้อมูลอพาร์ตเมนต์พร้อมรหัส ชื่อ
และพิกัดตำแหน่ง

2. พัฒนากฎหลัก: การค้นหาการให้คะแนน

เมื่อกำหนดสถานที่ตั้งแล้ว ขั้นตอนถัดไปคือการค้นหา กรอง และนับ สถานที่ใกล้เคียงที่เกี่ยวข้องกับคะแนนที่กำหนดเอง ทั้งหมดนี้ทำได้ภายใน คำสั่ง SELECT เดียว

ค้นหาสิ่งที่อยู่ใกล้เคียงด้วยการค้นหาเชิงพื้นที่

ก่อนอื่น คุณต้องค้นหาสถานที่ทั้งหมดจากชุดข้อมูลข้อมูลเชิงลึกเกี่ยวกับสถานที่ซึ่งอยู่ ภายในระยะทางที่กำหนดจากสถานที่ตั้งแต่ละแห่ง ฟังก์ชัน BigQuery ST_DWITHIN เหมาะสำหรับกรณีนี้ เราจะทำการJOINระหว่างตาราง apartment_listings กับตาราง places_insights เพื่อค้นหาสถานที่ทั้งหมดภายในรัศมี 800 เมตร LEFT JOIN ช่วยให้มั่นใจได้ว่าระบบจะรวมสถานที่ตั้งเดิมทั้งหมดไว้ในผลการค้นหา แม้ว่าจะไม่พบสถานที่ที่ตรงกันในบริเวณใกล้เคียงก็ตาม

กรองตามความเกี่ยวข้องด้วยแอตทริบิวต์ขั้นสูง

ในส่วนนี้ คุณจะแปลงแนวคิดที่เป็นนามธรรมของคะแนนให้เป็นตัวกรองข้อมูลที่เป็นรูปธรรม สำหรับคะแนนตัวอย่าง 2 รายการ เกณฑ์จะแตกต่างกันดังนี้

  • สำหรับ "คะแนนความเป็นมิตรกับครอบครัว" เราจะพิจารณาจากสวนสาธารณะ พิพิธภัณฑ์ และ ร้านอาหารที่เหมาะสำหรับเด็กโดยเฉพาะ
  • สำหรับ "คะแนนสวรรค์ของเจ้าของสัตว์เลี้ยง" เราจะพิจารณาสวนสาธารณะ คลินิกสัตวแพทย์ ร้านขายสัตว์เลี้ยง รวมถึงร้านอาหารหรือคาเฟ่ที่อนุญาตให้นำสุนัขเข้าไปได้

คุณกรองแอตทริบิวต์ที่เฉพาะเจาะจงเหล่านี้ได้โดยตรงในอนุประโยค WHERE ของ การค้นหา

รวบรวมข้อมูลเชิงลึกสำหรับแต่ละสถานที่

สุดท้าย คุณต้องนับจำนวนสถานที่ที่เกี่ยวข้องซึ่งพบสำหรับอพาร์ตเมนต์แต่ละแห่ง โดยGROUP BYจะรวบรวมผลลัพธ์ และฟังก์ชัน COUNTIF จะนับสถานที่ที่ตรงกับเกณฑ์ที่เฉพาะเจาะจงสำหรับคะแนนแต่ละรายการ

คําค้นหาด้านล่างจะรวม 3 ขั้นตอนนี้เข้าด้วยกันเพื่อคํานวณจํานวนดิบสําหรับคะแนนทั้ง 2 รายการในรอบเดียว

-- This Common Table Expression (CTE) will hold the raw counts for each score component.
WITH insight_counts AS (
  SELECT WITH AGGREGATION_THRESHOLD -- Correctly includes the mandatory aggregation threshold
    apartments.id,
    apartments.name,
    COUNTIF(places.primary_type = 'park') AS park_count,
    COUNTIF(places.primary_type = 'museum') AS museum_count,
    COUNTIF(places.primary_type = 'restaurant' AND places.good_for_children = TRUE) AS family_restaurant_count,
    COUNTIF(places.primary_type IN ('veterinary_care', 'pet_store')) AS pet_service_count,
    COUNTIF(places.allows_dogs = TRUE) AS dog_friendly_place_count
  FROM
    `your_project.your_dataset.apartment_listings` AS apartments
  LEFT JOIN
    `your-project.places_insights___us.places` AS places -- Corrected table name for the US dataset
    ON ST_DWITHIN(apartments.location, places.point, 800) -- Find places within 800 meters
  GROUP BY
    apartments.id, apartments.name
)
SELECT * FROM insight_counts;

ผลลัพธ์ของการค้นหานี้จะคล้ายกับผลลัพธ์ต่อไปนี้

ผลลัพธ์ BigQuery ที่แสดงจำนวนสิ่งอำนวยความสะดวกดิบ เช่น สวนสาธารณะ ร้านอาหาร
และบริการสำหรับสัตว์เลี้ยงสำหรับข้อมูลอพาร์ตเมนต์แต่ละรายการ

เราจะต่อยอดจากผลลัพธ์เหล่านี้ในส่วนถัดไป

3. สร้างคะแนน

ตอนนี้คุณมีจำนวนสถานที่และการให้น้ำหนักสำหรับสถานที่แต่ละประเภทของแต่ละ สถานที่แล้ว คุณจึงสร้างคะแนนสถานที่ที่กำหนดเองได้ เราจะพูดถึง 2 ตัวเลือกในส่วนนี้ ได้แก่ การใช้การคำนวณที่กำหนดเองใน BigQuery หรือการใช้ Gemini Developer API

ตัวเลือกที่ 1: ใช้การคำนวณที่กำหนดเองใน BigQuery

จำนวนดิบจากขั้นตอนก่อนหน้ามีประโยชน์ แต่เป้าหมายคือคะแนนเดียวที่ใช้งานง่าย ขั้นตอนสุดท้ายคือการรวมจำนวนเหล่านี้โดยใช้ น้ำหนัก แล้วปรับผลลัพธ์ให้อยู่ในระดับ 0-10

การใช้การถ่วงน้ำหนักที่กำหนดเอง การเลือกการถ่วงน้ำหนักเป็นทั้งศาสตร์และศิลป์ โดยควรสะท้อนถึงลำดับความสำคัญทางธุรกิจของคุณ หรือสิ่งที่คุณเชื่อว่าสำคัญที่สุดสำหรับผู้ใช้ สำหรับคะแนน "เหมาะสำหรับครอบครัว" คุณอาจตัดสินใจว่า สวนสาธารณะสำคัญเป็น 2 เท่าของพิพิธภัณฑ์ เริ่มต้นด้วยสมมติฐานที่ดีที่สุดและ ทำซ้ำตามความคิดเห็นของผู้ใช้

การปรับคะแนนให้เป็นมาตรฐาน การค้นหาด้านล่างใช้ Common Table Expressions (CTE) 2 รายการ โดยรายการแรกจะคำนวณจำนวนดิบเช่นเดียวกับก่อนหน้า และรายการที่ 2 จะคำนวณ คะแนนแบบถ่วงน้ำหนัก จากนั้นSELECTคำสั่งสุดท้ายจะทำการปรับค่าให้เป็นช่วงต่ำสุด-สูงสุด ในคะแนนที่มีการถ่วงน้ำหนัก ระบบจะแสดงผลคอลัมน์ location ของตารางตัวอย่าง apartment_listings เพื่อเปิดใช้การแสดงข้อมูลผ่านภาพบนแผนที่

WITH
  -- CTE 1: Count nearby amenities of interest for each apartment listing.
  insight_counts AS (
    SELECT WITH AGGREGATION_THRESHOLD
      apartments.id,
      apartments.name,
      COUNTIF(places.primary_type = 'park') AS park_count,
      COUNTIF(places.primary_type = 'museum') AS museum_count,
      COUNTIF(places.primary_type = 'restaurant' AND places.good_for_children = TRUE) AS family_restaurant_count,
      COUNTIF(places.primary_type IN ('veterinary_care', 'pet_store')) AS pet_service_count,
      COUNTIF(places.allows_dogs = TRUE) AS dog_friendly_place_count
    FROM
      `your_project.your_dataset.apartment_listings` AS apartments
    LEFT JOIN
      `your-project.places_insights___us.places` AS places
      ON ST_DWITHIN(apartments.location, places.point, 800)
    GROUP BY
      apartments.id,
      apartments.name
  ),
  -- CTE 2: Apply custom weighting to the amenity counts to generate raw scores.
  raw_scores AS (
    SELECT
      id,
      name,
      (park_count * 3.0) + (museum_count * 1.5) + (family_restaurant_count * 2.5) AS family_friendliness_score,
      (park_count * 2.0) + (pet_service_count * 3.5) + (dog_friendly_place_count * 2.5) AS pet_paradise_score
    FROM
      insight_counts
  )
-- Final Step: Normalize scores to a 0-10 scale and rejoin to retrieve the location geometry.
SELECT
  raw_scores.id,
  raw_scores.name,
  apartments.location,
  raw_scores.family_friendliness_score,
  raw_scores.pet_paradise_score,
  -- Normalize Family Score using a MIN/MAX window function.
  ROUND(
    COALESCE(
      SAFE_DIVIDE(
        (raw_scores.family_friendliness_score - MIN(raw_scores.family_friendliness_score) OVER ()),
        (MAX(raw_scores.family_friendliness_score) OVER () - MIN(raw_scores.family_friendliness_score) OVER ())
      ) * 10,
      0
    ),
    2
  ) AS normalized_family_score,
  -- Normalize Pet Score using a MIN/MAX window function.
  ROUND(
    COALESCE(
      SAFE_DIVIDE(
        (raw_scores.pet_paradise_score - MIN(raw_scores.pet_paradise_score) OVER ()),
        (MAX(raw_scores.pet_paradise_score) OVER () - MIN(raw_scores.pet_paradise_score) OVER ())
      ) * 10,
      0
    ),
    2
  ) AS normalized_pet_score
FROM
  raw_scores
JOIN
  `your_project.your_dataset.apartment_listings` AS apartments
  ON raw_scores.id = apartments.id;

ผลลัพธ์ของคำค้นหาจะคล้ายกับด้านล่าง 2 คอลัมน์สุดท้ายคือ คะแนนที่ปรับให้เป็นค่าปกติ

ผลลัพธ์ของคำค้นหาสุดท้ายซึ่งแสดงทั้งคะแนนแบบถ่วงน้ำหนักดิบและคะแนนที่ปรับให้เป็นช่วง 0-10
 สำหรับข้อมูลอพาร์ตเมนต์แต่ละรายการ

ทำความเข้าใจคะแนนที่ปรับแล้ว

คุณควรเข้าใจว่าเหตุใดขั้นตอนการปรับให้เป็นมาตรฐานขั้นสุดท้ายนี้จึงมีคุณค่ามาก คะแนนถ่วงน้ำหนักดิบอาจมีตั้งแต่ 0 ไปจนถึงจำนวนที่อาจมาก โดยขึ้นอยู่กับความหนาแน่นของเมืองในสถานที่ตั้งของคุณ คะแนน 500 ไม่มีความหมายสำหรับผู้ใช้ที่ไม่มีบริบท

การปรับให้เป็นมาตรฐานจะเปลี่ยนตัวเลขเชิงนามธรรมเหล่านี้เป็นการจัดอันดับแบบสัมพัทธ์ การปรับขนาดผลลัพธ์จาก 0 ถึง 10 จะช่วยให้คะแนนสื่อสารได้อย่างชัดเจนว่าแต่ละสถานที่ เป็นอย่างไรเมื่อเทียบกับสถานที่อื่นๆ ในชุดข้อมูลที่เฉพาะเจาะจง

  • ระบบจะกำหนดคะแนน 10 ให้กับสถานที่ที่มีคะแนนดิบสูงสุด เพื่อทำเครื่องหมายให้เป็นตัวเลือกที่ดีที่สุดในชุดปัจจุบัน
  • ระบบจะกำหนดคะแนน 0 ให้กับสถานที่ที่มีคะแนนดิบต่ำที่สุด ซึ่งจะกลายเป็นเกณฑ์พื้นฐานสำหรับการเปรียบเทียบ ซึ่งไม่ได้หมายความว่าที่พักไม่มีสิ่งอำนวยความสะดวกเลย แต่หมายความว่าที่พักนั้นไม่เหมาะสมที่สุดเมื่อเทียบกับตัวเลือกอื่นๆ ที่กำลังประเมิน
  • คะแนนอื่นๆ ทั้งหมดจะอยู่ระหว่างคะแนนเหล่านี้ตามสัดส่วน ซึ่งช่วยให้ผู้ใช้มีวิธีที่ชัดเจนและใช้งานง่ายในการเปรียบเทียบตัวเลือกต่างๆ ได้อย่างรวดเร็ว

ตัวเลือกที่ 2: ใช้ Gemini Developer API

Gemini Developer API เป็นอีกทางเลือกแทนการใช้สูตรทางคณิตศาสตร์แบบคงที่ใน BigQuery ซึ่งเป็นวิธีที่มีประสิทธิภาพในการคำนวณคะแนนสถานที่ที่กำหนดเองซึ่งมีความแตกต่างกันเล็กน้อย

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

เตรียมข้อมูลสำหรับ Gemini

หากต้องการใช้วิธีนี้ ให้เปลี่ยนผลลัพธ์ของการรวบรวมข้อมูล BigQuery (จากขั้นตอนที่ 2) เป็นรูปแบบ Markdown แล้ว รวมเข้ากับข้อมูลเชิงคุณภาพ เช่น Listing Description

ในตัวอย่างนี้ เรามีข้อมูล 2 รายการที่มีลักษณะแตกต่างกันอย่างมาก นอกจากนี้ เรายังใส่ Target User Profile เพื่อให้ Gemini ทราบว่าเราให้คะแนนสิ่งเหล่านี้สำหรับใคร

## Listing 1: The Downtowner

*   **ID:** 1
*   **Amenity Counts:**
    *   Parks: 70
    *   Museums: 34
    *   Family-Friendly Restaurants: 141
*   **Listing Description:** A vibrant apartment in the heart of the city.
    Great for nightlife, but can be noisy on weekends. Close to several
    small playgrounds.
*   **Target User Profile:** Young family with a toddler, looking for a
    balance of activity and quiet.

---

## Listing 2: Suburban Oasis

*   **ID:** 2
*   **Amenity Counts:**
    *   Parks: 34
    *   Museums: 30
    *   Family-Friendly Restaurants: 318
*   **Listing Description:** Quiet, tree-lined street. Large backyard and easy
    walking distance to a major park and elementary school.
*   **Target User Profile:** Young family with a toddler, looking for a
    balance of activity and quiet.
คำสั่งของระบบ

Gemini ต้องมีคำสั่งของระบบเพื่อทราบวิธีพิจารณาจุดข้อมูลต่างๆ เหล่านี้ คุณสามารถบอกโมเดลอย่างชัดเจนว่าสิ่งอำนวยความสะดวกบางอย่างมีความสำคัญเพียงใด พร้อมทั้งสั่งให้พิจารณาความรู้สึกของคำอธิบายที่เป็นข้อความด้วย

You are an expert real estate analyst. Your goal is to generate a
"Family-Friendliness Score" between 0.0 and 10.0 for a list of apartment
locations.

For each location, you will be given quantitative data (amenity counts)
and qualitative data (descriptions and user profiles).

Scoring Criteria:
-   High importance: Proximity to parks and a high count of family-friendly
    restaurants.
-   Medium importance: Proximity to museums.
-   Negative modifiers: Descriptions indicating excessive noise, lack of
    safe play areas, or mismatch with the user profile.
-   Positive modifiers: Descriptions indicating quiet areas, safe streets,
    or extra space (e.g., backyards).

Analyze the provided data and generate scores based on these criteria.
เอาต์พุตที่มีโครงสร้าง

คุณไม่ควร พึ่งพาเฉพาะพรอมต์สำหรับรูปแบบเอาต์พุตเพื่อให้มั่นใจถึงความน่าเชื่อถือเมื่อผสานรวม AI เข้ากับแอปพลิเคชัน แต่ให้ใช้ฟีเจอร์เอาต์พุตที่มีโครงสร้าง ของ Gemini แทน การระบุ responseSchema จะช่วยรับประกันว่าโมเดลจะแสดงผลอาร์เรย์ JSON ที่สะอาดและแยกวิเคราะห์ได้ ซึ่งตรงกับข้อกำหนดของระบบของคุณทุกประการ

สำหรับตัวอย่างของเรา เราสามารถบังคับใช้สคีมาต่อไปนี้

{
  "type": "ARRAY",
  "items": {
    "type": "OBJECT",
    "required": ["location_id", "name", "score", "reasoning"],
    "properties": {
      "location_id": {"type": "STRING"},
      "name": {"type": "STRING"},
      "score": {
        "type": "NUMBER"
      },
      "reasoning": {
        "type": "STRING"
      }
    }
  }
}
ตัวอย่างเอาต์พุต

เมื่อคุณส่งพรอมต์พร้อมกับ responseSchema ที่กำหนดไว้ Gemini จะแสดงอาร์เรย์ JSON ที่มีโครงสร้างซึ่งแอปพลิเคชันของคุณพร้อมใช้งานได้โดยตรง

สังเกตในเอาต์พุตว่า Gemini จัดการการแลกเปลี่ยนอย่างไร "The Downtowner" มีสวนสาธารณะจำนวนมาก แต่ Gemini ระบุคำอธิบายว่า "เสียงดังในวันหยุดสุดสัปดาห์" เป็นข้อเสียที่สำคัญสำหรับเด็กวัยหัดเดิน ในขณะเดียวกัน "Suburban Oasis" ก็ได้รับคะแนนเกือบสมบูรณ์แบบจากการรวมความหนาแน่นของสิ่งอำนวยความสะดวกที่ยอดเยี่ยมเข้ากับ คุณลักษณะเชิงคุณภาพที่เกี่ยวข้อง เช่น "ถนนที่เงียบสงบและเรียงรายไปด้วยต้นไม้"

[
  {
    "id": 1,
    "location_name": "The Downtowner",
    "analysis_notes": "Excellent amenity counts (parks, restaurants, museums), fulfilling
    quantitative metrics. However, the qualitative data indicates excessive weekend
    noise and a strong nightlife focus, conflicting directly with the target
    user's need for quiet and suitability for a toddler. This mismatch
    significantly lowers the final score.",
    "family_friendliness_score": 5.5
  },
  {
    "id": 2,
    "location_name": "Suburban Oasis",
    "analysis_notes": "Outstanding quantitative data, especially the very high count of
    family-friendly restaurants. The qualitative description (quiet, tree-lined street,
    large backyard, proximity to elementary school and major park) aligns perfectly with
    and exceeds the needs of the target family profile. High positive modifiers
    result in a near-perfect score.",
    "family_friendliness_score": 9.8
  }
]

วิธีนี้ช่วยให้คุณให้คะแนนที่ปรับตามโปรไฟล์ของผู้ใช้แต่ละรายได้อย่างมาก ซึ่งจะทำให้ผู้ใช้เข้าใจได้ และปรับให้เหมาะกับผู้ใช้แต่ละราย

4. แสดงภาพคะแนนของคุณบนแผนที่

BigQuery Studio มีการแสดงภาพแผนที่แบบผสานรวม สําหรับผลการค้นหาใดๆ ที่มีคอลัมน์ GEOGRAPHY เนื่องจากเอาต์พุตการค้นหาของเรา คือคอลัมน์ location คุณจึงเห็นภาพคะแนนได้ทันที

การคลิกแท็บ Visualization จะแสดงแผนที่ และData Column เมนูแบบเลื่อนลงจะควบคุมคะแนนตำแหน่งเพื่อแสดงภาพ ในตัวอย่างนี้ normalized_pet_score จะแสดงภาพจากตัวอย่างตัวเลือกที่ 1 โปรดทราบว่าเราได้เพิ่มสถานที่ตั้งอื่นๆ ลงในตาราง apartment_listings สำหรับตัวอย่างนี้

แผนที่แสดงภาพคะแนนสัตว์เลี้ยงที่ปรับให้เป็นมาตรฐานสำหรับสถานที่ต่างๆ โดยจุดสีเขียวเข้มแสดงถึงคะแนนที่สูงกว่าและดีกว่า

การแสดงข้อมูลด้วยภาพจะเผยให้เห็นในพริบตาว่าสถานที่ที่เหมาะสมที่สุดสำหรับคะแนนที่สร้างขึ้นคือที่ใด โดยวงกลมสีเขียวเข้มแสดงถึงสถานที่ที่มี normalized_pet_score สูงกว่าในกรณีนี้ ดูตัวเลือกการแสดงข้อมูล Places Insights เพิ่มเติมได้ที่แสดงผลการค้นหา

บทสรุป

ตอนนี้คุณมีวิธีการที่มีประสิทธิภาพและทำซ้ำได้ในการสร้างคะแนนสถานที่ที่ซับซ้อน คุณเริ่มต้นด้วยสถานที่ตั้งและสร้างการค้นหา SQL รายการเดียวใน BigQuery ซึ่งจะค้นหาสถานที่ใกล้เคียงที่มี ST_DWITHIN กรองตามแอตทริบิวต์ขั้นสูง เช่น good_for_children และ allows_dogs และรวบรวมผลลัพธ์ด้วย COUNTIF การใช้การถ่วงน้ำหนักที่กำหนดเองและการปรับผลลัพธ์ให้เป็นมาตรฐาน ทำให้คุณได้คะแนนเดียวที่ใช้งานง่ายซึ่งให้ข้อมูลเชิงลึกที่นำไปใช้ได้จริง คุณสามารถใช้รูปแบบนี้โดยตรงเพื่อเปลี่ยนข้อมูลตำแหน่งดิบให้เป็น ความได้เปรียบทางการแข่งขันที่สำคัญ

การดำเนินการถัดไป

ตอนนี้ถึงตาคุณสร้างแล้ว บทแนะนำนี้มีเทมเพลตให้ คุณสามารถใช้ ข้อมูลที่สมบูรณ์ซึ่งมีอยู่ในสคีมาข้อมูลเชิงลึกเกี่ยวกับสถานที่เพื่อสร้างคะแนนที่ จำเป็นที่สุดสำหรับกรณีการใช้งานของคุณ ลองพิจารณาคะแนนอื่นๆ ที่คุณสร้างได้

  • "คะแนนสถานบันเทิงยามค่ำคืน": รวมตัวกรองสำหรับ primary_type (bar, night_club), price_level และเวลาเปิดทำการช่วงดึกเพื่อค้นหาพื้นที่ที่มีชีวิตชีวาที่สุดหลังค่ำ
  • "คะแนนการออกกำลังกายและสุขภาพ": นับ gyms, parks และ health_food_stores ที่อยู่ใกล้เคียง และกรองร้านอาหารที่มี serves_vegetarian_food เพื่อให้คะแนนสถานที่ตั้งสำหรับผู้ใช้ที่ใส่ใจสุขภาพ
  • "คะแนนความฝันของคนเดินทาง": ค้นหาสถานที่ที่มีtransit_stationและparkingจำนวนมากในบริเวณใกล้เคียงเพื่อช่วยผู้ใช้ที่ให้ความสำคัญกับการเข้าถึงระบบขนส่ง

ผู้ร่วมให้ข้อมูล

Henrik Valve | DevX Engineer