Places Aggregate কাস্টম লোকেশন স্কোর

উদ্দেশ্য

ছবি

আপনার আসন্ন ছুটির জন্য হোটেল হোক বা পরিবার-বান্ধব অ্যাপার্টমেন্ট, আদর্শ লোকেশন খুঁজে পেতে প্রায়শই অসংখ্য বিকল্পের তুলনা করতে হয় যা হতাশাজনক এবং সময়সাপেক্ষ প্রক্রিয়া। আপনি যদি কাস্টমাইজ করা মেট্রিক প্রদান করে আপনার ব্যবহারকারীদের জন্য এটি আরও সহজ করতে পারেন, যা পর্যটকদের জন্য হোটেলের উপযুক্ততা প্রকাশ করে বা তাদের পরিবারের বন্ধুত্বের উপর ভিত্তি করে অ্যাপার্টমেন্ট তালিকার র‍্যাঙ্ক করে, তাহলে একটি ক্লান্তিকর কাজকে একটি সহজ সিদ্ধান্তে রূপান্তরিত করা যায়।

এই ডকুমেন্ট থেকে জানতে পারবেন যে কীভাবে Places Aggregate API ব্যবহার করে নির্দিষ্ট ভৌগোলিক এলাকার মধ্যে জায়গার ঘনত্বের উপর ভিত্তি করে ডায়নামিক, কাস্টম লোকেশন স্কোর তৈরি করা যায়। আপনার নির্দিষ্ট করা মানদণ্ডের ভিত্তিতে একটি সংখ্যাসূচক র‍্যাঙ্কিং, স্কোর, লোকেশনটি তাদের প্রয়োজনের জন্য কতটা উপযুক্ত তা অবিলম্বে জানিয়ে দেবে।

এমন একটি পরিস্থিতি বিবেচনা করুন যেখানে আপনি কোনও শহরের হোটেলগুলির প্রচার করছেন এবং পর্যটকদের জন্য ভাল স্কোর তৈরি করে সবচেয়ে আকর্ষণীয় পর্যটন এলাকার হোটেলগুলিকে হাইলাইট করতে চান। প্রতিটি হোটেলের কাছাকাছি কতগুলি প্রাসঙ্গিক জায়গার ধরন আছে তা গণনা করতে Places Aggregate API ব্যবহার করুন। যেমন, আপনি জানেন যে আপনার গ্রাহকরা এমন লোকেশনে হোটেল পছন্দ করেন যা নিম্নলিখিতগুলির কাছাকাছি:

  • রেস্তোরাঁ ও কফি শপ
  • পার্ক ও মিউজিয়াম
  • জামাকাপড়ের দোকান

বেছে নেওয়া এইসব জায়গার প্রকারের সংখ্যার উপর গুরুত্বের ওয়েটিং প্রয়োগ করে, আপনি প্রতিটি হোটেল লোকেশনের জন্য সামগ্রিক স্কোর গণনা করতে পারবেন। স্কোর থেকে বোঝা যায় আশেপাশের জায়গার উপর ভিত্তি করে লোকেশনটি কতটা উপযুক্ত। প্রতিটি জায়গার ধরন অনুযায়ী অ্যাসাইন করা ওয়েটিং আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে এবং আপনার টার্গেট অডিয়েন্সের কাছে কী গুরুত্বপূর্ণ তার সাথে সামঞ্জস্যপূর্ণ হতে হবে। এই ডকুমেন্ট মূল উদাহরণ হিসেবে পর্যটকদের জন্য উপযুক্ত স্কোর ব্যবহার করবে, তবে আপনার স্কোর আপনার ব্যবহারকারীর ডেমোগ্রাফি ও প্রয়োজন প্রতিফলিত করার জন্য তৈরি করা যেতে পারে।

পূর্বশর্ত

এই ডকুমেন্ট পড়ার আগে, নিম্নলিখিত ডকুমেন্টেশন সম্পর্কে পরিচিতি থাকলে ভালো হয়:

  • টেকনিক্যাল বিবরণ ও উপলভ্য প্যারামিটার সম্পর্কে বুঝতে Places Aggregate API ডেভেলপার ডকুমেন্টেশন দেখুন।
  • [ঐচ্ছিক] Gemini Developer API ডেভেলপার ডকুমেন্টেশন, API ব্যবহার করে কীভাবে Gemini-কে কল করতে হয় তা বোঝার জন্য এবং এই ডকুমেন্টে কাস্টম লোকেশন স্কোর জেনারেট করার বিকল্প হিসেবে ব্যবহার করা হয়।

প্রাসঙ্গিক জায়গার ধরন বেছে নিন

আপনার কাস্টম লোকেশন স্কোর তৈরি করার প্রথম ধাপ হল সারণী ক থেকে আপনার গ্রাহকদের জন্য প্রাসঙ্গিক জায়গার ধরনগুলি বেছে নেওয়া। আমরা যেহেতু পর্যটকদের জন্য ভাল স্কোর তৈরি করছি, তাই নিম্নলিখিত ধরনের জায়গা বেছে নিয়েছি যেগুলির কাছাকাছি পর্যটকরা থাকতে চাইবেন:

  • রেস্তোরাঁ
  • উদ্যান
  • clothing_store
  • জাদুঘর
  • coffee_shop

এরপর, এই ধরনের প্রতিটি জায়গার জন্য একটি ওয়েটিং অ্যাসাইন করুন, যা চূড়ান্ত স্কোরে এর আপেক্ষিক গুরুত্বকে প্রতিফলিত করে। আপনার ব্যবহারের ক্ষেত্র এবং ব্যবহারকারীর পছন্দের জন্য সবচেয়ে গুরুত্বপূর্ণ কী, তার উপর ভিত্তি করে ওয়েটিং নির্ধারণ করা উচিত। এই উদাহরণের জন্য, ওয়েটিং স্কেল ০ থেকে ১-এর মধ্যে হবে, যেমন:

জায়গার ধরন

ওয়েটিং

রেস্তোরাঁ

০.৮

উদ্যান

০.৬

clothing_store

০.৩

জাদুঘর

০.২

coffee_shop

0.5

Places Aggregate API কল করুন

এখন আপনার কাছে আগ্রহের জায়গার ধরনের তালিকা আছে, পরবর্তী ধাপ হল Places Aggregate API কল করা।

Places Aggregate API-এর জন্য লোকেশন ফিল্টার প্রয়োজন। এই উদাহরণের জন্য circle ব্যবহার করুন, যেখানে latLng হল আপনার হোটেলের লোকেশন এবং radius হল ৫০০ মিটার। এছাড়াও, ratingFilter সেট করুন যাতে ৩.৮ থেকে ৫-এর মধ্যে রেটিং আছে এমন জায়গাগুলি দেখায় এবং কম রেটিং থাকা জায়গাগুলি বাদ দেয়।

আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে লোকেশন ফিল্টারের সেটিংস পরিবর্তন করে পরীক্ষা করুন। যেমন, আপনি হয়ত ব্যাসার্ধের মান বাড়িয়ে আপনার কেন্দ্র অক্ষাংশ ও দ্রাঘিমাংশ থেকে আরও বড় ব্যাসার্ধের মধ্যে জায়গা ক্যাপচার করতে চান। অন্যথায়, আপনি সার্চ করার এলাকা সেট করার জন্য অন্য কোনও পদ্ধতি ব্যবহার করতে চাইতে পারেন, যেমন অঞ্চল বা কাস্টম এলাকা।

আপনার জন্য উপলভ্য বিকল্পগুলি সম্পর্কে জানতে 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-তে সব কল সম্পূর্ণ হওয়ার পরে, আপনার কাছে প্রতিটি লোকেশনের জন্য এই ধরনের ডেটা থাকবে:

জায়গার ধরন

ওয়েটিং

গণনা

রেস্তোরাঁ

০.৮

56

উদ্যান

০.৬

3

clothing_store

০.৩

৩২

জাদুঘর

০.২

8

coffee_shop

0.5

৪১

কাস্টম লোকেশন স্কোর জেনারেট করুন

এখন আপনার কাছে প্রতিটি লোকেশনের জন্য জায়গার সংখ্যা এবং প্রতিটি জায়গার ধরনের জন্য ওয়েটিং আছে, আপনি এখন কাস্টম লোকেশন স্কোর তৈরি করতে পারবেন। আমরা এই বিভাগে দুটি বিকল্প নিয়ে আলোচনা করব, লোকাল অ্যালগরিদম ব্যবহার করা অথবা Gemini Developer API ব্যবহার করা।

