Le Langage des Emplacements Évaluation de la Compétence de Géocodage de l’IA Générative

Évaluation de la compétence de géocodage de l'IA générative

Un projet appliqué détaillant les performances des LLMs pour la géocodification, en comparaison avec les APIs de géocodification modernes

Photo de Sylwia Bartyzel sur Unsplash

La commodité moderne de saisir une localisation dans la barre de recherche de votre téléphone et de la voir apparaître automatiquement sur une carte est souvent considérée comme acquise. Mais vous êtes-vous déjà demandé comment fonctionne réellement cette interaction fluide et cette traduction entre le texte et les cartes ? La réponse à cette question est la géocodification.

Esri, un leader mondial des logiciels géospatiaux, définit la géocodification comme « le processus de transformation d’une description d’une localisation – telle qu’une paire de coordonnées, une adresse ou le nom d’un lieu – en une localisation sur la surface de la Terre ». La géocodification est ce qui permet les fonctionnalités avancées que l’on trouve dans les applications de navigation, les services de cartographie et les plates-formes de science de l’information géographique (GIScience). Divers fournisseurs tels qu’Esri, Google, Mapbox et d’autres fournissent tous des APIs de géocodification capables de prendre des descriptions de localisation et de renvoyer des valeurs de latitude et de longitude, ou des coordonnées, pour les descriptions données, nous permettant ainsi de penser de manière spatiale aux données.

Avec l’avènement de l’IA générative et des Large Language Models (LLMs) tels que GPT d’OpenAI, Bard de Google ou LLaMA de Meta, de nombreuses opportunités s’offrent pour utiliser ces technologies dans des applications géospatiales. Les utilisations sont variées, allant de la génération de code avec Copilot de GitHub à la segmentation d’images avec le modèle Segment Anything de Meta (SAM), ou même potentiellement à la géocodification.

Dans cet article, nous examinerons la pertinence de l’utilisation de l’IA générative « prête à l’emploi » pour la géocodification de descriptions de localisation non structurées. Cette évaluation sera réalisée sur un petit ensemble de données d’accidents de véhicules provenant du Minnesota. Grâce à cette analyse, nous étudierons l’efficacité des LLMs standards dans les tâches de géocodification et explorerons l’un des cas d’utilisation géospatiale potentiels de l’IA générative, en comparaison avec les approches conventionnelles prédominantes.

Comprendre la géocodification et son intégration avec l’IALes géocodeurs modernes se composent de deux composants essentiels : un ensemble de données de référence et un algorithme de géocodification. Les données de référence contiennent souvent des descriptions explicites et relatives de lieux attachées à une localisation géographique, ce qui signifie que non seulement des descriptions explicites comme des adresses sont liées à une localisation, mais aussi des descriptions plus non structurées de lieux sont liées à des localisations. Un algorithme de correspondance peut alors être utilisé pour trouver des correspondances appropriées entre une description d’entrée et les descriptions contenues dans l’ensemble de données de référence. Un exemple simple d’algorithme de correspondance pourrait être l’utilisation d’un algorithme d’interpolation pour localiser une adresse de rue en estimant la position entre deux adresses connues.

Le concept de géocodification prédictive, utilisant l’IA et l’apprentissage automatique pour améliorer le processus de géocodification, a une longue histoire. Des techniques telles que le traitement automatique du langage naturel (NLP) et l’apprentissage profond ont été proposées et utilisées, donnant des niveaux de succès variés. L’utilisation de l’IA et de l’apprentissage automatique dans la géocodification n’est pas un développement récent. Cependant, l’émergence de l’IA générative se présente comme une nouvelle frontière pour la géocodification, tout comme elle l’est pour de nombreux autres domaines.

Surmonter les défis et explorer les opportunités futuresComme vous le savez peut-être, les LLMs sont entraînés à l’aide d’une quantité importante de données textuelles provenant d’Internet, de livres, d’articles de journaux et de diverses autres sources. Cela manque souvent, sinon toujours, d’informations géospatiales complètes. Ce manque de données d’entraînement géospatiales dans les LLMs a des implications sur le potentiel et l’applicabilité de comprendre et de résoudre les défis géospatiaux. Sans connaissance fondamentale spécifique au domaine, comment pouvons-nous nous attendre à ce qu’un modèle performe bien sur un problème complexe ?

La réponse est que nous ne le pouvons tout simplement pas.

