Mit der Places Aggregate API einen benutzerdefinierten Standortbewertungswert erstellen

Ziel

Image

Die Suche nach der idealen Unterkunft, sei es ein Hotel für Ihren nächsten Urlaub oder eine familienfreundliche Ferienwohnung, ist oft frustrierend und zeitaufwendig, da Sie zahlreiche Optionen vergleichen müssen. Was wäre, wenn Sie Ihren Nutzern diese Entscheidung erleichtern könnten, indem Sie einen benutzerdefinierten Messwert angeben, der die Eignung eines Hotels für Touristen verrät, oder Wohnungsanzeigen nach ihrer Familienfreundlichkeit bewerten? So wird eine mühsame Aufgabe zu einer mühelosen Entscheidung.

In diesem Dokument wird beschrieben, wie Sie mit der Places Aggregate API dynamische, benutzerdefinierte Standortbewertungen basierend auf der Dichte von Orten in einem bestimmten geografischen Gebiet generieren. Anhand der Punktzahl, einer numerischen Bewertung anhand Ihrer angegebenen Kriterien, sehen Nutzer sofort, wie gut der Standort für ihre Anforderungen geeignet ist.

Angenommen, Sie werben für Hotels in einer Stadt und möchten die Hotels in den attraktivsten Touristengebieten hervorheben, indem Sie einen Wert für Touristen erstellen. Mit der Places Aggregate API können Sie zählen, wie viele relevante Ortstypen sich in der Nähe jedes Hotels befinden. Angenommen, Sie wissen, dass Ihre Kunden Hotels an Orten schätzen, die sich in der Nähe von Folgendem befinden:

  • Restaurants und Cafés
  • Parks und Museen
  • Bekleidungsgeschäfte

Wenn Sie die Anzahl dieser ausgewählten Ortstypen gewichten, können Sie eine Gesamtbewertung für jeden Hotelstandort berechnen. Die Bewertung spiegelt die allgemeine Eignung des Standorts anhand der Orte in der Nähe wider. Die den einzelnen Ortstypen zugewiesenen Gewichtungen sollten Ihrem spezifischen Anwendungsfall und den Anforderungen Ihrer Zielgruppe entsprechen. In diesem Dokument wird als Hauptbeispiel die Bewertung gut für Touristen verwendet. Sie können Ihre Bewertung jedoch so gestalten, dass sie die demografischen Merkmale und Anforderungen Ihrer Nutzer widerspiegelt.

Vorbereitung

Bevor Sie dieses Dokument lesen, sollten Sie mit der folgenden Dokumentation vertraut sein:

  • In der Entwicklerdokumentation zur Places Aggregate API finden Sie technische Details und Informationen zu den verfügbaren Parametern.
  • [Optional] In der Gemini Developer API erfahren Sie, wie Sie Gemini über eine API aufrufen. Diese API wird in diesem Dokument als Option zum Generieren des benutzerdefinierten Standortbewertungswerts verwendet.

Demo

In dieser Demo wird ein Beispiel für die benutzerdefinierte Standortbewertung gezeigt. Wählen Sie im Drop-down-Menü eine Stadt aus und klicken Sie auf die Schaltfläche Benutzerdefinierten Wert berechnen, um den benutzerdefinierten Standortwert für fünf vorab ausgefüllte Standorte aufzurufen.

Relevante Ortstypen auswählen

Der erste Schritt zum Erstellen Ihres benutzerdefinierten Standortbewertungsfaktors besteht darin, die für Ihre Kunden relevanten Ortstypen aus Tabelle A auszuwählen. Für die Bewertung Gute Lage für Touristen haben wir die folgenden Ortstypen ausgewählt, in deren Nähe sich Touristen während ihres Aufenthalts aufhalten möchten:

  • Restaurant
  • Park
  • Bekleidungsgeschäft
  • Museum
  • coffee_shop

Weisen Sie als Nächstes jedem dieser Ortstypen eine Gewichtung zu, die seine relative Bedeutung in der Endbewertung widerspiegelt. Die Gewichtungen sollten anhand dessen festgelegt werden, was für Ihren Anwendungsfall und die Präferenzen Ihrer Nutzer am wichtigsten ist. In diesem Beispiel liegt die Gewichtungsskala zwischen 0 und 1:

Ortstyp

Gewichtung

Restaurant

0,8

Park

0,6

Bekleidungsgeschäft

0,3

Museum

0,2

coffee_shop

0,5

Places Aggregate API aufrufen

Nachdem Sie eine Liste der für Sie interessanten Ortstypen erstellt haben, rufen Sie als Nächstes die Places Aggregate API auf.

Für die Places Aggregate API ist ein Standortfilter erforderlich. Verwenden Sie für dieses Beispiel circle, wobei der Mittelpunkt latLng der Standort Ihres Hotels ist und radius 500 m beträgt. Legen Sie außerdem ratingFilter so fest, dass Orte mit einer Bewertung zwischen 3,8 und 5 zurückgegeben werden.Orte mit niedrigerer Bewertung werden von der Zählung ausgeschlossen.

Sie können die Einstellungen des Standortfilters für Ihren Anwendungsfall variieren. Wenn Sie beispielsweise Orte in einem größeren Umkreis um Ihren Mittelpunkt erfassen möchten, können Sie den Wert für den Radius erhöhen. Alternativ können Sie auch eine andere Methode zum Festlegen des Suchgebiets verwenden, z. B. Region oder Benutzerdefinierter Bereich.

Lesen Sie den Abschnitt zum Standortfilter in der Dokumentation zur Places Aggregate API, um mehr über die verfügbaren Optionen zu erfahren.

Rufen Sie die Places Aggregate API für jeden Ortstyp und jeden Standort auf, für den Sie einen benutzerdefinierten Wert generieren möchten. So rufen Sie beispielsweise den Ortstyp „Restaurant“ für eines Ihrer Hotels ab:

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
        }
    }
}'

Nachdem alle API-Aufrufe abgeschlossen sind, sehen die Daten für jeden Standort so aus:

Ortstyp

Gewichtung

Anzahl

Restaurant

0,8

56

Park

0,6

3

Bekleidungsgeschäft

0,3

32

Museum

0,2

8

coffee_shop

0,5

41

Benutzerdefinierte Standortbewertung generieren

Jetzt haben Sie die Anzahl der Orte und die Gewichtung für jeden Ortstyp für jeden Standort. Sie können jetzt den benutzerdefinierten Standortbewertungswert generieren. In diesem Abschnitt werden zwei Optionen beschrieben: die Verwendung eines lokalen Algorithmus oder die Verwendung der Gemini Developer API.

Option 1: Algorithmus verwenden

Die erste Option, die wir behandeln, ist die Verwendung eines lokalen Algorithmus, um anhand der Gewichtungen und Zählungen für jeden Ortstyp eine Bewertung zu generieren. Normalisieren Sie diesen Wert auf einer Skala von 0 bis 5, wobei höhere Werte auf einen attraktiveren Bereich basierend auf Ihren Kriterien hinweisen. Erstellen Sie für dieses Beispiel zwei JavaScript-Objekte aus den obigen Daten:

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
    }
    

Ermitteln Sie eine Bewertung aus den Zählungen und Gewichtungen, indem Sie die itemCounts mit der typeWeights multiplizieren und die Ergebnisse zu einer Gesamtbewertung von weightedCount addieren:

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

In diesem Beispiel lautet die Ausgabe dieses Schritts: 78, 3.

Jetzt können Sie mithilfe der logarithmischen Kalibrierung die endgültige Bewertung für diesen Standort auf einer Skala von 0 bis 5 generieren:

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

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

In diesem Beispiel lautet die endgültige Bewertung 4, 36 (auf zwei Dezimalstellen gerundet).

Option 2: Gemini Developer API verwenden

Als Alternative zur Verwendung eines lokalen Algorithmus bietet die Gemini Developer API eine leistungsstarke Möglichkeit, den benutzerdefinierten Standortwert für alle Standorte zu berechnen. Geben Sie einfach die Anzahl und die Gewichtungsdaten mit Systemanweisungen für alle Ihre Hotelstandorte an.

Diese Methode ist besonders nützlich, wenn Sie differenzierte Informationen haben, die Sie in die Berechnung einbeziehen möchten, z. B.:

  • Textbeschreibungen für jeden Hotelstandort, z. B.: „Dieser Standort ist für Familien geeignet und die Gegend ist nachts ruhig.“
  • Informationen zu Ihrem Nutzer, z. B.: „Dieser Nutzer bucht für eine Familie und bevorzugt eine ruhige Gegend in zentraler Lage.“

Die Gemini Developer API kann diese qualitativen Daten verstehen und berücksichtigen, was zu einem ausgefeilteren und relevanteren Wert führt, der über einen rein mathematischen Ansatz hinausgeht.

Wenn Sie die Gemini Developer API verwenden, können Sie zusätzlich zu den oben genannten Ortstypen und Gewichtungstabellen Beschreibungsdaten für jeden Standort angeben, die so aussehen:

Standort

Beschreibung

51.49884, -0.17978

Zentrale Lage in der Nähe von Museen, nachts ruhig und für Familien geeignet.

51.51750, -0.13065

Zentrale Lage in der Nähe von Bars und Restaurants. Nachts laut und voll, gut für Gruppen.

51.45712, 0.01146

Wohngegend weit vom Stadtzentrum entfernt

51.51271, -0.09933

Zentrale Lage in der Nähe des Flusses. Ruhig in der Nacht und für Familien geeignet.

51.58502, -0.06445

Wohngegend weit vom Stadtzentrum entfernt

Diese qualitativen Beschreibungen können zusammen mit allen Nutzerinformationen oder -einstellungen in Ihren Prompt für Gemini aufgenommen werden.

Systemanweisungen

Gemini benötigt neben den Rohdaten eine Anleitung, damit es weiß, dass eine Bewertung für jeden Standort basierend auf den bereitgestellten Datenpunkten generiert werden soll. Eine Beispielanleitung für das System könnte so lauten:

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

Anhand der obigen Systemanweisungen weiß Gemini, welche Daten zu erwarten sind und welche Ausgabe vom KI-Modell erwartet wird. Außerdem wird die Ausgabe in JSON angefordert.

Strukturierte Ausgabe

Wir haben Gemini zwar gebeten, das Ergebnis in JSON auszugeben, müssen aber genauere Angaben zur Struktur der Ausgabe machen, damit wir wissen, was wir erwarten können, wenn wir sie mit Code abfragen. Dazu können wir der Anfrage eine zusätzliche Anweisung für strukturierte Ausgabe hinzufügen, indem wir das Feld responseSchema in der Gemini API verwenden. Dazu wird ein OpenAPI-Schemaobjekt verwendet, um die Modellausgabe einzuschränken.

Beispiel:

{
  "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"
    ]
  }
}

In diesem Beispiel wird Gemini aufgefordert, ein JavaScript-Array mit den folgenden Elementen auszugeben:

  • Breiten- und Längengrad des Standorts
  • Bewertung des benutzerdefinierten Standorts

Mit den obigen Systemanweisungen und der strukturierten Ausgabe würde die Antwort von Gemini für einen Standort so aussehen. Dabei steht score für den benutzerdefinierten Standortfaktor:

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

Bewertung anzeigen

Nachdem Sie den benutzerdefinierten Standortbewertungsfaktor für jeden Standort mit einer der beschriebenen Methoden generiert haben, kann er zusammen mit den Details Ihres Hotels angezeigt oder als Suchfilteroption verwendet werden. Beispiel: „Zeig mir Orte mit einer hohen Bewertung für gut für Touristen.“ So können Ihre Kunden bei der Buchung fundierte Entscheidungen treffen.

Fazit

Mit benutzerdefinierten Standortbewertungen können Sie Nutzern auf einen Blick einen Überblick über die Eignung eines Gebiets geben. In diesem Dokument wurde gezeigt, wie benutzerdefinierte Standortbewertungen für verschiedene Standorte mithilfe von fünf separaten Ortstypen generiert werden. Diese Implementierung kann an Ihre Anforderungen angepasst werden. Ähnliche Ortstypen können in einer Anfrage kombiniert werden, um die Gesamtzahl dieser Typen zurückzugeben, die dann in Ihre benutzerdefinierte Lösung zur Standortbewertung einfließen.

Probieren Sie die Places Aggregate API aus, um aussagekräftige Standortbewertungen zu generieren, die Ihren Kunden helfen, fundierte standortbezogene Entscheidungen zu treffen.

Beitragende

Henrik Valve | DevX-Ingenieur