|
|
|
|
|
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) |
|
|