Dans cette analyse, j’évalue l’aptitude des LLMs en tant que référence autonome et dans le contexte de workflows utilisant des méthodes traditionnelles de GIScience. Les résultats soulignent un point familier – bien que la nouvelle technologie puisse être impressionnante, elle ne conduit pas toujours à des performances améliorées lorsqu’il s’agit de relever des défis complexes.

Étude de cas : Descriptions de localisation non structurées d’accidents de voiture

Collecte et préparation des donnéesPour tester et quantifier les capacités de géocodification des LLMs, une liste de 100 descriptions de localisation non structurées d’accidents de véhicules dans le Minnesota a été sélectionnée au hasard à partir d’un ensemble de données collectées sur le web. Les coordonnées réelles de tous les accidents ont été créées manuellement à l’aide de diverses applications de cartographie comme Google Maps et de l’application de cartographie du Minnesota Department of Transportation (TMA).

Voici quelques exemples de descriptions d’emplacement.

US Hwy 71 à MN Hwy 60, WINDOM, Comté de Cottonwood

EB Highway 10 près de Joplin St NW, ELK RIVER, Comté de Sherburne

EB I 90 / HWY 22, FOSTER TWP, Comté de Faribault

Milestone 403 de l’autoroute 75, SAINT VINCENT TWP, Comté de Kittson

65 Highway / King Road, BRUNSWICK TWP, Comté de Kanabec

Comme le montrent les exemples ci-dessus, il existe une grande variété de possibilités quant à la structure de la description, ainsi qu’à ce qui définit l’emplacement. Un exemple de cela est la quatrième description, qui comprend un numéro de borne kilométrique, qui est beaucoup moins susceptible d’être trouvé dans un processus de géocodage, car cette information n’est généralement pas incluse dans les données de référence. La recherche des coordonnées réelles pour des descriptions comme celle-ci s’est principalement appuyée sur l’utilisation du système de référence linéaire (LRS) du ministère des Transports du Minnesota, qui fournit une approche normalisée de la mesure des routes dans tout l’État, avec laquelle les bornes kilométriques jouent un rôle essentiel. Ces données peuvent être consultées via l’application TMA mentionnée précédemment.

Méthodologie et stratégies de géocodageAprès avoir préparé les données, cinq notebooks distincts ont été configurés pour tester différentes méthodes de géocodage. Leur configuration est la suivante.

1. API de géocodage de Google, utilisée sur la description d’emplacement brute2. API de géocodage d’Esri, utilisée sur la description d’emplacement brute3. API de géocodage de Google, utilisée sur une description d’emplacement normalisée à l’aide du modèle OpenAI GPT 3.54. API de géocodage d’Esri, utilisée sur une description d’emplacement normalisée à l’aide du modèle OpenAI GPT 3.55. OpenAI GPT 3.5, utilisé en tant que géocodeur à part entière

En résumé, les API de géocodage de Google et d’Esri ont été utilisées à la fois sur les descriptions brutes et sur les descriptions normalisées à l’aide d’une courte phrase d’introduction qui a été transmise au modèle OpenAI GPT 3.5. Le code Python de ce processus de normalisation peut être consulté ci-dessous.

def standardize_location(df, description_series):    df["ai_location_description"] = df[description_series].apply(_gpt_chat)        return df    def _gpt_chat(input_text):    prompt = """Normalisez la description d'emplacement suivante en texte             pouvant être utilisé dans une API de géocodage. En répondant,             ne retournez que le texte de sortie."""        response = openai.ChatCompletion.create(        model="gpt-3.5-turbo",        messages=[            {"role": "system", "content": prompt},            {"role": "user", "content": input_text},        ],        temperature=0.7,        n=1,        max_tokens=150,        stop=None,    )        return response.choices[0].message.content.strip().split("\n")[-1]

Les quatre cas de test utilisant des API de géocodage ont utilisé le code ci-dessous pour effectuer des requêtes API auprès de leurs géocodeurs respectifs et renvoyer les coordonnées résultantes pour les 100 descriptions.

# Géocodeur Esridef geocode_esri(df, description_series):    df["xy"] = df[description_series].apply(        _single_esri_geocode    )        df["x"] = df["xy"].apply(        lambda row: row.split(",")[0].strip()    )    df["y"] = df["xy"].apply(        lambda row: row.split(",")[1].strip()    )        df["x"] = pd.to_numeric(df["x"], errors="coerce")    df["y"] = pd.to_numeric(df["y"], errors="coerce")            df = df[df["x"].notna()]    df = df[df["y"].notna()]        return df    def _single_esri_geocode(input_text):    base_url = "https://geocode-api.arcgis.com/arcgis/rest/services/World/GeocodeServer/findAddressCandidates"    params = {        "f": "json",        "singleLine": input_text,        "maxLocations": "1",        "token": os.environ["GEOCODE_TOKEN"],    }    response = requests.get(base_url, params=params)    data = response.json()    try:        x = data["candidates"][0]["location"]["x"]        y = data["candidates"][0]["location"]["y"]        except:        x = None        y = None    return f"{x}, {y}"

