Was diese Liste mit den Namen der Gruppe ein guter Weg ist:Algorithmus zum Gruppieren Namen
Doctor Watson.
Dr. John Watson.
Dr. J Watson.
Watson.
J Watson.
Sherlock.
Mr. Holmes.
S Holmes.
Holmes.
Sherlock Holmes.
In einer gruppierten Liste der einzigartigen und vollständigen Namen:
Dr. John Watson.
Mr. Sherlock Holmes.
Auch interessant:
Mr Watson
Watson
Mrs Watson
Watson
John Watson
Da der Algorithmus keine Rückschlüsse darauf machen muss, ob der erste Watson ein Mr (wahrscheinlich) oder eine Frau ist, sondern nur die Gruppe th Das einzige Problem ist, dass John Watson offensichtlich Mrs und nicht Mrs. Watson gehört. Ohne ein Wörterbuch mit Vornamen für jedes Geschlecht kann dies nicht abgeleitet werden.
Bis jetzt habe ich darüber nachgedacht, durch die Liste zu gehen und jedes Element mit den restlichen Elementen zu überprüfen. Bei jedem Match gruppierst du und beginnst von vorne, und beim ersten Durchgang, wo keine Gruppierung stattfindet, hörst du auf.
Hier ist ein paar grobe (und noch nicht getestete) Python. Sie würden es mit einer Liste von Namen nennen.
def groupedNames(ns):
if len(ns) > 1:
# First item is query, rest are target names to try matching
q = ns[0]
# For storing unmatched names, passed on later
unmatched = []
for i in range(1,len(ns)):
t = ts[i]
if areMatchingNames(q,t):
# groupNames() groups two names into one, retaining all info
return groupedNames([groupNames(q,t)] + unmatched + ns[i+1:])
else:
unmatched.append(t)
# When matching is finished
return ns
Sind das Hausaufgaben? Wenn ja, sollte es als solches markiert werden. –