-
HINTERGRUND
-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung betrifft das Identifizieren von Kontakten basierend auf Spracheingaben.
-
HINTERGRUND DER ERFINDUNG
-
Mobile Vorrichtungen und bordeigene Unterhaltungs- (IVI) Anlagen versuchen häufig, die Erkennung gesprochener Befehle und anderer Eingaben bereitzustellen. Für die Spracherkennungs-Engines ist es jedoch schwierig, einzigartige Namen und Wörter zu identifizieren. Beispielsweise kann die Bemühung zu bewirken, dass ein Spracherkennungssystem einen ungewöhnlich buchstabierten Namen identifiziert, eine Fehlauslegung von Sprachbefehlen verursachen.
-
Die hier offenbarten Systeme und Verfahren stellen einen verbesserten Ansatz zum Identifizieren von Namen in Sprachbefehlen bereit.
-
Figurenliste
-
Damit die Vorteile der Erfindung ohne Weiteres zu verstehen sind, erfolgt eine ausführlichere Beschreibung der zuvor kurz beschriebenen Erfindung mit Bezug auf spezifische Ausführungsformen, die in den beiliegenden Zeichnungen abgebildet sind. Mit dem Verständnis, dass diese Zeichnungen nur typische Ausführungsformen der Erfindung abbilden und daher nicht als ihren Umfang einschränkend anzusehen sind, wird die Erfindung mit zusätzlicher Spezifizität und Einzelheiten durch die Verwendung der beiliegenden Zeichnungen beschrieben und erklärt. Es zeigen:
- 1 ein schematisches Blockdiagramm einer Umgebung, in der die Systeme und Verfahren gemäß einer Ausführungsform der vorliegenden Erfindung umzusetzen sind;
- 2 ein schematisches Blockdiagramm einer beispielhaften Computervorrichtung, die geeignet ist, um Verfahren gemäß den Ausführungsformen der vorliegenden Erfindung umzusetzen;
- 3 ein schematisches Blockdiagramm, das Bestandteile abbildet, welche die Verfahren gemäß einer Ausführungsform der vorliegenden Erfindung umsetzen; und
- 4 ein Prozessablaufschema eines Verfahrens zum Identifizieren eines Kontakts in Sprachbefehlen gemäß einer Ausführungsform der vorliegenden Erfindung;
- 5 ein Prozessablaufschema eines Verfahrens zum Reduzieren einer Zeichenkette gemäß einer Ausführungsform der vorliegenden Erfindung; und
- 6 ein Prozessablaufschema eines Verfahrens zum Filtern übereinstimmender Kontakte gemäß einer Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Mit Bezug auf 1 kann eine Umgebung 100, in der die hier beschriebenen Verfahren umgesetzt werden können, ein Fahrzeug 102 umfassen, das eine bordeigene Unterhaltungs- (IVI) Anlage 104 aufweist. Die IVI-Anlage 104 kann einige oder alle Attribute einer universellen Computervorrichtung aufweisen. Die IVI-Anlage 104 kann mit einem Bildschirm 106 gekoppelt sein, der als Berührungsbildschirm ausgebildet sein kann. Ein oder mehrere Lautsprecher 108 kann bzw. können mit der IVI-Anlage 104 gekoppelt sein. Ein oder mehrere Mikrofone 110 kann bzw. können mit der IVI-Anlage 104 gekoppelt sein.
-
Wie es in der Technik bekannt ist, kann die IVI-Anlage 104 programmiert sein, um eine Schnittstelle zum Auswählen des Audioinhalts bereitzustellen, der unter Verwendung der Lautsprecher 108 oder anderer Audioausgaben wiederzugeben ist. Der Audioinhalt kann aus einer oder mehreren Quellen von Audioinhalt ausgewählt werden, die mit der IVI-Anlage 104 gekoppelt ist bzw. sind, wie etwa ein Radio, ein CD-Gerät und dergleichen. Die IVI-Anlage 104 kann ferner Videoinhalt an dem Bildschirm 106 oder an einem oder mehreren anderen Bildschirmen anzeigen, die innerhalb des Fahrzeugs 102 angeordnet sind. Die IVI-Anlage 104 kann Videoinhalt anzeigen, der aus einer oder mehreren Quellen für Videoinhalt, wie etwa einem DVD-Gerät, einer gekoppelten mobilen Vorrichtung, oder einer anderen Quelle von Videodaten ausgewählt wird.
-
Die IVI-Anlage 104 kann ferner mit einem oder mehreren Systemen des Fahrzeugs 102 selber gekoppelt sein und die Anzeige von Statusinformationen für das Fahrzeug 102 und das Empfangen von Eingaben, die den Betrieb eines oder mehrerer Systeme des Fahrzeugs 102 selber ändern, wie etwa einer Klimaregelung, Motorbetriebsparameter und dergleichen ermöglichen.
-
Die IVI-Anlage 104 kann ein Sprachsteuersystem umsetzen, wodurch die Ausgaben des Mikrofons 110 zu Befehlen ausgelegt werden, um den Betrieb der IVI-Anlage 104 oder eines oder mehrerer Systeme des Fahrzeugs 102 über die IVI-Anlage 104 zu steuern. Beispielsweise kann die IVI-Anlage 104 das Sprachsteuersystem FORD SYNC umsetzen. Der Controller 104 kann Steuereingaben von der IVI-Anlage 104 empfangen und Ausgaben zur Anzeige an dem Bildschirm 106 der IVI-Anlage 104 bereitstellen.
-
Ein Fahrzeug 102 befördert typischerweise einen Fahrer und einen oder mehrere Fahrgäste. Ein Fahrer oder Fahrgast kann eine mobile Vorrichtung 112 in das Fahrzeug 102 mitnehmen. Die mobile Vorrichtung 112 des Fahrers oder eines Fahrgasts kann mit der IVI-Anlage 104 gekoppelt werden, wie etwa über BLUETOOTH oder ein anderes drahtloses Protokoll. Bei einigen Ausführungsformen können über die mobile Vorrichtung 112 Steuerungseingaben und Inhalt empfangen werden und an die IVI-Anlage 104 weitergeleitet werden. Bei diesen Ausführungsformen kann die mobile Vorrichtung 112 ein Sprachsteuersystem umsetzen und ein Mikrofon und einen Lautsprecher umfassen, um Eingaben zu empfangen und eine hörbare Rückmeldung bereitzustellen. Obwohl die hier offenbarten Verfahren offenbart werden, wie sie von einer IVI 104 ausgeführt werden, können sie auch unter Verwendung einer mobilen Vorrichtung 112 umgesetzt werden.
-
Bei einigen Ausführungsformen kann die IVI 104 mit einem Serversystem 114 kommunizieren. Beispielsweise kann die IVI 104 mit dem Serversystem 114 unter Verwendung von eingebauten drahtlosen Kommunikationsfähigkeiten, der mobilen Vorrichtung 112 oder einer anderen Vorrichtung kommunizieren.
-
Die Kommunikation mit dem Serversystem 114 kann durch ein Netz von zellularen Kommunikationsmasten 116 ermöglicht werden. Die zellularen Kommunikationsmasten 116 können auch in Datenkommunikation mit dem Serversystem 114 stehen, wie etwa anhand eines Netzwerks 118. Das Netzwerk 118 kann einige oder alle von einem lokalen Netzwerk (LAN), einem Großraumnetzwerk (WAN), dem Internet und einer beliebigen anderen drahtgebundenen oder drahtlosen Netzwerkverbindung umfassen.
-
Bei einigen Ausführungsformen werden einige oder alle hier offenbarten Verfahren durch das Serversystem 114 umgesetzt, wobei die Ergebnisse der IVI 104 oder der mobilen Vorrichtung 112 mitgeteilt werden.
-
2 ist ein Blockdiagramm, das eine beispielhafte Computervorrichtung 200 abbildet. Die Computervorrichtung 200 kann verwendet werden, um diverse Arbeitsabläufe auszuführen, wie etwa diejenigen, die hier besprochen werden. Die IVI-Anlage 104, die mobile Vorrichtung 112 und das Serversystem 114 können einige oder alle Attribute der Computervorrichtung 200 aufweisen.
-
Die Computervorrichtung 200 umfasst einen oder mehrere Prozessoren 202, eine oder mehrere Speichervorrichtungen 204, eine oder mehrere Schnittstellen 206, eine oder mehrere Massenspeichervorrichtungen 208, eine oder mehrere Ein-/Ausgabe- (E/A) Vorrichtungen 210 und eine Anzeigevorrichtung 230, die alle mit einem Bus 212 gekoppelt sind. Die Prozessoren 202 umfassen einen oder mehrere Prozessoren oder Controller, die Anweisungen abarbeiten, die in den Speichervorrichtungen 204 und/oder den Massenspeichervorrichtungen 208 gespeichert sind. Die Prozessoren 202 können auch diverse Arten von computerlesbaren Medien, wie etwa einen Zwischenspeicher, umfassen.
-
Die Speichervorrichtungen 204 umfassen diverse computerlesbare Medien, wie etwa einen flüchtigen Speicher (z.B. Arbeitsspeicher (RAM) 214) und/oder nicht flüchtigen Speicher (z.B. Festspeicher (ROM) 216). Die Speichervorrichtungen 204 können auch einen wiederbeschreibbaren ROM, wie etwa einen Flash-Speicher, umfassen.
-
Die Massenspeichervorrichtungen 208 umfassen diverse computerlesbare Medien, wie etwa Magnetbänder, Magnetplatten, optische Platten, Festkörperspeicher (z.B. Flash-Speicher) und so weiter. Wie in 2 gezeigt, ist eine bestimmte Massenspeichervorrichtung ein Festplattenlaufwerk 224. Diverse Laufwerke können ebenfalls in den Massenspeichervorrichtungen 208 enthalten sein, um das Lesen von und/oder das Schreiben auf den diversen computerlesbaren Medien zu ermöglichen. Die Massenspeichervorrichtungen 208 umfassen abnehmbare Medien 226 und nicht abnehmbare Medien.
-
Die E/A-Vorrichtungen 210 umfassen diverse Vorrichtungen, die es ermöglichen, Daten und/oder andere Informationen in die Computervorrichtung 200 einzugeben oder von dieser abzurufen. Die beispielhaften E/A-Vorrichtungen 210 umfassen Cursor-Steuerungsvorrichtungen, Tastaturen, Tastfelder, Mikrofone, Monitore oder andere Anzeigevorrichtungen, Lautsprecher, Drucker, Netzwerkschnittstellenkarten, Modems, Linsen, CCDs oder andere Bildaufnahmevorrichtungen und dergleichen.
-
Die Anzeigevorrichtung 230 umfasst eine beliebige Art von Vorrichtung, die in der Lage ist, Informationen für einen oder mehrere Benutzer der Computervorrichtung 200 anzuzeigen. Beispiele der Anzeigevorrichtung 230 umfassen einen Monitor, ein Anzeigeendgerät, eine Videoprojektionsvorrichtung und dergleichen.
-
Die Schnittstellen 206 umfassen diverse Schnittstellen, die es der Computervorrichtung 200 ermöglichen, mit anderen Systemen, Vorrichtungen oder Computerumgebungen zu interagieren. Beispielhafte Schnittstellen 206 umfassen eine beliebige Anzahl von verschiedenen Netzwerkschnittstellen 220, wie etwa Schnittstellen mit lokalen Netzwerken (LAN), Großraumnetzwerken (WAN), drahtlosen Netzwerken und dem Internet. Andere Schnittstellen umfassen eine Benutzerschnittstelle 218 und eine Peripherievorrichtungsschnittstelle 222. Die Schnittstellen 206 können auch eine oder mehrere Peripherieschnittstellen umfassen, wie etwa Schnittstellen für Drucker, Zeigevorrichtungen (Mäuse, Tastfelder usw.), Tastaturen und dergleichen.
-
Der Bus 212 ermöglicht es den Prozessoren 202, den Speichervorrichtungen 204, den Schnittstellen 206, den Massenspeichervorrichtungen 208, den E/A-Vorrichtungen 210 und der Anzeigevorrichtung 230, miteinander sowie mit anderen Vorrichtungen oder Komponenten, die mit dem Bus 212 gekoppelt sind, zu kommunizieren. Der Bus 212 stellt eine oder mehrere Arten von Busstrukturen dar, wie etwa einen Systembus, einen PCI-Bus, einen IEEE1394-Bus, einen USB-Bus und so weiter.
-
Zur Erläuterung werden Programme und andere ausführbare Programmkomponenten hier als diskrete Blöcke gezeigt, obwohl es sich versteht, dass diese Programme und Komponenten zu diversen Zeitpunkten in verschiedenen Speicherkomponenten der Computervorrichtung 200 speicherresident sein können und von den Prozessoren 202 ausgeführt werden. Alternativ können die hier beschriebenen Systeme und Arbeitsabläufe als Hardware oder eine Kombination von Hardware, Software und/oder Firmware umgesetzt werden. Beispielsweise kann bzw. können eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs) programmiert werden, um eines oder mehrere der hier beschriebenen Systeme und Arbeitsabläufe auszuführen.
-
Mit Bezug auf 3 können die abgebildeten Komponenten verwendet werden, um Verfahren gemäß einer Ausführungsform der Erfindung umzusetzen. Eine Ausgabe 302 des Mikrofons, z.B. eine digitale Darstellung der Ausgabe des Mikrofons 110, kann in ein Spracherkennungsmodul 304 eingegeben werden. Das Spracherkennungsmodul 304 kann durch die IVI-Anlage 104, die mobile Vorrichtung 112 oder das Serversystem 114 ausgeführt werden. Beispielsweise kann die Ausgabe 302 an das Serversystem 114 zur Sprachanalyse übertragen werden, und die Ergebnisse der Analyse können an die IVI-Anlage 104 oder die mobile Vorrichtung 112 zurückgegeben werden.
-
Das Spracherkennungsmodul 304 kann ein beliebiger Spracherkennungsalgorithmus sein, der in der Technik bekannt ist, und kann ein Algorithmus zum maschinellen Lernen sein, der auf ein Modell zum maschinellen Lernen 306 zurückgreift, das unter Verwendung von Bibliotheken mit Trainingsdaten eingelernt wird.
-
Das Ergebnis der Verarbeitung durch das Spracherkennungsmodul 304 kann ein Satz von Kandidatenzeichenketten 308 sein. Bei den hier offenbarten Beispielen ist die Erkennung von schwer zu identifizierenden Namen eine besonders nützliche Anwendung. Entsprechend können die Kandidatenzeichenketten 308 Namen sein, von denen das Spracherkennungsmodul 304 schätzt, dass sie der Sprache entsprechen, die in der Ausgabe 302 aufgezeichnet ist. Bei einigen Ausführungsformen können die Kandidatenzeichenketten 308 jeweils einen Konfidenzwert aufweisen, der die Wahrscheinlichkeit angibt, dass die Zeichenkette eine richtige Auslegung der Ausgabe 302 ist, z.B. ein Wert zwischen 0 und 1, wobei ein größerer Wert die höchste Konfidenz bedeutet. Bei einigen Ausführungsformen können die Kandidatenzeichenketten 308 diejenigen sein, die Konfidenzwerte aufweisen, die eine Schwelle überschreiten, und/oder können die N besten Ergebnisse (z.B. 3 bis 10) sein.
-
Bei einigen Ausführungsformen können zwei Schwellen verwendet werden. Eine erste Schwelle gibt eine erfolgreiche Auslegung an, und eine zweite Schwelle gibt eine geringe Konfidenz aber ein möglicherweise relevantes Ergebnis an. Entsprechend können die Kandidatenzeichenketten eine einzige erfolgreiche Kandidatenzeichenkette, welche die erste Schwelle einhält, oder mehrere Kandidatenzeichenketten, welche die zweite Schwelle aber nicht die erste Schwelle einhalten, umfassen.
-
Die Kandidatenzeichenketten 308 können in ein Logikmodul 310 eingegeben werden, wie etwa wenn die Kandidatenzeichenketten 308 Konfidenzwerte aufweisen, die unter der ersten Schwelle liegen. Das Logikmodul 310 kann das Verfahren aus 4 ausführen. Die Ausgabe des Logikmoduls 310 kann ein Ergebnis 312 umfassen, das eine Zeichenkette ist, von der bestimmt wird, dass sie eine hohe Wahrscheinlichkeit aufweist, der Ausgabe 302 zu entsprechen.
-
Das Logikmodul 310 kann Kontakte 314 für einen Benutzer und Metadaten für die Kontakte des Benutzers und andere Zeichenketten, die von dem Logikmodul 310 verarbeitet werden, speichern. Wie es nachstehend mit Bezug auf 4 beschrieben wird, können die Metadaten von dem Logikmodul 310 sowohl verwendet als auch aktualisiert werden.
-
Mit Bezug auf 4 kann das abgebildete Verfahren 400 durch das Logikmodul 310 ausgeführt werden. Wie zuvor erwähnt, können die Schritte des Verfahrens 400 durch die IVI-Anlage 104, die mobile Vorrichtung 112 oder das Serversystem 114 ausgeführt werden oder können auf diese Vorrichtungen verteilt sein.
-
Das Verfahren 400 kann das Empfangen 402 einer oder mehrerer Kandidatenzeichenketten 308 und Konfidenzwerte, die jedem von dem einen oder den mehreren Kandidaten entsprechen, und das Bewerten 404, ob einer von dem einen oder den mehreren Kandidaten mit einem Kontakt eines Benutzers übereinstimmt, d.h. des Benutzers, welcher der Gegenstand des Verfahrens 400 ist, umfassen. Der Kandidatensatz kann ein Satz von Kontakten sein, die in den Kontakten und Metadaten 314 enthalten sind. Die Kontakte können in der IVI-Anlage 104, der mobilen Vorrichtung 112 oder in einem Konto des Benutzers, das für das Serversystem 114 oder eine andere Computervorrichtung zugänglich ist, gespeichert sein.
-
Falls ja, kann das Verfahren 400 das Beurteilen 406 umfassen, ob eine bekannte Korrektur in den Metadaten für den übereinstimmenden Kandidaten gespeichert ist. Insbesondere können die Kontakte und Metadaten 314 Zeichenketten und Metadaten für Zeichenketten speichern, wobei die Zeichenketten sowohl Kontakte als auch Kandidaten 308 umfassen können, die gemäß dem Verfahren 400 bewertet wurden. Die Metadaten für eine Zeichenkette können beliebige Korrekturen für diese Zeichenkette umfassen, d.h. einen Eintrag einer Instanz, bei der die Zeichenkette präsentiert wurde doch der Benutzer letztendlich eine andere Zeichenkette als die gewünschte Ausgabe auswählte. Die andere Zeichenkette kann daher in den Metadaten für die Zeichenkette als Korrektur gespeichert werden, und das Verfahren 400 kann daher das Bewerten 406 umfassen, ob die Metadaten für den übereinstimmenden Kontakt ein anderer Kontakt sind.
-
Beispielsweise kann für jeden Kontakt oder jede Kandidatenzeichenkette, der bzw. die gemäß dem Verfahren 400 verarbeitet wird, eine Datenstruktur gespeichert werden, die in der Form von <Kontakt oder Kandidatenzeichenkette>, <Korrekturliste>, <reduzierte_Form>, <Treffer>, <Fehltreffer> vorliegen kann. Diese Werte können gemäß dem Verfahren 400 wie nachstehend beschrieben aktualisiert werden.
-
Falls sich herausstellt, dass die Datenstruktur für den übereinstimmenden Kontakt aus Schritt 404 einen oder mehrere Werte in der <Korrekturliste> enthält, kann das Verfahren 400 das Präsentieren 408 einer oder mehrerer Zeichenketten in dem Feld <Korrekturliste> für den Benutzer umfassen. Bei einigen Ausführungsformen kann Schritt 408 das Präsentieren mehrerer Optionen für den Benutzer zur Auswahl umfassen, wie etwa einige oder alle der übereinstimmenden Kontakte, die in Schritt 404 identifiziert wurden, die Werte in dem Feld <Korrekturliste> für den übereinstimmenden Kontakt und möglicherweise eine oder mehrere andere Zeichenketten, wie etwa eine oder mehrere von anderen Kandidatenzeichenketten, die in Schritt 402 empfangen wurden.
-
Schritt 408 kann ferner das Speichern der Auswahl umfassen. Falls beispielsweise eine Zeichenkette in der <Korrekturliste> ausgewählt wird, kann diese Auswahl verwendet werden, um eine Anzahl von Korrekturen für diese Zeichenkette in den Metadaten zu inkrementieren. Falls eine andere Zeichenkette in Schritt 408 ausgewählt wird oder durch den Benutzer eingegeben wird, dann kann dieser Wert in dem Feld <Korrekturliste> der Datenstruktur für den übereinstimmenden Kontakt gespeichert werden.
-
Falls keine Werte in der <Korrekturliste> in Schritt 406 gefunden werden, dann kann das Verfahren 400 das Bewerten 410 umfassen, ob der Konfidenzwert des Kandidaten, der in Schritt 404 als übereinstimmend gefunden wurde, eine Schwelle, z.B. die erste Schwelle, überschreitet. Falls ja, dann kann der übereinstimmende Kontakt an den Benutzer zurückgegeben 412 werden und/oder bei der Ausführung eines Befehls verwendet werden. Bei einigen Ausführungsformen kann Schritt 410 das Bewerten der Felder <Treffer> und <Fehltreffer> für den übereinstimmenden Kontakt umfassen. Falls <Treffer> eine Trefferschwelle überschreitet, <Fehltreffer> unter einer Fehltrefferschwelle liegt und/oder das Verhältnis von <Treffern> zu <Fehltreffern> eine Verhältnisschwelle überschreitet, kann es sein, dass die Konfidenz für den übereinstimmenden Kontakt als hoch bestimmt 410 wird. Bei einigen Ausführungsformen kann ein Benutzer eine Eingabe bereitstellen, die angibt, dass der übereinstimmende Kontakt die richtige Auslegung war oder nicht. Diese Eingabe kann in den Metadaten für den übereinstimmenden Kontakt aufgezeichnet werden. Falls der Benutzer beispielsweise bestätigt, dass das Ergebnis richtig ist, kann das Feld <Treffer> in der Datenstruktur für den übereinstimmenden Kontakt inkrementiert werden. Falls nicht, dann kann das Feld <Fehltreffer> inkrementiert werden.
-
Falls kein übereinstimmender Kontakt in Schritt 404 gefunden wird, kann das Verfahren 400 das Bewerten 414 umfassen, ob Datenstrukturen für eine der Kandidatenzeichenketten, die in Schritt 402 empfangen wurden, gespeichert sind, und ob eine bekannte Korrektur in der <Korrekturliste> einer dieser Datenstrukturen aufgezeichnet ist. Falls ja, dann wird die bekannte Korrektur an den Benutzer zurückgegeben 416 und/oder verwendet, um einen Befehl auszuführen. Für den Fall, dass mehrere Kandidatenzeichenketten bekannte Korrekturen in den Metadaten aufweisen, kann Schritt 416 das Zurückgeben der mehreren bekannten Korrekturen an den Benutzer und das Empfangen einer Auswahl einer dieser Korrekturen umfassen. Die Anzahl von Korrekturen für die ausgewählte bekannte Korrektur kann als Reaktion auf die Benutzerauswahl derselben inkrementiert werden.
-
Falls keine bekannte Korrektur in Schritt 414 gefunden wird oder es sich herausstellt 410, dass der Konfidenzwert die erste Schwelle nicht einhält, dann kann eine weitere Verarbeitung erfolgen, um zu versuchen einen Kontakt zu identifizieren.
-
Beispielsweise kann das Verfahren 400 das Reduzieren 418 der Kandidatenzeichenketten umfassen. Mit Bezug auf 5 kann das Reduzieren einer Zeichenkette das Ersetzen 502 jedes Konsonanten durch eine 1 und das Ersetzen 504 jedes Vokals durch eine 0 umfassen. Bei einigen Ausführungsformen kann eine Kompression das Ersetzen 506 von nebeneinanderliegenden Einsen durch eine einzige 1 und das Ersetzen 508 von nebeneinanderliegenden Nullen durch eine einzige 0 umfassen. Beispielsweise würde aus dem Vornamen „Peter“ „10101“. Eine alternative Schreibweise, wie etwa „Pieter“, würde nach den Schritten 502 und 504 zu „100101“ werden und würde nach den Schritten 506 und 508 zu „10101“ werden. Bei einem anderen Beispiel wird der französische Vorname „Thibault“ genau wie „Tebow“ ausgesprochen. Die reduzierten Werte sind identisch: „Thibault“ -> 11010011 -> 10101 und „Tebow“ -> 10101.
-
Bei einigen Ausführungsformen können die Schritte 502 bis 508 nicht als diskrete Schritte ausgeführt werden. Beispielsweise kann eine Bitposition in einem Ausgangswort auf 1 oder 0 gesetzt werden, wenn ein Konsonant oder ein Vokal angetroffen wird, und die nächste Bitposition wird nicht gesetzt, bis der entgegengesetzte Zeichentyp angetroffen wird. Somit führen Zeichenketten aus Konsonanten dazu, dass ein einziger Bitwert gesetzt wird, und es gibt keine Zwischenspeicherung von mehreren Bits für mehrere nebeneinanderliegende Konsonanten und Vokale gemäß den Schritten 502 bis 504.
-
Zurück zu 4 können nach dem Reduzieren 418 die reduzierten Formen der Kandidatenzeichenketten mit den reduzierten Formen der Kontakte des Benutzers, d.h. den Feldern <reduzierte_Form> in den Datenstrukturen für die Kontakte des Benutzers, verglichen 420 werden. Falls keine reduzierten Formen der Kandidatenzeichenketten mit einer der reduzierten Formen der Kontakte des Benutzers übereinstimmen 422, dann kann ein Fehltreffer gemeldet 424 werden. Die Werte <reduzierte_Form> können in der Datenstruktur für jeden Kontakt und eine andere Zeichenkette, die in den Metadaten dargestellt ist, gespeichert werden. Somit kann die Berechnung gemäß dem Verfahren 400 reduziert werden. Der Vergleich von reduzierten Werten ist auch rechnerisch einfach, was die Identifizierung von Übereinstimmungen ermöglicht, ohne eine komplizierte Text- und Sprachanalyse zu benötigen. Bei anderen Ausführungsformen wird die reduzierte Form der Kontakte und der zuvor verarbeiteten Zeichenketten je nach Bedarf während der Ausführung des Verfahrens 400 berechnet.
-
Falls eine Übereinstimmung gefunden 422 wird, und es sich herausstellt 426, dass die Anzahl von Übereinstimmungen kleiner als eine Übereinstimmungsschwelle ist, dann können die Kontakte, die reduzierte Formen aufweisen, die mit den reduzierten Formen einer oder mehrerer der Kandidatenzeichenketten übereistimmen, an den Benutzer als mögliche Übereinstimmungen zurückgegeben 430 werden und/oder als Eingaben für einen Befehl verwendet werden. Falls sich herausstellt 432, dass der Benutzer einen der Kontakte auswählt, die in Schritt 430 gemeldet werden, dann kann das Verfahren 400 das Aktualisieren 434 der Metadaten für die eine oder die mehreren Kandidatenzeichenketten umfassen, die eine reduzierte Form aufweisen, die mit dem ausgewählten Kontakt übereinstimmt, um den ausgewählten Kontakt in der <Korrekturliste> aufzuführen, oder die Anzahl von Korrekturen für den Kontakt kann inkrementiert werden, falls der ausgewählte Kontakt bereits in der <Korrekturliste> für diese eine oder mehreren Kandidatenzeichenketten enthalten ist.
-
Falls sich herausstellt 432, dass der Benutzer einen der Kontakte ausgewählt hat, die in Schritt 430 präsentiert wurden, dann können die Fehltreffer-Metadaten aktualisiert 436 werden. Beispielsweise kann für jede Kandidatenzeichenkette, die übereinstimmende reduzierte Formen aufweist, die in Schritt 422 identifiziert wurden, das Feld <Fehltreffer> inkrementiert werden.
-
Falls sich herausstellt 426, dass die Anzahl von Kontakten, die reduzierte Formen aufweisen, die mit den reduzierten Formen der Kandidatenzeichenketten übereinstimmen, die Übereinstimmungsschwelle überschreitet, dann können die übereinstimmenden Kontakte gefiltert 428 werden. Das Filtern 428 kann gemäß dem Verfahren 600 aus 6 oder gewissen anderen Filterkriterien erfolgen. Die übereinstimmenden Kontakte, die nach dem Filtern 428 verbleiben, können dann in Schritt 430 gemeldet werden, und die Verarbeitung kann wie zuvor beschrieben fortfahren.
-
Mit Bezug auf 6 kann das abgebildete Verfahren 600 verwendet werden, um einen Teilmenge von Kontakten auszuwählen, die reduzierte Formen aufweisen, die mit den reduzierten Formen der Kandidatenzeichenketten übereinstimmen.
-
Das Verfahren 600 kann ferner das Filtern 602 der übereinstimmenden Kontakten nach textlicher Ähnlichkeit mit den Kandidatenzeichenketten, die reduzierte Formen aufweisen, die mit den reduzierten Formen der übereinstimmenden Kontakte übereinstimmen, umfassen. Es kann eine beliebige Metrik der textlichen Ähnlichkeit, wie etwa die Editierdistanz der Zeichenkette, oder ein anderer Ansatz verwendet werden. Das Filtern 602 kann das Entfernen von Kontakten umfassen, die keine Ähnlichkeitsmetrik im Verhältnis zu einer beliebigen Kandidatenzeichenkette aufweisen, die einen gewissen Schwellenmetrikwert überschreitet.
-
Das Verfahren 600 kann das Filtern 604 der Kontakte nach Standort umfassen. Beispielsweise können Metadaten für einen Kontakt einen Standort des Benutzers aufzeichnen, wenn es zu einer Kommunikation (Anruf, Textnachricht, E-Mail) mit diesem Kontakt kommt, z.B. eine Region, in der X Prozent, z.B. 90 %, der Kommunikationen stattfanden. Das Filtern 604 kann daher das Entfernen von übereinstimmenden Kontakten umfassen, die keine Regionen aufweisen, die einen aktuellen Standort des Fahrzeugs 102 oder der mobilen Vorrichtung 114 während der Ausführung des Verfahrens 600 umfassen.
-
Das Verfahren 600 kann das Filtern 606 der übereinstimmenden Kontakte nach Zeit umfassen. Beispielsweise können Metadaten für einen Kontakt ein Zeitfenster aufzeichnen, in dem die Kommunikation (Anruf, Textnachricht, E-Mail) mit diesem Kontakt stattfindet, z.B. eine Uhrzeit, zu der X Prozent, z.B. 90 %, der Kommunikationen stattfanden. Die Metadaten können separate Zeitfenster speichern, die wiedergeben, wann die Kommunikationen an verschiedenen Tagen oder Tagestypen (spezifischer Tag der Woche, ein Wochentag, ein Wochenendtag) stattfanden. Das Filtern 606 kann daher das Entfernen von übereinstimmenden Kontakten umfassen, die keine Zeitfenster aufweisen, welche die aktuelle Zeit umfassen, zu der das Verfahren 600 ausgeführt wird. Wenn tagesspezifische Fenster gepflegt werden, kann das Filtern 606 das Entfernen von Übereinstimmungen umfassen, deren aktuelle Zeit nicht innerhalb eines Zeitfensters liegt, das dem aktuellen Tag der Woche oder dem Tagestyp (Wochenendtag oder Wochentag) entspricht.
-
6 offenbart mehrere Filterschritte 602 bis 606, die unterschiedlich kombiniert werden können. Beispielsweise kann die Eingabe in einen Filterschritt darin bestehen, dass diese Kontakte nach einem vorhergehenden Filterschritt zurückbleiben. Alternativ kann jeder Filterschritt dazu führen, dass jedem Kontakt eine Auswertung zugewiesen wird. Beispielsweise eine 1, falls die Filterkriterien durch den Kontakt erfüllt sind, oder eine 0, falls die Filterkriterien nicht erfüllt sind. Alternativ kann die Auswertung für die Schritte 604, 606 ein Wert sein, der mit der Nähe des aktuellen Standorts zu der Region für einen Kontakt oder der Nähe der aktuellen Zeit zu dem geeigneten Zeitfenster, z.B. einem tagesspezifischen Zeitfenster für den Kontakt, zunimmt. Für Schritt 602 kann die Auswertung die textliche Ähnlichkeitsmetrik sein.
-
Für jeden Kontakt können die Auswertungen gemäß den Filterschritten 602 bis 606 summiert, gewichtet und summiert oder anderweitig kombiniert werden, um eine endgültige Auswertung für jeden Kontakt zu bestimmen. Die Kontakte, welche die besten N (z.B. 2, 3 oder 4) endgültigen Auswertungen aufweisen, oder die Kontakte, die endgültige Auswertungen aufweisen, die eine Schwelle überschreiten, können als die verbleibenden Kontakte nach dem Filterprozess ausgewählt werden.
-
Bei einigen Ausführungsformen wird eine Teilmenge von Kontakten gemäß dem Filtern nach textlicher Ähnlichkeit in Schritt 602 ausgewählt. Diese Teilmenge kann dann gemäß den Schritten 604, 606 verarbeitet werden, wozu das Zuweisen von Auswertungen und das Auswählen gemäß einer endgültigen Auswertung, die eine Kombination der Auswertungen aus den Schritten 604, 606 ist, wie zuvor beschrieben gehören kann.
-
In der obigen Offenbarung wurde Bezug auf die beiliegenden Zeichnungen genommen, die Teil davon sind, und in denen erläuternd spezifische Umsetzungen gezeigt sind, in denen die Offenbarung in die Praxis umgesetzt werden kann. Es versteht sich, dass andere Umsetzungen verwendet werden können und strukturelle Änderungen vorgenommen werden können, ohne den Umfang der vorliegenden Offenbarung zu verlassen. Bezugnahmen in der Beschreibung auf „eine einzige Ausführungsform“, „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ usw. bedeuten, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen umfassen kann, jedoch nicht jede Ausführungsform das bestimmte Merkmal, die bestimmte Struktur oder das bestimmte Kennzeichen unbedingt umfassen muss. Des Weiteren beziehen sich diese Redewendungen nicht unbedingt auf die gleiche Ausführungsform. Wenn ferner ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Kennzeichen in Verbindung mit einer Ausführungsform beschrieben wird, wird vorausgesetzt, dass der Fachmann weiß, wie dieses Merkmal, diese Struktur oder dieses Kennzeichen in Verbindung mit anderen Ausführungsformen umzusetzen ist, und zwar unabhängig davon, ob dies ausdrücklich beschrieben wird oder nicht.
-
Umsetzungen der hier beschriebenen Systeme, Vorrichtungen und Verfahren können einen speziellen oder universellen Computer umfassen, der Computer-Hardware umfasst, wie beispielsweise einen oder mehrere Prozessoren und einen Systemspeicher, wie hier besprochen. Umsetzungen im Umfang der vorliegenden Offenbarung können auch physische und andere computerlesbare Medien zum Enthalten oder Speichern von computerausführbaren Anweisungen und/oder Datenstrukturen umfassen. Diese computerlesbaren Medien können beliebige verfügbare Medien sein, auf die ein universelles oder spezielles Computersystem zugreifen kann. Computerlesbare Medien, die computerausführbare Anweisungen speichern, sind Computerspeichermedien (Vorrichtungen). Computerlesbare Medien, die computerausführbare Anweisungen enthalten, sind Übertragungsmedien. Somit können die Umsetzungen der Offenbarung beispielhaft und ohne Einschränkung mindestens zwei deutlich unterschiedliche Arten von computerlesbaren Medien umfassen: Computerspeichermedien (Vorrichtungen) und Übertragungsmedien.
-
Computerspeichermedien (Vorrichtungen) umfassen RAM, ROM, EEPROM, CD-ROM, Festkörperlaufwerke („SSD“) (z.B. basierend auf RAM), Flash-Speicher, Phasenänderungsspeicher („PCM“), andere Speicherarten, andere optische Plattenspeicher, magnetische Plattenspeicher oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium, das verwendet werden kann, um gewünschte Programmcodemittel in der Form von computerausführbaren Anweisungen oder Datenstrukturen zu speichern, und auf die ein universeller oder spezieller Computer zugreifen kann.
-
Eine Umsetzung der hier offenbarten Vorrichtungen, Systeme und Verfahren kann über ein Computernetzwerk kommunizieren. Ein „Netzwerk“ ist als eine oder mehrere Datenverbindungen, die den Transport von elektronischen Daten zwischen Computersystemen und/oder Modulen und/oder anderen elektronischen Vorrichtungen ermöglicht bzw. ermöglichen, definiert. Wenn Informationen über ein Netzwerk oder eine andere Kommunikationsverbindung für einen Computer übertragen oder bereitgestellt werden (entweder drahtgebunden, drahtlos oder eine Kombination von drahtgebunden und drahtlos), sieht der Computer die Verbindung eigentlich als Übertragungsmedium an. Übertragungsmedien können ein Netzwerk und/oder Datenverbindungen umfassen, die man verwenden kann, um gewünschte Programmcodemittel in der Form von computerausführbaren Anweisungen oder Datenstrukturen zu enthalten, und auf die ein universeller oder spezieller Computer zugreifen kann. Kombinationen des Vorstehenden sind ebenfalls in den Umfang der computerlesbaren Medien einzubeziehen.
-
Computerausführbare Anweisungen umfassen beispielsweise Anweisungen und Daten, die, wenn sie an einem Prozessor ausgeführt werden, bewirken, dass ein universeller Computer, ein spezieller Computer oder eine spezielle Verarbeitungsvorrichtung eine gewisse Funktion oder Funktionsgruppe ausführt. Die computerausführbaren Anweisungen können beispielsweise Binärwerte, Zwischenformatanweisungen, wie etwa Assembler-Sprache, oder sogar Source-Code sein. Obwohl der Gegenstand mit einer Wortwahl beschrieben wurde, die für strukturelle Merkmale und/oder verfahrenstechnische Aktionen spezifisch ist, versteht es sich, dass der Gegenstand, der in den beiliegenden Ansprüchen definiert ist, nicht unbedingt auf die beschriebenen Merkmale oder zuvor beschriebenen Aktionen eingeschränkt ist. Vielmehr werden die beschriebenen Merkmale und Aktionen als beispielhafte Formen offenbart, welche die Ansprüche umsetzen.
-
Der Fachmann wird verstehen, dass die Offenbarung in Netzwerk-Computerumgebungen mit vielen Arten von Computersystemkonfigurationen in die Praxis umgesetzt werden kann, zu denen ein Fahrzeugcomputer im Armaturenbrett, PCs, Desktop-Computer, Laptop-Computer, Nachrichtenprozessoren, handgehaltene Vorrichtungen, Systeme mit mehreren Prozessoren, mikroprozessorbasierte oder programmierbare Verbraucherelektronik, Netzwerk-PCs, Minicomputer, Großrechner, Handys, PDAs, Tablets, Pager, Router, Schalter, diverse Speichervorrichtungen und dergleichen gehören. Die Offenbarung kann auch in verteilten Systemumgebungen in die Praxis umgesetzt werden, in denen lokale und entfernte Computersysteme, die (entweder durch drahtgebundene Datenverbindungen, drahtlose Datenverbindungen oder durch eine Kombination von drahtgebundenen und drahtlosen Datenverbindungen) über ein Netzwerk verlinkt sind, beide Aufgaben ausführen. In einer verteilten Systemumgebung können sich Programmmodule sowohl in lokalen als auch in entfernten Speichervorrichtungen befinden.
-
Ferner können die hier beschriebenen Funktionen gegebenenfalls in einer oder mehreren von Hardware-, Software-, Firmware-, digitalen Komponenten oder analogen Komponenten ausgeführt werden. Beispielsweise kann bzw. können eine oder mehrere anwendungsspezifische integrierte Schaltungen (ASICs) programmiert werden, um eines oder mehrere der hier beschriebenen Systeme oder Arbeitsabläufe auszuführen. Gewisse Begriffe werden überall in der Beschreibung und den Ansprüchen verwendet, um sich auf bestimmte Systemkomponenten zu beziehen. Wie es der Fachmann verstehen wird, können die Komponenten mit verschiedenen Namen bezeichnet werden. Die vorliegende Druckschrift ist nicht dazu gedacht, zwischen Komponenten zu unterscheiden, deren Namen sich unterscheidet aber nicht ihre Funktion.
-
Es versteht sich, dass die zuvor besprochenen Sensorausführungsformen Computer-Hardware, Software, Firmware oder eine beliebige Kombination davon umfassen können, um mindestens einen Teil ihrer Funktionen auszuführen. Beispielsweise kann ein Sensor Computercode umfassen, der konfiguriert ist, um in einem oder mehreren Prozessoren ausgeführt zu werden, und kann Hardware-Logik/ elektrische Schaltungen, die durch den Computercode gesteuert werden, umfassen. Diese beispielhaften Vorrichtungen werden hier zur Erläuterung bereitgestellt und sind nicht dazu gedacht einschränkend zu sein. Die Ausführungsformen der vorliegenden Offenbarung können in weiteren Vorrichtungsarten umgesetzt werden, wie es der Fachmann wissen würde. Mindestens einige Ausführungsformen der Offenbarung betrafen Computerprogrammprodukte, die eine derartige Logik umfassen (z.B. als Software), die auf einem beliebigen computerverwendbaren Medium gespeichert ist. Diese Software, wenn sie in einer oder in mehreren Datenverarbeitungsvorrichtungen ausgeführt wird, bewirkt, dass eine Vorrichtung wie hier beschrieben funktioniert.
-
Computerprogrammcode zum Ausführen der Vorgänge der vorliegenden Erfindung können in einer beliebigen Kombination von einer oder mehreren Programmiersprachen verfasst sein, wozu eine objektorientierte Programmiersprache, wie etwa Java, Smalltalk, C++ oder dergleichen, und herkömmliche prozedurale Programmiersprachen, wie etwa die Programmiersprache „C“ oder dergleichen oder ähnliche Programmiersprachen gehören. Der Code kann vollständig auf einem Computersystem als selbstständiges Software-Paket an einer selbstständigen Hardware-Einheit, teilweise auf einem Remote-Computer, der etwas von dem Computer entfernt ist, oder vollständig auf einem Remote-Computer oder Server ausgeführt werden. In letzterem Fall kann der Remote-Computer an den Computer über eine beliebige Art von Netzwerk, wozu ein lokales Netzwerk (LAN) oder ein Großraumnetzwerk (WAN) gehört, angeschlossen sein, oder die Verbindung kann mit einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Anbieters) hergestellt werden.
-
Vorstehend wurde die vorliegende Erfindung mit Bezug auf Ablaufschemata und/oder Blockdiagramme von Verfahren, Geräten (Systemen) und Computerprogrammprodukten gemäß den Ausführungsformen beschrieben. Es versteht sich, dass jeder Block der Ablaufschemata und/oder der Blockdiagramme und Kombinationen von Blöcken in den Ablaufschemata und/oder Blockdiagrammen durch Anweisungen oder Code eines Computerprogramms umgesetzt werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines universellen Computers, eines spezifischen Computers oder eines anderen programmierbaren Datenverarbeitungsgeräts bereitgestellt werden, um eine Maschine zu ergeben, so dass die Anweisungen, die über den Prozessor des Computers oder des anderen programmierbaren Datenverarbeitungsgeräts ausgeführt werden, Mittel erstellen, um die Funktionen/Aktionen umzusetzen, die in dem Block oder den Blöcken der Ablaufschemata und/oder Blockdiagramme vorgegeben sind.
-
Diese Computerprogrammanweisungen können auch in einer einem nicht vorübergehenden computerlesbaren Medium gespeichert sein, das einen Computer oder ein anderes programmierbares Datenverarbeitungsgerät anleiten kann, um auf eine bestimmte Art und Weise zu funktionieren, so dass die Anweisungen, die in dem computerlesbaren Medium gespeichert sind, ein Produkt ergeben, das Anweisungsmittel umfasst, welche die Funktion/Aktion umsetzen, die in dem Block oder den Blöcken der Ablaufschemata und/oder Blockdiagramme vorgegeben ist.
-
Die Computerprogrammanweisungen können auch auf einen Computer oder ein anderes programmierbares Datenverarbeitungsgerät geladen werden, um zu bewirken, dass eine Reihe von Betriebsschritten auf dem Computer oder dem anderen programmierbaren Gerät ausgeführt wird, um einen computerumgesetzten Prozess zu ergeben, so dass die Anweisungen, die auf dem Computer oder dem anderen programmierbaren Gerät ausgeführt werden, Prozesse bereitstellen, um die Funktionen/Aktionen umzusetzen, die in dem Block oder den Blöcken des Ablaufschemas und/oder des Blockdiagramms vorgegeben sind.
-
Obwohl zuvor diverse Ausführungsformen der vorliegenden Offenbarung beschrieben wurden, versteht es sich, dass sie rein beispielhaft und nicht einschränkend präsentiert wurden. Es wird für den Fachmann auf diesem Gebiet ersichtlich sein, dass diverse Änderungen in Form und Detail daran vorgenommen werden können, ohne Geist und Umfang der Offenbarung zu verlassen. Somit sind Breite und Umfang der vorliegenden Offenbarung nicht durch eine der zuvor beschriebenen beispielhaften Ausführungsformen einzuschränken, sondern nur gemäß den folgenden Ansprüchen und ihren Entsprechungen zu definieren. Die vorstehende Beschreibung wurde zur Erläuterung und Beschreibung präsentiert. Sie ist nicht dazu gedacht, erschöpfend zu sein oder die Offenbarung auf die genaue offenbarte Form einzuschränken. Angesichts der obigen Lehren sind zahlreiche Änderungen und Variationen möglich. Ferner sei zu beachten, dass eine oder alle der zuvor erwähnten alternativen Umsetzungen in einer beliebigen Form verwendet werden kann bzw. können, um zusätzliche hybride Umsetzungen der Offenbarung zu bilden.