# Géocodeur Googledef geocode_google(df, description_series):    df["xy"] = df[description_series].apply(        _single_google_geocode    )        df["x"] = df["xy"].apply(        lambda row: row.split(",")[0].strip()    )    df["y"] = df["xy"].apply(        lambda row: row.split(",")[1].strip()    )        df["x"] = pd.to_numeric(df["x"], errors="coerce")    df["y"] = pd.to_numeric(df["y"], errors="coerce")            df = df[df["x"].notna()]    df = df[df["y"].notna()]        return df    def _single_google_geocode(input_text):    base_url = "https://maps.googleapis.com/maps/api/geocode/json"    params = {        "address": input_text,        "key": os.environ["GOOGLE_MAPS_KEY"],        "bounds": "43.00,-97.50 49.5,-89.00",    }        response = requests.get(base_url, params=params)    data = response.json()    try:        x = data["results"][0]["geometry"]["location"]["lng"]        y = data["results"][0]["geometry"]["location"]["lat"]        except:        x = None        y = None    return f"{x}, {y}"

De plus, un dernier processus testé consistait à utiliser GPT 3.5 en tant que géocodeur lui-même, sans l’aide d’une API de géocodage. Le code de ce processus ressemblait presque identiquement au code de standardisation utilisé ci-dessus, mais comportait une demande différente, comme indiqué ci-dessous.

Géocodez l’adresse suivante. Renvoyez une latitude (Y) et une longitude (X) aussi précises que possible. Lors de la réponse, ne renvoyez que le texte de sortie dans le format suivant: X, Y

Métriques de performance et observationsUne fois les différents processus développés, chaque processus a été exécuté et plusieurs métriques de performance ont été calculées, tant en termes de temps d’exécution que de précision du géocodage. Ces métriques sont répertoriées ci-dessous.

        |  Processus de géocodage  |  Moyenne  | Écart-type |  MAE   |  RMSE  |        | ------------------------- | --------- | --------- | --------- | --------- |        | Google avec GPT 3.5      | 0.1012    | 1.8537    | 0.3698    | 1.8565    |        | Google avec Raw          | 0.1047    | 1.1383    | 0.2643    | 1.1431    |        | Esri avec GPT 3.5        | 0.0116    | 0.5748    | 0.0736    | 0.5749    |        | Esri avec Raw            | 0.0001    | 0.0396    | 0.0174    | 0.0396    |        | Géocodage avec GPT 3.5   | 2.1261    | 80.022    | 45.416    | 80.050    |

       |  Processus de géocodage  | 75% ET | 90% ET | 95% ET | Temps d'exécution |       | ------------------------- | ------ | ------ | ------ | ---------------- |       | Google avec GPT 3.5      | 0.0683 | 0.3593 | 3.3496 | 1m 59.9s         |       | Google avec Raw          | 0.0849 | 0.4171 | 3.3496 | 0m 23.2s         |       | Esri avec GPT 3.5        | 0.0364 | 0.0641 | 0.1171 | 2m 22.7s         |       | Esri avec Raw            | 0.0362 | 0.0586 | 0.1171 | 0m 51.0s         |       | Géocodage avec GPT 3.5   | 195.54 | 197.86 | 199.13 | 1m 11.9s         |

Les métriques sont expliquées plus en détail ici. La moyenne représente l’erreur moyenne (en termes de distance de Manhattan, ou la somme des différences X et Y par rapport à la vérité terrain, en degrés décimaux). L’écart-type représente l’écart-type de l’erreur (en termes de distance de Manhattan, en degrés décimaux). Le MAE représente l’erreur absolue moyenne (en termes de distance de Manhattan, en degrés décimaux). Le RMSE représente l’erreur quadratique moyenne (en termes de distance de Manhattan, en degrés décimaux). 75%, 90%, 95% ET représente le seuil d’erreur pour ce pourcentage donné (en termes de distance euclidienne, en degrés décimaux), ce qui signifie que pour un pourcentage donné, ce pourcentage d’enregistrements se situe dans la distance résultante par rapport à la vérité terrain. Enfin, le temps d’exécution représente simplement le temps total nécessaire pour exécuter le processus de géocodage sur 100 enregistrements.

