ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
608
608
EMPFEHLEN
-
20.06.06 20:25 #1
- Registriert seit
- Mar 2004
- Beiträge
- 17
Hey und Hallo,
Vorwort:
vielleicht hat ja jemand von euch eine Idee wie ich das folgende Problem lösen kann/ könnte. Mein Arbeitgeber entwickelt eine Handelssoftware, wo in der Datenbank auch die Adressen der Kunden (Name, Strasse, PLZ, ... ) gespeichert werden.
Die EU gibt in regelmäßigen Abständen eine Sanktionsliste im XML Format raus, die Adressdaten enhält. Diese in der XML enthaltenen Daten spiegeln Personen/ Unternehmungen nieder, mit denen man lieber keinen Handel betreiben sollte (z.B. Saddam Hussein, Bin Laden, ...) Jetzt soll ich ein Programm entwickeln mit den ich die Adressdaten aus der XML Datei gegen die Adressdaten unserer Software vergleichen muss, was soweit bis auf die eigentliche Prüfung nun auch fertig ist.
Problembeschreibung:
Mein Problem ist einfach jenes, dass die Daten in der XML Datei als auch die aus unserer Software ja seltens von den Anwendern genauso gepflegt werden.
z.B.: Firmenname Ltd, Firmenname Ltd., Firmenname Limited für Firmenbezeichnungen oder Berlinerstrasse 1, Berliner Strasse 1, Berliner Str. 1 für Strassennamen
Kennt jemand eine Methode/ Algorithmus wie ich zwei Zeichenketten miteinander auf Ähnlichkeit vergleichen kann. Diese Methode/ Algorithmus mir evtl. einen Zahlenwert zurückgeben zu wieviel Prozent die beiden Zeichenketten übereinstimmen.
Oder überhaupt eine Anregung wie ich diesen Notwendigen Vergleich realisieren könnte bzw.wie ich da vorgehen könnte ?!
MFG, Maik
-
Hi,
In den Einzelnen Felder hast du ja Stichworte "Ltd", "Firmenname",... diese Einzelnen Worte könntest du in den von euch gespeicherten Daten suchen.
Dafür könntest du die IndexOf()-Methode der String-KLasse nutzen. Wenn dir diese -1 zurück gibt, ist das Wort in dem zu durchsuchenden String nicht enthalten.Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
20.06.06 21:10 #3
- Registriert seit
- Mar 2004
- Beiträge
- 17
Das funktioniert theoretisch schon, aber praktisch ist es leider nicht. Problem ist ja nunmal das ich keine Möglichkeiten habe die Zeichenketten anhand eines festen "Trenners" zu spliten. Mal ist es ein . (Punkt), denn ein Freizeichen, denn ein - (Minus) ,...
Aus der XML bekomme ich aktuell fast 6000 Sätze, einige Kunden von uns haben über 100.000 Adresseb. Wenn ich das nach deiner Idee umsetzen würde, würde das Programm Ewigkeiten laufen da ich das ganze eh nur iterieren kann mit allen Möglichen Varianten die es gibt...
-
20.06.06 21:15 #4
- Registriert seit
- Mar 2001
- Ort
- München
- Beiträge
- 4.785
Soundex könnte helfen.
Das ist ein Algorythmus der ähnlich klingende Wörter findet. Also auch ähnliche Zeichenketten.
http://de.wikipedia.org/wiki/Soundex
Du musst die bekommene Adresse in jeweils kleine Teile zerlegen. Diese Teile mit den Teilen der gespeicherten Adresse und den besten Soundex wert übernehmen.
Wenn jedes Teil mit dem anderen Teil verglichen wurde errechne einen Durschnitts Soundex wert. Wenn der höher ist als von dir angegeben dann sollte der Kontakt gleich sein.
Frag mich nicht nach der .net Soundex Implementierung. Ich weiss nur das es eine geben wird
Erst wenn der letzte Programmierer eingesperrt...
...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
-------------------
chris: hey Tom hast du eigentlich ne Freundin
jdar: ich bin tutorials.de Mod!
-
20.06.06 22:55 #5
- Registriert seit
- Aug 2001
- Ort
- Österreich, Stmk, Graz
- Beiträge
- 2.783
Tztz Chris, kurz Googlen könntest aber schon: A SoundEx implementation in .NET
With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
Aaron Satie
Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
Captain Jean-Luc Picard, Stardate ~41294.5
Tutorials.de chattet. Hier gibts auch .net Support ^^
Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de
(moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions
-
20.06.06 23:34 #6
- Registriert seit
- Mar 2004
- Beiträge
- 17
Danke schonmal für die Informationen aber habe da noch eine paar Verständnissfragen...
Also mein Objekt besitzt die folgenden Eigenschaften PLZ, Ort, Land, Strasse, Name1, Name2, Name3. Das Objekt der XML Datei die Eigenschaften Zipcode, Country, City, Firstname, Lastname, MIddlename, Wholename. Daraus ist sicherlich erkennbar welche Werte ich miteinander vergleichen muss...
habe ich mal eine Verständnissfrage...Du musst die bekommene Adresse in jeweils kleine Teile zerlegen. Diese Teile mit den Teilen der gespeicherten Adresse und den besten Soundex wert übernehmen.
Wenn jedes Teil mit dem anderen Teil verglichen wurde errechne einen Durschnitts Soundex wert. Wenn der höher ist als von dir angegeben dann sollte der Kontakt gleich sein.
DIesen zitierten Teil verstehe ich gerade nicht, könntest du mir dies evtl. nocheinmal anders (vielleicht mit den Eigenschaften Oben) ausschnittsweise erläutern wie du das meinst ?!
MFG, Maik
-
20.06.06 23:51 #7
- Registriert seit
- Mar 2001
- Ort
- München
- Beiträge
- 4.785
Wieso sollte ich?
Zitat von Alexander Schuc
Wäre Java oder Python das Thema gewesen hätte ich auch ein Link spendiert und nicht nur ein Begriff. Aber .net'ler dürfen nicht zu viel liebe von mir erwarten
Erst wenn der letzte Programmierer eingesperrt...
...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
-------------------
chris: hey Tom hast du eigentlich ne Freundin
jdar: ich bin tutorials.de Mod!
-
21.06.06 00:04 #8
- Registriert seit
- Mar 2004
- Beiträge
- 17
Magst mir vielleicht auch meine Frage noch beantworten oder erläutern? Sofern du ein entsprechendes Java (oder auch C++) Tutorial hättest, könntest mir einen Link gerne mitteilen. Ich bin da nicht so und Java kann ich auch lesen/ programmieren. Nur das oben genannte Problem muss ich leider diesmal in C# realisieren...
Zitat von Christian Fein
-
21.06.06 00:07 #9
- Registriert seit
- Mar 2001
- Ort
- München
- Beiträge
- 4.785
Nun ich meine wenn du eine Adresse / Namen hast:
Gates Bill, Redmond, USA-Virginia
dann teile deine Adresse mit einem gezielten
Nur mal schemenhaft mit Python. Für Java / C# habe ich nach einem Fussball abend mit 2 Flachen Bier keinen Sinn mehr
Code :1 2 3 4 5 6 7 8 9
adress = "Gates Bill, Redmond, Virginia, USA parts = adress.split(',| |;') results = [] for p in parts: presults = [] for s in soundexparts: presults.add(getSoundexResult(p,s)) results.add(max(presults)) end = sum(results) / len(results)
so in etwa.Erst wenn der letzte Programmierer eingesperrt...
...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
-------------------
chris: hey Tom hast du eigentlich ne Freundin
jdar: ich bin tutorials.de Mod!
Ähnliche Themen
-
Klassifizierung von Zeichenketten
Von jenny1106 im Forum C/C++Antworten: 2Letzter Beitrag: 06.03.10, 23:03 -
Welches php Framework (inkl. Framework-Übersicht)
Von rethus im Forum PHPAntworten: 10Letzter Beitrag: 14.11.07, 13:34 -
.net 1.x Framework wird installiert trotz .net 2.0 Framework
Von BWilhelm im Forum .NET CaféAntworten: 5Letzter Beitrag: 12.06.06, 07:28 -
Zeichenketten vergleichen...
Von GuenniFD im Forum C/C++Antworten: 13Letzter Beitrag: 11.01.05, 13:17 -
Zeichenketten formatieren
Von BigBenny im Forum Javascript & AjaxAntworten: 7Letzter Beitrag: 13.08.03, 16:10





Zitieren


Login