বিকল্প ১: অ্যালগরিদম ব্যবহার করা

প্রথম যে বিকল্পটি আমরা কভার করব তা হল প্রতিটি স্থানের প্রকারের জন্য ওজন এবং গণনা ব্যবহার করে একটি স্কোর তৈরি করতে একটি স্থানীয় অ্যালগরিদম ব্যবহার করা। এই স্কোরকে ০ থেকে ৫ স্কেলে নরমালাইজ করুন, যেখানে বেশি ভ্যালু আপনার মাপকাঠির ভিত্তিতে আরও আকর্ষণীয় এলাকাকে নির্দেশ করে। এই উদাহরণের জন্য, উপরের ডেটা থেকে দুটি জাভাস্ক্রিপ্ট অবজেক্ট তৈরি করুন:

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
    }
    

typeWeights-এর সাথে itemCounts গুণ করে এবং সামগ্রিক weightedCount-এ ফলাফল যোগ করে গণনা এবং ওয়েটিং থেকে একটি স্কোর তৈরি করুন:

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

এই উদাহরণের জন্য, এই ধাপের আউটপুট হল: ৭৮.৩।

এখন আপনি লগারিদমিক নরমালাইজেশন ব্যবহার করে ০ থেকে ৫-এর স্কেলে এই লোকেশনের জন্য চূড়ান্ত স্কোর তৈরি করতে পারেন:

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

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

এই উদাহরণের জন্য, চূড়ান্ত স্কোর আউটপুট হল: ৪.৩৬ (দশমিকের পরে দুটি সংখ্যা পর্যন্ত রাউন্ড করা হয়েছে)।

বিকল্প ২: 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-এ ফলাফল আউটপুট করতে বললেও, আউটপুটের স্ট্রাকচার সম্পর্কে আমাদের আরও নির্দিষ্ট হতে হবে, যাতে কোড দিয়ে কোয়েরি করার সময় আমরা কী আশা করতে পারি তা জানতে পারি। এর জন্য, আমরা অনুরোধে একটি অতিরিক্ত স্ট্রাকচার্ড আউটপুট নির্দেশ যোগ করতে পারি, Gemini API-তে responseSchema ফিল্ড ব্যবহার করে। মডেল আউটপুট সীমাবদ্ধ করতে এটি 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"
  }
]

স্কোর দেখান

বর্ণিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করে প্রতিটি লোকেশনের জন্য কাস্টম লোকেশন স্কোর তৈরি করার পরে, এটি আপনার হোটেলের বিবরণের পাশাপাশি দেখানো যেতে পারে, অথবা সার্চ ফিল্টারিং বিকল্প হিসাবে ব্যবহার করা যেতে পারে। যেমন, "আমাকে এমন জায়গা দেখাও যেখানে পর্যটকদের জন্য ভালো স্কোর বেশি"। এর ফলে, আপনার গ্রাহকরা বুকিং করার সময় ডেটার উপর ভিত্তি করে সিদ্ধান্ত নিতে পারবেন।

উপসংহার

কাস্টম লোকেশন স্কোর ব্যবহার করা একটি শক্তিশালী টুল হতে পারে যা আপনার ব্যবহারকারীদের এক নজরে একটি এলাকার উপযুক্ততার ওভারভিউ প্রদান করে। এই ডকুমেন্টটি পাঁচটি পৃথক স্থানের ধরন ব্যবহার করে বিভিন্ন লোকেশনের জন্য কাস্টম লোকেশন স্কোর তৈরি করার পদ্ধতি দেখিয়েছে। আপনার প্রয়োজন অনুযায়ী এই প্রয়োগটি পরিবর্তন করা যেতে পারে এবং একই ধরনের জায়গার ধরন একটি অনুরোধে একত্রিত করা যেতে পারে, যাতে সেই ধরনের মোট সংখ্যা পাওয়া যায়, যা আপনার কাস্টম লোকেশন স্কোরিং সমাধানে প্রদান করা যায়।

আজই Places Aggregate API ব্যবহার করে দেখুন এবং ইনসাইটপূর্ণ লোকেশন স্কোর তৈরি করুন যাতে আপনার গ্রাহকরা লোকেশন-ভিত্তিক সিদ্ধান্ত নেওয়ার সময় সঠিক তথ্য পান!

অবদানকারী

হেনরিক ভালভ | DevX ইঞ্জিনিয়ার