คะแนนสถานที่ตั้งที่กำหนดเองของ Places Aggregate

วัตถุประสงค์

รูปภาพ

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

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

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

  • ร้านอาหารและร้านกาแฟ
  • สวนสาธารณะและพิพิธภัณฑ์
  • ร้านเสื้อผ้า

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

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

ก่อนอ่านเอกสารนี้ เราขอแนะนำให้คุณทำความคุ้นเคยกับเอกสารประกอบต่อไปนี้

  • เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ Places Aggregate API เพื่อทำความเข้าใจรายละเอียดทางเทคนิคและพารามิเตอร์ที่ใช้ได้
  • [ไม่บังคับ] เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์ Gemini Developer API เพื่อทำความเข้าใจวิธีเรียกใช้ Gemini โดยใช้ API และใช้ในเอกสารนี้เป็นตัวเลือกในการสร้างคะแนนสถานที่ตั้งที่กำหนดเอง

เลือกประเภทสถานที่ที่เกี่ยวข้อง

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

  • ร้านอาหาร
  • สวนสาธารณะ
  • clothing_store
  • พิพิธภัณฑ์
  • coffee_shop

จากนั้นกำหนดน้ำหนักให้กับสถานที่แต่ละประเภท ซึ่งจะสะท้อนถึงความสำคัญที่เกี่ยวข้องในคะแนนสุดท้าย การถ่วงน้ำหนักควรพิจารณาจากสิ่งที่สำคัญที่สุดสำหรับกรณีการใช้งานและความต้องการของผู้ใช้ สำหรับตัวอย่างนี้ มาตราส่วนการถ่วงน้ำหนักจะอยู่ระหว่าง 0 ถึง 1 ดังนี้

ประเภทสถานที่

การถ่วงน้ำหนัก

ร้านอาหาร

0.8

สวนสาธารณะ

0.6

clothing_store

0.3

พิพิธภัณฑ์

0.2

coffee_shop

0.5

เรียกใช้ Places Aggregate API

เมื่อคุณมีรายการประเภทสถานที่ที่สนใจแล้ว ขั้นตอนถัดไปคือการเรียกใช้ Places Aggregate API

Places Aggregate API ต้องใช้ตัวกรองสถานที่ตั้ง สำหรับตัวอย่างนี้ ให้ใช้ circle โดยมีศูนย์กลาง latLng เป็นตำแหน่งของโรงแรม และ radius เป็น 500 ม. นอกจากนี้ ให้ตั้งค่า ratingFilter เพื่อแสดงสถานที่ที่มีคะแนนระหว่าง 3.8 ถึง 5 โดยไม่รวมสถานที่ที่มีคะแนนต่ำกว่าจากจำนวนนับ

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

ทำความคุ้นเคยกับส่วนตัวกรองสถานที่ตั้งของเอกสารประกอบ Places Aggregate API เพื่อดูข้อมูลเกี่ยวกับตัวเลือกที่พร้อมใช้งาน

เรียกใช้ Places Aggregate API สำหรับสถานที่แต่ละประเภทและสถานที่ตั้งที่ต้องการสร้างคะแนนที่กำหนดเอง เช่น เรียกใช้ประเภทสถานที่ร้านอาหารสำหรับโรงแรมแห่งหนึ่งของคุณ

curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
--header 'X-Goog-Api-Key: API_KEY \
--header 'Content-Type: application/json' \
--data '{
    "insights": [
        "INSIGHT_COUNT"
    ],
    "filter": {
        "locationFilter": {
            "circle": {
                "latLng": {
                    "latitude": 51.51611,
                    "longitude": -0.12726
                },
                "radius": 500
            }
        },
        "typeFilter": {
            "includedTypes": [
                "restaurant"
            ]
        },
        "ratingFilter": {
            "minRating": 3.8,
            "maxRating": 5
        }
    }
}'

หลังจากเรียกใช้ API ทั้งหมดเสร็จแล้ว คุณจะมีข้อมูลที่มีลักษณะดังนี้สำหรับสถานที่ตั้งแต่ละแห่ง

ประเภทสถานที่

การถ่วงน้ำหนัก

จำนวน

ร้านอาหาร

0.8

56

สวนสาธารณะ

0.6

3

clothing_store

0.3

32

พิพิธภัณฑ์

0.2

8

coffee_shop

0.5

41

สร้างคะแนนสถานที่ตั้งที่กำหนดเอง

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

ตัวเลือกที่ 1: ใช้อัลกอริทึม

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

itemCounts

typeWeights

    {
      "restaurant": 56,
      "park": 3,
      "clothing_store": 32,
      "museum": 8,
      "coffee_shop": 41
    }
    
    {
      "restaurant": 0.8,
      "park": 0.6,
      "clothing_store": 0.3,
      "museum": 0.2,
      "coffee_shop": 0.5
    }
    

สร้างคะแนนจากจำนวนและการถ่วงน้ำหนักโดยคูณ itemCounts ด้วย typeWeights แล้วบวกผลลัพธ์เข้ากับ weightedCount โดยรวม ดังนี้

let weightedCount = 0;
for (const itemType in itemCounts) {
  weightedCount += itemCounts[itemType] * typeWeights[itemType];
}
weightedCount = weightedCount.toFixed(2);

สำหรับตัวอย่างนี้ เอาต์พุตของขั้นตอนนี้คือ 78.3

ตอนนี้คุณสามารถใช้การปรับมาตรฐานลอการิทึมเพื่อสร้างคะแนนสุดท้ายสำหรับสถานที่นี้ในระดับระหว่าง 0 ถึง 5 ได้แล้ว

if (weightedCount === 0) {
   normalizedScore = 0;
} else {
   normalizedScore = Math.log(weightedCount + 1);
}

// Clamp between 0 and 5
normalizedScore = Math.max(0, Math.min(5, normalizedScore));

สำหรับตัวอย่างนี้ คะแนนสุดท้ายที่ได้คือ 4.36 (ปัดเศษเป็นทศนิยม 2 ตำแหน่ง)

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

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

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

  • คำอธิบายแบบข้อความสำหรับสถานที่ตั้งของโรงแรมแต่ละแห่ง เช่น "สถานที่ตั้งนี้เหมาะสำหรับครอบครัวและบริเวณนี้เงียบสงบในเวลากลางคืน"
  • ข้อมูลเกี่ยวกับผู้ใช้ เช่น "ผู้ใช้รายนี้จองให้ครอบครัวและต้องการพื้นที่เงียบสงบในย่านใจกลางเมือง"

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

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

ตำแหน่ง

คำอธิบาย

51.49884, -0.17978

ตั้งอยู่ใจกลางเมืองใกล้กับพิพิธภัณฑ์ เงียบสงบในเวลากลางคืน และเหมาะสำหรับครอบครัว

51.51750, -0.13065

ตั้งอยู่ใจกลางเมือง ใกล้บาร์และร้านอาหาร เสียงดังและคนเยอะในตอนกลางคืน เหมาะสำหรับมาเป็นกลุ่ม

51.45712, 0.01146

สถานที่ตั้งอยู่ในย่านที่พักอาศัยซึ่งอยู่ห่างจากใจกลางเมือง

51.51271, -0.09933

ตั้งอยู่ใจกลางเมืองใกล้แม่น้ำ เงียบสงบในเวลากลางคืน และเหมาะสำหรับครอบครัว

51.58502, -0.06445

สถานที่ตั้งอยู่ในย่านที่พักอาศัยซึ่งอยู่ห่างจากใจกลางเมือง

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

คำสั่งของระบบ

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

You will be given a json file containing details about a number of locations grouped by their latitude and longitudes.

Within the location details is information about the count of places nearby the location that match a specific category, and the weighting of importance of that category, between 0 - 1.

You will also be given information about the user's preference, and a description of each location. Take this into consideration when generating scores.

Generate a location suitability score taking these into account for each location. The score should be between 1 - 5 inclusive, to two decimal places. The minimum score a location can receive is 1.

Output in JSON

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

เอาต์พุตที่มีโครงสร้าง

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

เช่น

{
  "type": "array",
  "description": "Array of location data with score",
  "items": {
    "type": "object",
    "properties": {
      "location": {
        "type": "object",
        "description": "Geographical coordinates of the location",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "float",
            "description": "Latitude of the location"
          },
          "longitude": {
            "type": "number",
            "format": "float",
            "description": "Longitude of the location"
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "score": {
        "type": "string",
        "description": "A score associated with the location"
      }
    },
    "required": [
      "location",
      "score"
    ]
  }
}

ตัวอย่างนี้ขอให้ Gemini แสดงผลอาร์เรย์ JavaScript ที่มีข้อมูลต่อไปนี้

  • ละติจูดและลองจิจูดของสถานที่ตั้ง
  • คะแนนสถานที่ตั้งที่กำหนดเอง

เมื่อใช้คำสั่งของระบบและเอาต์พุตที่มีโครงสร้างข้างต้น คำตอบจาก Gemini สำหรับสถานที่หนึ่งๆ จะมีลักษณะดังนี้ โดยที่ score คือคะแนนสถานที่ที่กำหนดเอง

[
  {
    "location": {
      "latitude": 51.51611,
      "longitude": -0.12726
    },
    "score": "4.13"
  }
]

แสดงคะแนน

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

บทสรุป

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

ลองใช้ Places Aggregate API วันนี้เพื่อสร้างคะแนนสถานที่ที่ให้ข้อมูลเชิงลึกที่ระบบสร้างขึ้นเพื่อช่วยให้ลูกค้าตัดสินใจเกี่ยวกับสถานที่ได้อย่างมีข้อมูลครบถ้วน

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

Henrik Valve | วิศวกร DevX