De toute évidence, GPT 3.5 se comporte bien moins bien par lui-même. Cependant, si on exclut quelques valeurs aberrantes (qui ont été identifiées par le modèle comme étant situées sur d’autres continents), dans l’ensemble, les résultats de ce processus ne semblent pas trop déplacés, du moins visuellement.

Il est également intéressant de constater que le processus de standardisation LLM a en réalité diminué la précision, ce qui m’a personnellement un peu surpris, puisque mon intention principale en introduisant ce composant était d’améliorer légèrement la précision globale du processus de géocodage. Il convient de noter que les instructions elles-mêmes auraient pu être une partie du problème ici, et il est intéressant d’explorer davantage le rôle de “l’ingénierie de l’instruction” dans les contextes géospatiaux.

La dernière conclusion majeure de cette analyse concerne les différences de temps d’exécution, dans lesquelles tout processus incluant l’utilisation de GPT 3.5 est significativement plus lent. L’API de géocodage d’Esri est également plus lente que celle de Google dans ce cadre. Toutefois, des tests rigoureux n’ont pas été effectués, ces résultats doivent donc être pris en compte.

ConclusionsBien que les capacités de géocodage “prêtes à l’emploi” du modèle GPT 3.5 d’OpenAI ne correspondent pas à la sophistication des géocodeurs modernes, les tests soulignent une perspective potentiellement prometteuse. Les résultats mettent en évidence une marge importante d’amélioration, suggérant que dans un avenir proche, les capacités géospatiales des modèles de langage volumineux (LLMs) ont de nombreuses opportunités d’améliorer et éventuellement d’avoir un impact sur le géocodage tel que nous le connaissons.

Il existe de nombreux cas d’utilisation spécifiques où les LLM pourraient potentiellement être suffisants pour la géocodification, tels quels. Cependant, comme cet exemple le montre, il existe une disparité entre les capacités des LLM et les exigences des tâches de géocodification nécessitant un haut niveau de précision à une résolution spatiale fine. Par conséquent, bien que les LLM présentent un potentiel, cet exemple démontre l’importance de la précision et de l’exactitude pour certaines applications.

En général, l’IA générative se présente comme une innovation passionnante avec des implications et des opportunités étendues et vastes dans le domaine de la géographie et des SIG, y compris pour l’utilisation de la géocodification. Des avancées continuelles sont en cours à un rythme stupéfiant, permettant des progrès continus dans le développement d’intégrations entre l’IA générative et les données géospatiales chaque jour.

Références :[1] Contributeurs de Wikipedia, Géocodification d’adresse (2023), Wikipedia[2] A. Hassan, L’avenir de l’IA géospatiale (2023), Spatial Data Science[3] L. Mearian, Que sont les LLM et comment sont-ils utilisés dans l’IA générative ? (2023), ComputerWorld

Remerciements :Je tiens à exprimer ma gratitude envers le Dr Bryan Runck pour son soutien inestimable, ses conseils et son expertise dans la contribution à la rédaction et à la relecture de cet article.

We will continue to update IPGirl; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AI

Swiggy suit Zomato et Blinkit en intégrant l'IA générative

Swiggy, la plateforme renommée de livraison de nourriture, embrasse le potentiel de l’IA générative pour transf...

AI

Cet article sur l'IA présente une étude sur les tests de syndrome d'insensibilité aux androgènes (AIS) utilisant des modèles d'apprentissage profond

AIS signifie Syndrome d’Insensibilité aux Androgènes. L’AIS est un problème cérébral spinale qui affecte ...

AI

La loi de Benford rencontre l'apprentissage automatique pour détecter les faux abonnés Twitter

Dans le vaste paysage numérique des médias sociaux, l'authenticité des utilisateurs est une préoccupation primordiale...

AI

Dernières avancées dans les noyaux de CNN pour les modèles d'images volumineux

Comme le succès remarquable de ChatGPT d'OpenAI a suscité l'essor des grands modèles de langage, de nombreuses person...

Science des données

Apprentissage automatique | Vincent Warmerdam Calmcode, Explosion, Science des données

Bienvenue à nouveau dans Learning from Machine Learning, une série d'interviews qui explore le monde fascinant de l'a...

AI

Donner aux utilisateurs plus qu'ils ne peuvent gérer

Est-ce que les fichiers d'intelligence artificielle de Microsoft créent des problèmes de sécurité pour les clients?