SPB Git

spb/lou-ka Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

HTML 99.7%
17.8 KB · 330 lines markdown
Rendered Raw Blame History
1# Text mining des descriptions — `louka/textmine.py`23Analyse déterministe des descriptions d'annonces, exécutée à l'ingestion4(~1 ms par annonce en moyenne, p95 ≈ 4 ms sur le corpus complet de 3 7635descriptions). Aucune dépendance lourde : ni spaCy, ni LLM — uniquement des6règles et des expressions régulières françaises, plus la réutilisation des7extracteurs de `louka/normalize.py` (`parse_price`, `parse_availability_date`,8`extract_details`, `strip_accents`).910## API1112```python13from louka.textmine import analyser1415resultat = analyser(description, price=..., sector=..., city=...)16# None si description vide ou < 40 caractères, sinon un dict JSON strict17```1819Les arguments `price`, `sector` et `city` (champs de l'annonce) ne servent20qu'aux contrôles de cohérence — jamais à inventer un fait absent du texte.2122## Pipeline2324### Étape A — nettoyage (déterministe)2526- **Lignes/segments EN MAJUSCULES** (> 60 % de majuscules, > 8 caractères,27  ≤ 60, sans `!`/`?` ni point final) → titres de section, remis en28  capitalisation de titre (« L'ESPACE DE VIE » → « L'espace de vie »).29  Les phrases criées (« FRAIS PEINT !! ») sont remises en casse de phrase30  sans devenir des titres. Garde-fou : une description entièrement en31  majuscules ne produit aucun titre.32- **Mots consécutifs dupliqués** (« Disponible disponible » → « Disponible »),33  insensible à la casse et aux accents, avec récupération de la ponctuation.34- **Phrases collées** : « lumineuxVenez » → « lumineux. Venez » (deux35  minuscules + majuscule + trois minuscules ; « McDonald » est épargné).36- **Typographie québécoise** : espace insécable avant `$` et `%`37  (« 450$ » → « 450 $ »), espaces multiples réduits, puces variées → « • ».38- **Ponctuation répétée** neutralisée (« !!! » → « ! »).39- Les paragraphes (sauts de ligne) sont préservés dans `texte_nettoye`.4041### Étape B — extraction de faits4243- `prix_mensuel` et `date_disponibilite` via `normalize.parse_price` /44  `parse_availability_date` ; la disponibilité est ancrée sur un mot-clé45  (« disponible », « libre », « occupation ») pour ne pas dater une porte46  ouverte, et « indisponible » est écarté.47- `extract_details` de normalize fournit la base (inclusions,48  électroménagers, animaux, fumeur, meublé) ; le texte nettoyé lui est passé49  ligne par ligne (pré-filtré et tronçonné) pour garder ses motifs négatifs50  précis et l'exécution rapide.51- Compléments propres au module : durée de bail minimale (« minimum52  3 mois », « bail d'un an »), nombre d'occupants (« Total de53  11 chambreurs », « colocation de 5 »), salle de bain / cuisine commune ou54  privée, micro-ondes/poêle, dépôt mentionné (extrait source, jamais55  reformulé), quartier mentionné (≈ 40 quartiers courants de Québec, Lévis56  et du Grand Montréal).5758### Étape C — sections5960- Texte découpé selon les titres détectés à l'étape A (le préambule devient61  « Description »).62- Sans titres et texte > 400 caractères : découpage par thème via ancres63  regex — règles/interdits → « Bon à savoir » ; colocation/espaces communs →64  « L'espace de vie » ; frais/inclusions → « Frais et conditions » ; reste →65  « Description ».66- Chaque section est du texte source nettoyé, **jamais reformulé**.6768### Étape D — synthèse6970- `en_bref` : 1 à 3 phrases assemblées **par gabarit** à partir des seuls71  faits en confiance « haute » (aucune invention) : loyer/disponibilité,72  meublé/inclusions, vie commune/bail.73- `confiance` : « haute » ou « faible » par fait extrait (prix sans contexte74  mensuel, durée de bail dans une promotion, quartier sans préposition… →75  « faible », non affiché en badge).76- `incoherences` : quartier mentionné ≠ secteur de l'annonce, quartier d'une77  autre ville, prix du texte ≠ prix de l'annonce.78- `completude` (0-100) : prix 20, disponibilité 15, inclusions 20,79  sdb/cuisine 10, occupants 10, contraintes 10, texte > 200 caractères 15.8081## Complétude sur le corpus8283- 20 annonces aléatoires (graine 42) : moyenne **26,5 / 100**84  (valeurs : 0, 80, 35, 15, 0, 55, 15, 50, 35, 45, 0, 20, 15, 15, 0, 20, 60, 35, 35, 0).85- Corpus complet (3 763 descriptions ≥ 40 caractères) : moyenne **18,9 / 100**86  — la plupart des descriptions de gestionnaires sont du texte de marque87  sans prix ni disponibilité, ce que le score reflète.8889## Exemples réels (JSON produit)9091### `gestipro:24813` — 2435 boul. Laurier (Gestipro) — chambre, cas de référence92```json93{94 "version": 1,95 "texte_nettoye": "Chambre meublé de base en location située au 2435 boul. Laurier à Sillery. Disponible\ndès maintenant\nà 450 $ par mois, chauffage, électricité, eau chaude et wifi inclus. Location pour minimum 3 mois.\nL’espace de vie\nTotal de 11 chambreurs dans la maison\nCuisine et salle de bain commune aux autres occupants de l’appartement\nRéfrigérateur, cuisinière, laveuse et sécheuse inclus dans les pièces communes\nChambre meublée de base comme sur les photos, pour occupation simple seulement\n\nFrais et charges\nChauffage, eau chaude et électricité inclus\nWifi inclus\nÀ proximité / secteur\nSecteur très prisé de la ville\nÀ proximité des ponts, de l’autoroute Robert-Bourassa et de l’autoroute Henri IV\nPrès de tous les services de Sillery et Ste-Foy dont Laurier Québec, Place de la Cité et Place Ste-Foy.\nUniversité Laval à distance de marche\nPrendre note qu’afin d’offrir à nos locataires une tranquillité, les animaux ne sont pas acceptés. Enquête de crédit obligatoire pour tous nos nouveaux locataires.\nPour visiter, communiquez avec Gestipro au 418-522-2525 poste 1\nPour consulter tous nos appartements à louer, visitez le www.gestipro.info",96 "en_bref": "Loyer de 450 $ par mois, disponible dès maintenant. Meublé ; chauffage, électricité, eau chaude et wifi inclus. 11 occupants au total, cuisine et salle de bain communes, bail minimum de 3 mois.",97 "sections": [98  {99   "titre": "Description",100   "texte": "Chambre meublé de base en location située au 2435 boul. Laurier à Sillery. Disponible\ndès maintenant\nà 450 $ par mois, chauffage, électricité, eau chaude et wifi inclus. Location pour minimum 3 mois."101  },102  {103   "titre": "L’espace de vie",104   "texte": "Total de 11 chambreurs dans la maison\nCuisine et salle de bain commune aux autres occupants de l’appartement\nRéfrigérateur, cuisinière, laveuse et sécheuse inclus dans les pièces communes\nChambre meublée de base comme sur les photos, pour occupation simple seulement"105  },106  {107   "titre": "Frais et charges",108   "texte": "Chauffage, eau chaude et électricité inclus\nWifi inclus"109  },110  {111   "titre": "À proximité / secteur",112   "texte": "Secteur très prisé de la ville\nÀ proximité des ponts, de l’autoroute Robert-Bourassa et de l’autoroute Henri IV\nPrès de tous les services de Sillery et Ste-Foy dont Laurier Québec, Place de la Cité et Place Ste-Foy.\nUniversité Laval à distance de marche\nPrendre note qu’afin d’offrir à nos locataires une tranquillité, les animaux ne sont pas acceptés. Enquête de crédit obligatoire pour tous nos nouveaux locataires.\nPour visiter, communiquez avec Gestipro au 418-522-2525 poste 1\nPour consulter tous nos appartements à louer, visitez le www.gestipro.info"113  }114 ],115 "faits": {116  "prix_mensuel": 450.0,117  "date_disponibilite": "now",118  "duree_bail_minimale_mois": 3,119  "nb_occupants_total": 11,120  "salle_de_bain": "commune",121  "cuisine": "commune",122  "electromenagers": [123   "frigo",124   "cuisiniere",125   "laveuse",126   "secheuse"127  ],128  "inclusions": [129   "chauffage",130   "electricite",131   "eau_chaude",132   "wifi",133   "meuble"134  ],135  "contraintes": [136   "pas_d_animaux",137   "references_requises",138   "occupation_simple"139  ],140  "depot_mentionne": null,141  "quartier_mentionne": "Sillery"142 },143 "confiance": {144  "prix_mensuel": "haute",145  "date_disponibilite": "haute",146  "duree_bail_minimale_mois": "haute",147  "nb_occupants_total": "haute",148  "salle_de_bain": "haute",149  "cuisine": "haute",150  "electromenagers": "haute",151  "inclusions": "haute",152  "contraintes": "haute",153  "quartier_mentionne": "haute"154 },155 "incoherences": [156  "quartier mentionné (Sillery) ≠ secteur de l'annonce (Sainte-Foy)"157 ],158 "completude": 100159}160```161162### `gimcote:10143` — 606 rue Napoléon (GIM Côté) — 3½ Saint-Jean-Baptiste163```json164{165 "version": 1,166 "texte_nettoye": "418-655-8281\nÀ voir au 606 rue Napoléon, superbe grand 3 1/2, entièrement refait à neuf ! Situé dans un immeuble tranquille, situé au 2e et dernier étage. Galerie arrière.\nFrais peint !\nTrès belle cuisine avec magnifiques armoires. Logement bien éclairé!\nPossibilité d’avoir laveuse-sécheuse et frigo inclus moyennant un supplément.\nPlancher de bois et céramique.\nBelle salle de bain, entrée laveuse-sécheuse.\nInstallation lave-vaisselle.\nNon-fumeur.\nChat opéré accepté, pas de chien.\nSituation idéal, en plein coeur du Centre-Ville, accès rapide à la Haute-Ville et aux commerces de la Cité Électronique. Tout les services à proximité tel que épicerie, banques, pharmacie, restaurant etc.. Transport en commun très proche !\n850 $ par mois non-chauffé, non-éclairé\nLibre maintenant\nPour plus d’information ou pour visité, téléphonez à Michel au 418-655-8281",167 "en_bref": "Loyer de 850 $ par mois, disponible dès maintenant.",168 "sections": [169  {170   "titre": "Description",171   "texte": "418-655-8281 À voir au 606 rue Napoléon, superbe grand 3 1/2, entièrement refait à neuf ! Situé dans un immeuble tranquille, situé au 2e et dernier étage. Galerie arrière. Très belle cuisine avec magnifiques armoires. Logement bien éclairé! Plancher de bois et céramique. Belle salle de bain, entrée laveuse-sécheuse. Installation lave-vaisselle. Chat opéré accepté, pas de chien. Situation idéal, en plein coeur du Centre-Ville, accès rapide à la Haute-Ville et aux commerces de la Cité Électronique. Tout les services à proximité tel que épicerie, banques, pharmacie, restaurant etc.. Transport en commun très proche ! Libre maintenant Pour plus d’information ou pour visité, téléphonez à Michel au 418-655-8281"172  },173  {174   "titre": "Frais et conditions",175   "texte": "Frais peint ! Possibilité d’avoir laveuse-sécheuse et frigo inclus moyennant un supplément. 850 $ par mois non-chauffé, non-éclairé"176  },177  {178   "titre": "Bon à savoir",179   "texte": "Non-fumeur."180  }181 ],182 "faits": {183  "prix_mensuel": 850.0,184  "date_disponibilite": "now",185  "duree_bail_minimale_mois": null,186  "nb_occupants_total": null,187  "salle_de_bain": null,188  "cuisine": null,189  "electromenagers": [190   "frigo",191   "lave_vaisselle"192  ],193  "inclusions": [],194  "contraintes": [195   "non_fumeur"196  ],197  "depot_mentionne": null,198  "quartier_mentionne": null199 },200 "confiance": {201  "prix_mensuel": "haute",202  "date_disponibilite": "haute",203  "electromenagers": "haute",204  "contraintes": "haute"205 },206 "incoherences": [],207 "completude": 60208}209```210211### `immomarketing:10150-rue-lajeunesse-montreal-3-et-demi` — 10150 rue Lajeunesse (Immo Marketing) — 3½ Ahuntsic212```json213{214 "version": 1,215 "texte_nettoye": "Promotion 2 mois gratuit sur certaines\nUNITÉS ! À louer – Charmant 3 ½ au cœur de Ahuntsic-Cartierville Découvrez ce 3 ½ lumineux et bien entretenu , situé dans un secteur recherché de Cartierville, à deux pas de la station de métro Sauvé (ligne orange). Parfait pour une personne seule ou un couple à la recherche d’un environnement urbain pratique, avec un accès facile aux services essentiels. Ce qui est inclus : Cuisinière et réfrigérateur Chauffage et eau chaude Service de buanderie dans l’immeuble Un emplacement de choix : À moins de 5 minutes à pied du métro Sauvé Épiceries, écoles et pharmacies à proximité Entouré de nombreux parcs et espaces verts , parfaits pour vos moments de détente ou vos activités de plein air Informations supplémentaires Non-fumeur Animaux non acceptés Enquête de crédit exigée Photos à titre indicatif Gestionnaire de l’immeuble Pour toute demande de visite ou information concernant l’immeuble, veuillez communiquer directement avec le gestionnaire : Guy : 438-373-7153 Sadrack : 514-998-8421 Il se fera un plaisir de vous répondre. N’attendez plus pour planifier votre visite! Ce logement allie confort, accessibilité et tranquillité dans un quartier en pleine vie. — 1 chambre(s), 1 salle(s) de bain.",216 "en_bref": "Chauffage et eau chaude inclus.",217 "sections": [218  {219   "titre": "Promotion 2 mois gratuit sur certaines",220   "texte": "UNITÉS ! À louer – Charmant 3 ½ au cœur de Ahuntsic-Cartierville Découvrez ce 3 ½ lumineux et bien entretenu , situé dans un secteur recherché de Cartierville, à deux pas de la station de métro Sauvé (ligne orange). Parfait pour une personne seule ou un couple à la recherche d’un environnement urbain pratique, avec un accès facile aux services essentiels. Ce qui est inclus : Cuisinière et réfrigérateur Chauffage et eau chaude Service de buanderie dans l’immeuble Un emplacement de choix : À moins de 5 minutes à pied du métro Sauvé Épiceries, écoles et pharmacies à proximité Entouré de nombreux parcs et espaces verts , parfaits pour vos moments de détente ou vos activités de plein air Informations supplémentaires Non-fumeur Animaux non acceptés Enquête de crédit exigée Photos à titre indicatif Gestionnaire de l’immeuble Pour toute demande de visite ou information concernant l’immeuble, veuillez communiquer directement avec le gestionnaire : Guy : 438-373-7153 Sadrack : 514-998-8421 Il se fera un plaisir de vous répondre. N’attendez plus pour planifier votre visite! Ce logement allie confort, accessibilité et tranquillité dans un quartier en pleine vie. — 1 chambre(s), 1 salle(s) de bain."221  }222 ],223 "faits": {224  "prix_mensuel": null,225  "date_disponibilite": null,226  "duree_bail_minimale_mois": null,227  "nb_occupants_total": null,228  "salle_de_bain": null,229  "cuisine": null,230  "electromenagers": [231   "frigo",232   "cuisiniere"233  ],234  "inclusions": [235   "chauffage",236   "eau_chaude"237  ],238  "contraintes": [239   "non_fumeur",240   "pas_d_animaux",241   "references_requises"242  ],243  "depot_mentionne": null,244  "quartier_mentionne": "Ahuntsic"245 },246 "confiance": {247  "electromenagers": "haute",248  "inclusions": "haute",249  "contraintes": "haute",250  "quartier_mentionne": "haute"251 },252 "incoherences": [],253 "completude": 45254}255```256257### `progim:332233` — Progim 332233 — texte générique de gestionnaire258```json259{260 "version": 1,261 "texte_nettoye": "Situé dans le secteur paisible et recherché de Dorval, cet appartement bénéficie d’un emplacement idéal à proximité du bord de l’eau, de plusieurs parcs, commerces et services essentiels, tout en offrant un accès rapide aux autoroutes et au transport en commun. Il offre : • • • L’immeuble se trouve dans un environnement calme et résidentiel, parfait pour les familles, couples et professionnels recherchant une qualité de vie agréable à proximité du centre-ville et de l’aéroport. Points forts du secteur : • À proximité du bord de l’eau et du chemin du Bord-du-Lac-Lakeshore • Près des parcs Winds",262 "en_bref": null,263 "sections": [264  {265   "titre": "Description",266   "texte": "Situé dans le secteur paisible et recherché de Dorval, cet appartement bénéficie d’un emplacement idéal à proximité du bord de l’eau, de plusieurs parcs, commerces et services essentiels, tout en offrant un accès rapide aux autoroutes et au transport en commun. Il offre : • • • L’immeuble se trouve dans un environnement calme et résidentiel, parfait pour les familles, couples et professionnels recherchant une qualité de vie agréable à proximité du centre-ville et de l’aéroport. Points forts du secteur : • À proximité du bord de l’eau et du chemin du Bord-du-Lac-Lakeshore • Près des parcs Winds"267  }268 ],269 "faits": {270  "prix_mensuel": null,271  "date_disponibilite": null,272  "duree_bail_minimale_mois": null,273  "nb_occupants_total": null,274  "salle_de_bain": null,275  "cuisine": null,276  "electromenagers": [],277  "inclusions": [],278  "contraintes": [],279  "depot_mentionne": null,280  "quartier_mentionne": null281 },282 "confiance": {},283 "incoherences": [],284 "completude": 15285}286```287288### `cogir:1522-3` — Cogir 1522-3 — texte de marque d'un projet locatif289```json290{291 "version": 1,292 "texte_nettoye": "Les condos Domo à louer dans le Vieux-Montréal proposent des unités élégantes avec électroménagers et services inclus. Profitez d'une boulangerie et du marché Aisle 24 directement dans votre immeuble. Les espaces communs somptueux comprennent une piscine sur le toit, une terrasse, un salon social ainsi qu'une salle de sport entièrement équipée. L'entrée sans clé et le stationnement souterrain, ainsi que les espaces de rangement et les supports à vélos, ajoutent un niveau supplémentaire de commodité.",293 "en_bref": null,294 "sections": [295  {296   "titre": "Description",297   "texte": "Profitez d'une boulangerie et du marché Aisle 24 directement dans votre immeuble."298  },299  {300   "titre": "L'espace de vie",301   "texte": "Les espaces communs somptueux comprennent une piscine sur le toit, une terrasse, un salon social ainsi qu'une salle de sport entièrement équipée."302  },303  {304   "titre": "Frais et conditions",305   "texte": "Les condos Domo à louer dans le Vieux-Montréal proposent des unités élégantes avec électroménagers et services inclus. L'entrée sans clé et le stationnement souterrain, ainsi que les espaces de rangement et les supports à vélos, ajoutent un niveau supplémentaire de commodité."306  }307 ],308 "faits": {309  "prix_mensuel": null,310  "date_disponibilite": null,311  "duree_bail_minimale_mois": null,312  "nb_occupants_total": null,313  "salle_de_bain": null,314  "cuisine": null,315  "electromenagers": [316   "frigo"317  ],318  "inclusions": [],319  "contraintes": [],320  "depot_mentionne": null,321  "quartier_mentionne": null322 },323 "confiance": {324  "electromenagers": "haute"325 },326 "incoherences": [],327 "completude": 15328}329```330