from src.nlp.playground.ner import GlinerHandler from src.utils.apis.googlemaps_api import GoogleMapsAPI class AddressExtractor(GoogleMapsAPI): def __init__(self): super().__init__() self.gliner_handler = GlinerHandler() def extract_address(self, data): entities = self.gliner_handler.extract_entities(data, ["STRASSE", "STADT"]) street = house_number = postal_code = city = None for entity in entities: if entity["label"] == "STRASSE": if street is None: street = entity["text"] if entity["label"] == "STADT": if city is None: city = entity["text"] address_text = " ".join([ street if street else "", house_number if house_number else "", postal_code if postal_code else "", city if city else "" ]) return self.address_validation(address_text)