![]() |
Normalisierung von Adressen / Postalman
Hallo,
ich habe ein etwas älteres Projekt von mir ein wenig überarbeitet und auf Github zur Verfügung gestellt. ( ![]() "99999 Berlin, Peter Lustig, Fanz-Lehar-Str. 2" den "korrekten" Output "Peter Lustig, Franz-Lehar-Str. 2, 99999 Berlin" und natürlich auch aus fast jeder anderen Adresse. außerdem identifiziert Postalman die Adressbestandteile, also die entsprechende Zuordnung von Plz, Strasse, Ort usw. Dieser Teil der Funktionalität geht weitestgehend auf libpostal [1] zurück, wer Postalman nicht einsetzen will kann auch einfach die entsprechenden Headerdateien nehmen und libpostal selbst einbinden. Adressen können innerhalb von Postalman mit Hilfe von Validatoren geprüft werden. Ich habe einen einfachen Validator der auf Nomanitim basiert und der Adressdaten auch mit Längen und Breitengrad anreichern kann. Im Laufe der Zeit werde ich weitere Validatoren hinzufügen. hth Hans Joerg [1] ![]() |
AW: Normalisierung von Adressen / Postalman
Danke, das liest sich interessant. Was muss ich unter "Data directory" einstellen? Wenn ich das Projekt aus Delphi starte erscheint, diese Meldung:
Zitat:
|
AW: Normalisierung von Adressen / Postalman
Vor 'ner Weile (dachte hier, aber vielleicht auch wo anders) eine Diskussion / Artikel gesehn, wo es darum ging ein Sprachmodel (ähnlich, wie man es von ChatGPT kennt) dafür zu nutzen.
Also das war es schon beeinruckend, was damit alles möglich ist. |
AW: Normalisierung von Adressen / Postalman
Zitat:
Die Ordnerstruktur sollte dann so aussehen C:\Workbench\ -->automate4te\ -->data\ -->datastore\ -->libpostal\ -->m4\ -->resources\ -->scripts\ -->src\ In dem Fall sollte alles mit den voreingestellten Werten funktionieren. Wenn man die Daten anderswo hinkopieren will oder selbst trainieren will (Anleitung unter libpostal, alternative Daten) dann muss man natürlich angeben wo die Daten liegen. hth Ha Joe [1] ![]() [2] ![]() [3] ![]() |
AW: Normalisierung von Adressen / Postalman
Zitat:
Aber damit habe ich nichts zu tun, die Arbeit und auch ein (Python) Modul zum Deduplizieren [1] von Adressen (das eine oder andere werde ich noch einbauen) haben die Macher von libpostal gemacht. Ich will, wenn ich irgendwann mit dem Training fertig bin, libpostal eigentlich einsetzen um mit Hilfe von Donut [2] Rechnungen zu parsen und anschließend die Adressen aufzuarbeiten. cu Ha Joe [1] ![]() [2] ![]() |
AW: Normalisierung von Adressen / Postalman
Ich habe die ZIP-Datei geladen und nach "C:\Workbench\" entpackt. Dann klappt es.
Entpacke ich die ZIP-Datei hingegen z.B. nach "C:\WorkbenchX\" und stelle im Programm folgendes ein: Path to libpostal: C:\WorkbenchX\libpostal\src\.libs\libpostal-1.dll Data directory: C:\WorkbenchX\libpostal oder C:\WorkbenchX\libpostal\datastore oder C:\WorkbenchX\libpostal\Data Erscheint dieser Fehler: Im Projekt TestPostal.exe ist eine Exception der Klasse Exception mit der Meldung 'libpostal:Postalman setup error' aufgetreten. Was mache ich falsch? |
AW: Normalisierung von Adressen / Postalman
Zitat:
|
AW: Normalisierung von Adressen / Postalman
Zitat:
Oder wenn du in deinen Daten nach einer Adresse suchst, sie aber nicht findest, weil sie anders gespeichert ist. |
AW: Normalisierung von Adressen / Postalman
Verbesserungsvorschlag zu
Delphi-Quellcode:
ändern in:
function TPostalMan.ParseAddress
(const a: AnsiString; FieldsAndValues: TPostalManValues; useOptions: Boolean = False; useOriginal : Boolean = False) : Boolean; ... try FieldsAndValues.Add(Field,value); except Duplicates.Add(Field,Value); end; ...
Delphi-Quellcode:
try
if not FieldsAndValues.TryAdd(Field,value) then Duplicates.Add(Field,Value); except //Fehlerbehandlung, wenn Hauptspeicher voll oder andere Gründe... end; |
AW: Normalisierung von Adressen / Postalman
Zitat:
Zitat:
|
AW: Normalisierung von Adressen / Postalman
Zitat:
Also Kunde->Hans Joerg Vasold, Schäferspforte.... Verkäufer->Amazon, Koblenz .... Iban->DE 97 .... TaxId-> Brutto-> 1189,00 Netto-> 1189,00 Steuer->0 Währung->€ usw. Dabei fasst man (oder ich) die Daten zu Gruppen zusammen, also beispielsweise die Adresse(n), die Zeile(n) eine Rechnung, den Kopf oder Fuß usw. Das hat Vorteile beim Auszeichnen der Trainingsdaten, insbesondere das ich viel weniger Auszeichnen muss, ist zunächst weniger Fehleranfällig und lässt sich auch leichter trainieren. Es hat aber unter anderem den Nachteil das ich die Gruppen später mit anderen Modellen (die ich ebenfallss trainieren muss) wieder aufsplitten muss. Der Plan ist letztendlich ein Programm zu haben mit dem ich Dokumente (in diesem Fall Rechnungen) verarbeite, ein weiteres Programm zu haben, welches ein verarbeitetes Dokument zusammen mit den erkannten Daten präsentiert (und auch zur Korrektur verwendet werden kann) um anschließend einen Export der erkannten und korrigierten Daten durchzuführen. cu Ha Joe |
AW: Normalisierung von Adressen / Postalman
Zitat:
In der Routine TPostalMan.Setup hat ein API Aufruf zum Setzen des Datenverzeichnisses gefehlt. Hinweis: Wer nur die Headerdatei verwendet und das Datenverzeichnis verändern will muss erst das Datenverzeichnis setzen (libpostal_setup_datadir) bevor setup (libpostal_setup) aufgerufen wird. Hab die entsprechende Datei (Postal.PostalMan) auf github geändert. ps.: bei C:\Workbench\libpostal ist das Datenverzeichnis C:\Workbench\libpostal\datastore\libpostal, bei C:\WorkbenchX\libpostal ist das Datenverzeichnis entsprechend C:\WorkbenchX\libpostal\datastore\libpostal, natürlich können die Daten unterhalb von C:\Workbench\libpostal\datastore\libpostal aber auch in ein anderes Verzeichnis kopiert werden und dann muss eben das als Datenverzeichnis verwendet werden. hth Ha Joe |
AW: Normalisierung von Adressen / Postalman
Zitat:
Ich habe libpostal noch mal selbst gebaut. Wenn ich die selbst gebauten Binaries/Datenverzeichnisse verwende kann ich libpostal an jede beliebige Stelle kopieren, wenn ich die "vorbereiteten" verwende bin ich tatsächlich auf den Pfad C:\Workbench... festgelegt. Es scheint so als ob der Author von pypostalwin an irgendeiner Stelle den Pfad/Pfade fest verdrahtet hätte. Ich werde versuchen die Binaries auf Github in den ächsten Tagen zur Verfügung zu stellen, muss dazu aber ein Release basteln (wegen der Dateigröße) bis dahin wirst Du wohl mit der Lösung "C:\Workbench" auskommen müssen oder die Binaries selbst bauen. Die Anleitung dazu findest du bei libpostal. cu Ha Joe |
AW: Normalisierung von Adressen / Postalman
Zitat:
hth Ha-Jö |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz