-
SACHGEBIET
-
Dieses Dokument bezieht sich allgemein auf das Abspeichern und abrufen von Informationen.
-
HINTERGRUND
-
Im täglichen Leben stoßen Menschen auf verschiedene Objekte. Sie müssen routinemäßig den Überblick über ihre Objekte behalten, damit sie diese nach zeitweiligem Nichtgebrauch wieder auffinden können. Manche Objekte werden häufig und routinemäßig gebraucht, so dass sich der Benutzer im Allgemeinen daran erinnert, wo sich das betreffende Objekt routinegemäß befindet. Der Benutzer kann z. B. sein/ihr Mobiltelefon immer nachts auf einem Nachttisch aufladen, so dass davon gegangen werden kann, dass sich das Telefon am nächsten Morgen auf dem Nachttisch befindet. In ähnlicher Weise kann ein Benutzer seine Autoschlüssel auf einem Tablett in der Nähe der Garage lassen, wenn er täglich von der Arbeit heimgekehrt, so dass die Schlüssel am nächsten Morgen leicht an derselben Stelle aufzufinden sind. Manchmal wird die Routine jedoch unterbrochen und ein Objekt wird an einem ungewohnten Ort zurückgelassen oder vorübergehend einer anderen Person ausgeliehen. Andere Objekte werden selten verwendet, müssen jedoch im Bedarfsfall sofort zur Hand sein (und manche werden sogar absichtlich verborgen), wie z. B. ein versteckter Ersatzhausschlüssel, eine Geburtsurkunde oder ein Fahrzeugbrief.
-
KURZDARSTELLUNG
-
Dieses Dokument beschreibt allgemein Techniken zum Speichern und abrufen von Informationen zum Standort von Objekten. In einigen Ausführungen kann der Benutzer einer Anwendung oder einem Dienst auf einem Computer Anweisungen geben, Informationen zum Standort eines Objektes so zu speichern, dass der Standort später leicht wieder abgerufen werden kann. Der Benutzer kann z. B. eine Abfrage erstellen, die angibt, dass sich George die Mineraliensammlung ausgeliehen hat. Als Reaktion auf die Abfrage kann für den Benutzer ein Eintrag in einer Datenstruktur erstellt werden, die den Standort der Mineraliensammlung bei George festhält. Mehrere Monate später mag die Benutzerin einen neuen Stein für ihre Sammlung erwerben, erinnert sich jedoch nicht mehr, wem sie die Sammlung geliehen hat oder wann. Um ihr zu helfen, sich zu erinnern, kann sie eine neue Anfrage erstellen, in der sie den Standort der Mineraliensammlung abfragt, und als Reaktion darauf gibt die Anwendung oder der Dienst auf der Basis der Einträge in der Datenstruktur an, dass sich die Mineraliensammlung bei George befindet. Der Benutzer kann auch angeben, wenn sich der Standort eines Objektes geändert hat, damit die Angaben zum Standort eines Objektes in der Datenstruktur aktualisiert werden können. Somit kann, wenn George die Mineraliensammlung an die Benutzerin zurückgibt, die Rückgabe in der Datenstruktur erfasst werden, so dass der gegenwärtige Standort des Objektes nicht mehr mit „bei George” angegeben wird. Durch das Pflegen der Standorte mehrerer Objekte in einer Datenstruktur können auf Anfragen des Benutzers hin komplexe Aktionen durchgeführt werden. Zum Beispiel können Benachrichtigungen ausgelöst werden, wenn ein Objekt von einem bestimmten Standort entfernt wird. In einigen Ausführungen werden Standorteinträge für Objekte in einer Datenstruktur so gespeichert, dass Beziehungen zwischen einem oder mehreren Objekte und Standorten erkannt werden können. Zum Beispiel können gängige Objekte oder Standorte, die in einer Reihe von Abfragen genannt werden, als dasselbe Objekte oder dieselben Standorte erkannt werden, auf die schon zuvor Bezug genommen wurde, so dass Informationen zu den Objekten oder Standorten zuverlässig ausgelesen bzw. aktualisiert werden können. Darüber hinaus können die Darstellungen von Objekten oder Standorten in der Datenstruktur automatisch mit einer oder mehreren Eigenschaften verknüpft werden. Die Objekte oder Standorte können dann von einem Benutzer auf der Basis der Eigenschaften erkannt werden, selbst wenn der Name des Objekts oder des Standortes in der Abfrage nicht ausdrücklich genannt wird.
-
Die hierin beschriebenen Techniken können einen oder mehrere der folgenden Vorteile bieten. Mithilfe einfacher Abfragen in natürlicher Sprache kann der Benutzer Informationen zum Standort von Objekten, wie z. B. Informationen, die angeben, wo ein Objekt zuletzt zurückgelassen wurde, oder Informationen, die eine Person, Organisation oder eine sonstige Einheit bezeichnen, in deren Besitz sich das Objekt befindet, speichern, aktualisieren und abrufen. In einigen Ausführungen kann der Benutzer Abfragen zum Standort von Objekten mithilfe von Sprachbefehlen eingeben, und solche Sprachbefehle werden dann auf der Basis bestimmter Grammatiken verarbeitet, die mithilfe von Probeabfragen zum Standort von Objekten eintrainiert wurden. Die Grammatiken können in einem Modell verwendet werden, das probabilistisch eine bestimmte Art von Sprachbefehl bestimmt, dem eine Abfrage entspricht, ohne dass der Benutzer den Befehl unter Verwendung bestimmter Begriffe oder sprachlicher Formen sprechen muss. Darüber hinaus kann der Benutzer durch die Verknüpfung gespeicherter Objekte und Standorte mit einer oder mehreren Eigenschaften (d. h. Konzepten, die als ausreichend auf Objekte und Standorte bezogen erkannt werden) später auf Objekte und Standorte indirekt anhand ihrer Eigenschaften bezugnehmen, anstatt direkt aufgrund der Bezeichnungen der Objekte oder Standorte. Daher können Informationen zu einem Objekt oder Standort mit größerer Flexibilität abgefragt oder aktualisiert werden, als wenn die Formulierung, die ursprünglich beim Abspeichern der Angaben zum Standort des Objektes verwendet wurde, streng wörtlich wiederholt werden müsste. Zum Beispiel können Angaben zum Standort des Objektes zunächst als Reaktion auf eine Benutzerabfrage abgespeichert werden, die besagt, „Die Mineraliensammlung ist bei George”. Später mag der Benutzer dann ggf. wissen wollen, wo sich die Mineraliensammlung befindet, verwendet dabei jedoch lediglich eine Kurzbezeichnung der Mineraliensammlung, wie z. B. „Mineralien” oder „Steine”. Die Kurzbezeichnung „Mineralien” mag zur Angabe des Objektes „Mineraliensammlung” durch Vergleich der Zeichenfolge ausreichen, und „Steine” ist ein mit der Mineraliensammlung verknüpftes Synonym, das zudem als hinreichend eng mit der Mineraliensammlung zusammenhängend erkannt wird. Darüber hinaus können Eigenschaften zur Mineraliensammlung bzw. zu George ermittelt werden, wie z. B. dessen voller Name und seine Adresse. Mithilfe solcher Eigenschaften kann der Benutzer Abfragen zu beliebigen Objekten eingeben, die sich an der Adresse von George befinden, ohne z. B. George selbst namentlich zu erwähnen. Ebenso kann z. B. ein Buch nach seinem Autor, ein Film auf DVD nach den darin auftretenden Schauspielern und eine Schallplatte mit Musik nach den daran Mitwirkenden oder der Musikrichtung benannt werden. Jedes dieser Beispiele bezieht sich indirekt auf ein Objekt, anstatt das Objekt selbst direkt zu nennen. Außerdem können Reaktionen auf komplexere Abfragen erzeugt werden, indem Beziehungen zwischen Objekten und Standorten in einer Datenstruktur gepflegt werden. Wenn Objekt z. B. beim ersten Mai am Ort X gelassen wurde, und Objekt B beim zweiten Mai am Ort X, so kann der Standort X mit beiden Objekten verknüpft werden, so dass ein Benutzer auf seine Abfrage, die sich gleichzeitig auf alle Objekte bezieht, die an einen bestimmten Standort zurückgelassen wurden, eine Antwort erhalten kann.
-
In einigen Ausführungen schließt eine computerimplementierte Methode ein, dass eine erste Abfrage empfangen wird, die einen oder mehrere Begriffe enthält, die ein Objekt bezeichnen. Für die erste Abfrage kann bestimmt werden, dass sie einen Befehl enthält, Angaben zum Standort des Objektes abzuspeichern. Die erste Abfrage kann analysiert werden, um Informationen zur Erkennung des Objektes zu ermitteln, dessen Standort dann ermittelt werden kann. Die Methode beinhaltet ferner die Erkennung einer oder mehrerer Eigenschaften des Objekts, die in der ersten Abfrage nicht angegeben wurden, und das Abspeichern eines ersten Datensatzes, der die Angaben zur Erkennung des Objektes beschreibt, den Standort des Objektes sowie dessen Eigenschaft(en).
-
Diese und sonstige Ausführungen können eines oder mehrere der folgenden Merkmale beinhalten. Die Methode kann des Weiteren die Bestimmung einschließen, dass das Objekt einer oder mehreren Einheiten in einer Datenstruktur für die Einheiten entspricht, worin die Datenstruktur Darstellungen mehrerer Einheiten beinhaltet und Beziehungen zwischen bestimmten davon beinhaltet. Zur Ermittlung der Eigenschaft(en) des Objekts, die in der ersten Abfrage nicht angegeben wurde(n), kann die Auswahl einer oder mehrerer Tatsachen oder Kategorien gehören, die mit der Einheit oder den Einheiten in der Datenstruktur verknüpft sind, denen das Objekt der Ermittlung zufolge entspricht.
-
Zu der Methode kann es des Weiteren gehören, dass veranlasst wird, dass der erste Datensatz für das Objekt in einer mit einem bestimmten Benutzerkonto verknüpften persönlichen Objektdatenstruktur abgespeichert wird, worin die persönliche Objektdatenstruktur: (I) Darstellungen eines oder mehrerer Objekte und eines oder mehrerer Standorte enthält und (ii) Beziehungen zwischen bestimmten Objekten und Standorten abbildet.
-
Die Datenstruktur kann die Beziehungen abbilden, um mindestens einen letzten bekannten Ort für bestimmte der Objekte anzugeben.
-
Die erste Abfrage kann des Weiteren einen oder mehrere Begriffe enthalten, die den Standort des Objektes angeben. Der/die Begriffe, die den Standort des Objektes angeben, können einen oder mehrere Begriffe enthalten, die den geographischen Ort des Objektes bezeichnen.
-
Die erste Abfrage kann des Weiteren einen oder mehrere Begriffe enthalten, die eine Person oder Organisation bezeichnen, bei der das Objekt zurückgelassen wurde. Die Methode kann des Weiteren eine Verknüpfung der Person oder der Organisation, bei der das Objekt zurückgelassen wurde, mit einem Kontakt von einem Konto eines Benutzers beinhalten, die Erfassung einer Benutzerinteraktion mit dem Kontakt, der mit der Person oder Organisation, bei der das Objekt zurückgelassen wurde, verknüpft ist, und als Reaktion auf die Erfassung der Interaktion zwischen dem Benutzer und dem Kontakt veranlassen, dass der zu dem Objekt gehörige Benutzer benachrichtigt wird.
-
Die Methode kann des Weiteren die Bestimmung beinhalten, dass ein Benutzergerät sich innerhalb einer Schwellendistanz des Standortes des Objektes befindet, und als Reaktion darauf den zu dem Objekt gehörigen Benutzer benachrichtigen.
-
Die erste Abfrage kann evtl. keine Informationen enthalten, die den Standort des in der ersten Abfrage enthaltenen Objektes angibt, und der Standort des Objektes kann anhand des derzeitigen Standortes eines Computers ermittelt werden, an dem die erste Abfrage ursprünglich eingegeben oder gesprochen wurde.
-
Die Methode kann des Weiteren den Eingang einer zweiten Abfrage beinhalten, die einen oder mehrere Begriffe enthält, der mindestens eine der Eigenschaften des Objektes angibt. Als Reaktion auf den Erhalt der zweiten Abfrage kann die Methode des Weiteren die Bestimmung aufgrund des Begriffs oder der Begriffe, der/die mindestens eine Eigenschaft des Objektes angeben, beinhalten, dass sich die zweite Abfrage auf das in der ersten Abfrage angegebene Objekt bezieht, sowie die Bestimmung, dass die zweite Abfrage einen Befehl beinhaltet, eine mit dem Objekt verknüpfte Handlung auszuführen, und diese dann auszuführen.
-
Die zweite Abfrage kann einen Befehl enthalten, den Standort des Objektes abzurufen. Die Ausführung der mit dem Objekt verknüpften Handlung kann das Ermitteln des Standortes des Objekts aus dem ersten Datensatz und die Ausgabe des Standortes des Objektes einschließen.
-
Die zweite Abfrage kann den Befehl enthalten, die Angaben zu dem Objekt zu aktualisieren. Die Ausführung der mit dem Objekt verknüpften Handlung kann die Veranlassung beinhalten, die aktualisierten Informationen im ersten Datensatz oder in sonstigen Daten abzuspeichern.
-
Der Befehl, die Informationen zu dem Objekt zu aktualisieren, kann einen Hinweis enthalten, dass das Objekt sich an einem neuen Standort befindet. Die Veranlassung, die aktualisierten Informationen im ersten Datensatz oder in sonstigen Daten abzuspeichern, kann einschließen, dass die gespeicherten Angaben zum Standort für das Objekt so aktualisiert werden, dass sie den neuen Standort des Objektes angeben.
-
Die erste Abfrage kann angeben, dass ein Benutzer das Objekt am Standort des Objektes zurückgelassen hat. Die zweite Abfrage kann angeben, dass das Objekt an den Benutzer zurückgegeben wurde. Die Ausführung der mit dem Objekt verknüpften Handlung als Reaktion auf den Erhalt der zweiten Abfrage kann die Veranlassung beinhalten, dass Informationen gespeichert werden, die angeben, dass sich das Objekt nicht mehr an dem Standort des Objekts befindet, der in der ersten Abfrage ermittelt wurde.
-
Die zweite Abfrage kann angeben, dass sich das Objekt nicht mehr an dem Standort des Objekts befindet, der in der ersten Abfrage ermittelt wurde. Die Ausführung der mit dem Objekt verknüpften Handlung als Reaktion auf den Erhalt der zweiten Abfrage kann die Veranlassung beinhalten, dass Informationen gespeichert werden, die angeben, dass sich das Objekt nicht mehr an dem Standort des Objekts befindet, der in der ersten Abfrage ermittelt wurde. Die Methode kann des Weiteren als Reaktion auf ein Ermittlungsergebnis, dass sich das Objekt nicht mehr an dem Standort des Objekts befindet, der in der ersten Abfrage ermittelt wurde, beinhalten, dass ein Benutzer an ein oder mehrere mit dem Objekt verknüpfte Ereignisse erinnert wird.
-
Der/die Begriff(e) in der ersten Abfrage, die den Standort des Objektes angegeben, können angeben, dass das Objekt bei einer oder mehreren ersten Personen zurückgelassen wurde. Die zweite Abfrage kann die Angabe enthalten, dass das Objekt von der ersten Person oder den ersten Personen zurückgegeben wurde und die Erinnerung an das oder die mit dem Objekt verknüpften Ereignisse kann eine Erinnerung enthalten, das Objekt einer oder mehreren Personen zur Verfügung zu stellen.
-
Die Methode kann des Weiteren die Angabe einer oder mehrerer Eigenschaften zum Standort des Objekts beinhalten, die in der ersten Abfrage nicht enthalten war. Die Bestimmung, dass die zweite Abfrage einen Befehl enthalten kann, die mit dem Objekt verknüpfte Handlung auszuführen, basiert des Weiteren auf der oder den Eigenschaften des Standortes des Objektes.
-
Die zweite Abfrage enthält ggf. keine(n) der Begriffe, mit deren Hilfe das Objekt in der ersten Abfrage bezeichnet wurde.
-
In einigen Ausführungen werden ein oder mehrere computerlesbare Geräte bereitgestellt, auf denen Anweisungen gespeichert sind. Bei Ausführung durch einen oder mehrere Prozessoren können die Anweisungen die Ausführung von Operationen veranlassen, darunter den Empfang einer Abfrage, die einen oder mehrere Begriffe enthält, die ein Objekt bezeichnen; das Ermitteln, dass die Abfrage einen Befehl beinhaltet, Angaben zum Standort des Objektes abzuspeichern; die Analyse der Abfrage zur Ermittlung von Informationen, die das Objekt bezeichnen und das Ermitteln eines Standortes des Objektes; die Erkennung einer oder mehrerer Eigenschaften des Objektes, die in der Abfrage nicht angegeben sind, und das Abspeichern eines ersten Datensatzes, der die Informationen zur Bezeichnung des Objektes, den Standort des Objektes sowie die Eigenschaft(en) des Objektes beschreibt.
-
In einigen Ausführungen kann eine computerimplementierte Methode den Empfang einer ersten Abfrage durch einen Computer beinhalten, die den Befehl dazu enthält, Informationen zu speichern, die den Standort eines Objektes angegeben; die Veranlassung zum Abspeichern eines Datensatzes, der das Objekt und dessen Standort angibt; den Empfang einer zweiten Abfrage durch den Computer, die einen Befehl enthält, den Standort des Objektes abzurufen, worin die zweite Abfrage das Objekt mit einem oder mehreren Begriffen bezeichnet, die eine oder mehrere Eigenschaften des Objekts angeben, die in der ersten Abfrage nicht angegeben wurden; und als Reaktion auf den Erhalt der zweiten Abfrage: die Erkennung des Objektes unter mehreren Objekten anhand von dessen Eigenschaft(en) und das Abrufen des Standortes des Objektes aus dem Datensatz und die Ausgabe der Informationen zur Anzeige für einen Benutzer unter Angabe des Standortes des Objektes.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 ist eine Schemazeichnung eines Beispielprozesses zum Speichern und Abrufen von Informationen zum Standort von Objekten.
-
2A ist eine beispielhafte grafische Darstellung einer Datenstruktur von Einheiten, von denen bestimmte miteinander verbunden sind.
-
2B zeigt beispielhaft einen Teil einer Datenstruktur für miteinander verbundene Einheiten.
-
3 zeigt ein Flussdiagramm eines Beispielprozesses zum Speichern und Abrufen von Informationen zum Standort von Objekten.
-
4 zeigt das Beispiel eines Systems zur Verwaltung und zur Ausgabe von Informationen zu den Standorten von Objekten.
-
5 zeigt das Beispiel eines Computers 500 und eines tragbaren Computers, die zur Umsetzung der hierin beschriebenen Techniken verwendet werden können.
-
In den unterschiedlichen Zeichnungen werden für gleiche Elemente gleiche Bezugszeichen und Bezeichnungen verwendet.
-
DETAILLIERTE BESCHREIBUNG
-
1 ist eine Schemazeichnung eines Beispielprozesses 100 zum Speichern und Abrufen von Informationen zum Standort von Objekten. In einigen Ausführungen kann das Verfahren 100 von dem System 400 ausgeführt werden, das in 4 unten gezeigt ist. Allgemein erlaubt das Verfahren 100 dem Benutzer die Verwendung unstrukturierter Abfragen in natürlicher Sprache zum Abspeichern von Informationen, die die Standorte eines oder mehrerer Objekte angeben. Das Verfahren 100 kann eine persönliche Objektdatenstruktur aufbauen, die Beziehungen zwischen Objekten und deren Standorten abbildet. Die persönliche Objektdatenstruktur kann dafür verwendet werden, Abfragen durch den Benutzer in Bezug auf Objekte und Standorte indirekt oder in sonstiger unterschiedlicher Weise unter aufeinanderfolgenden Abfragen zu beantworten. Auf der Basis bestimmter Pfade durch die persönliche Objektdatenstruktur kann ein Objekt z. B. in einer Abfrage auf der Basis seiner Beziehung zu einem anderen Objekt erkannt werden; Objekte können mit einer Standorthierarchie verknüpft sein (z. B. kann sich ein Schuh direkt in einem Schrank befinden und der Schrank kann sich im Gästezimmer im Haus von Sue befinden); Objekte können aufgrund ihres Standortes miteinander in Beziehung stehen und die Abfolge von Standorten eines Objekts in der Vergangenheit kann ermittelt werden. Darüber hinaus können Objekte und Standorte in der persönlichen Objektdatenstruktur mit Eigenschaften verknüpft sein, die Konzepte darstellen, die sich auf die jeweiligen Objekte und Standorte beziehen. Wie weiter unten beschrieben, erlaubt es das Verfahren 100 einem Benutzer, ein Objekt oder dessen Standort entlang einer oder mehrerer Dimensionen anzugeben, z. B. durch die Verwendung der Bezeichnung des Objektes oder von dessen Standort selbst, einer Teil- oder Kurzbezeichnung für das Objekt oder dessen Standort und durch indirekte Bezugnahme auf eine oder mehrere bestimmte Eigenschaften des Objektes oder von dessen Standort. Daher braucht sich ein Benutzer die genauen Begriffe, die ursprünglich zur Beschreibung eines Objektes und seines Standortes verwendet wurden, nicht zu merken, sondern kann das zuvor gespeicherte Objekt oder dessen Standort stattdessen später mithilfe eines flexiblen Vokabulars mit einer breiteren Begriffsbasis angeben, die das Objekt bzw. dessen Standort beschreiben.
-
Das Verfahren 100 beginnt mit dem Schritt A (108), bei dem ein Benutzer 104 eine Abfrage 106 eingibt, die einen Speicherbefehl für einen Objektstandort enthält. Die Abfrage 106 gibt an, dass der Benutzer 104 „die Schlüssel in das vordere Fach am Rucksack” getan hat. Hier wird die Abfrage 106 als Sprachbefehl gezeigt, der vom Benutzer 104 geäußert wird, obwohl die Abfrage 106 auch auf andere Weise eingegeben werden kann, wie z. B. durch Eintippen des Textes der Anfrage 106 über eine physische oder virtuelle Tastatur. Die Abfrage 106 kann an einem Benutzercomputer, wie z. B. einem Smartphone, Tablet, Netbook, einem tragbaren Gerät (z. B. einer Smartwatch) oder einem Arbeitsplatzrechner eingegeben werden. Die Abfrage 106 kann in einen Objekt-and-Location-Engine („O&L-Engine”) eingegeben werden, der Abfragen verarbeitet, eine persönliche Objektdatenstruktur 102 pflegt (z. B. eine Datenbank oder sonstigen Datenpool) und als Reaktion auf Abfragen eine oder mehrere Operationen durchführt. In diesem Beispiel bestimmt das Verfahren 100, dass es sich bei der Abfrage 106 um einen Speicherbefehl für einen Objektstandort mithilfe eines Modells handelt, das für verschiedene Arten von Abfragen zu den Standorten von Objekten für verschiedene Arten von Befehlen zu den Standorten von Objekten trainiert wurde. Auf verschiedene Arten von Befehlen hin können unterschiedliche Operationen ausgeführt werden. Obwohl die Abfrage 106 kein Präfix oder sonstige Satzanfänge (z. B. ein Notword) enthält, das genau einem Speicherbefehl für einen Objektstandort entspricht (z. B. „Denk' daran, dass ich die Schlüssel in das vordere Fach am Rucksack getan habe”), kann das vom O&L-Engine verwendete Modell aus dem Kontext der Abfrage 106 erkennen, dass es sich dabei höchstwahrscheinlich um einen Speicherbefehl für einen Objektstandort handelt und z. B. nicht um einen Befehl, Informationen über Objekte abzurufen. In einigen Ausführungen kann der O&L-Engine dabei so konfiguriert werden, dass er Befehlszusätze in der Abfrage zulässt bzw. erforderlich macht, die die Art des jeweiligen Befehls angeben.
-
Als Reaktion auf den Erhalt der Abfrage 106 fügt das Verfahren 100 zur persönlichen Objektdatenstruktur des Benutzers 102 Einträge hinzu, die darstellen, dass das Objekt „Schlüssel” am Standort „vorderes Fach im Rucksack” zurückgelassen wurde. Eine Beispieldarstellung der persönlichen Objektdatenstruktur 102 wird zeigt in 1. Die persönliche Objektdatenstruktur 102 wird hier grafisch dargestellt, einschließlich Knoten für Objekte bzw. Standorte und Kanten, die die Knoten verbinden und Beziehungen zwischen den Objekten und Standorten herstellen. In einigen Ausführungen kann der in der Abfrage 106 genannte Standort in der persönlichen Objektdatenstruktur so festgehalten werden, wie der Standort in der Abfrage 106 angegeben wurde. Zum Beispiel kann der Zeichenfolge „vorderes Fach am Rucksack” als Standort der Schlüssel gespeichert werden. in einigen Ausführungen kann die Standortbezeichnung in ihre Bestandteile aufgelöst werden und getrennte aber miteinander in Beziehung stehende Standorte für jeden Teil in der Datenstruktur 102 erstellt werden. Hier gibt der Standort in der Abfrage 106 eine Standorthierarchie an. Der „Rucksack” ist ein erster Standort, der allgemein bezeichnet werden kann. Der Rucksack besitzt jedoch auch Unterkomponenten, darunter verschiedene Fächer, wie z. B. das „vordere Fach”. Das „vordere Fach” kann somit ein einzeln für sich identifizierbares Element in der Datenstruktur sein, das ein Tochterelement des „Rucksacks” ist. Daher ist der Rucksackknoten 102a mit dem Knoten 102b „vorderes Fach” verbunden, der wiederum mit dem Knoten 102c für die Schlüssel verbunden ist, um anzugeben, dass die Schlüssel 102c sich derzeit im vorderen Fach im Rucksack befinden. Wenn der Rucksack vorher in der Datenstruktur 102 repräsentiert war, erfolgen zusätzliche oder in sonstiger Weise aktualisierte Verbindungen zur Darstellung des Rucksacks, um wiederzugeben, dass die Schlüssel zum Rucksack hinzugefügt wurden. Somit können neue Abfragen den O&L-Engine dazu veranlassen, Änderungen an der Datenstruktur 102 vorzunehmen und darauf aufzubauen, wenn die Datenstruktur 102 vorher existiert hat. Wenn eine Datenstruktur 102 zuvor noch nicht existiert hat, kann eine erstellt werden.
-
Im Schritt B (112) wird vom Benutzer 104 eine zweite Abfrage 110 eingegeben. Die zweite Abfrage gibt an, dass sich das „Peyton Manning Trikot im Rucksack befindet”. In der persönlichen Objektdatenstruktur kann ein weiterer Eintrag vorgenommen werden, der wiedergibt, dass sich ein zusätzliches Objekt im Rucksack befindet. Somit wird der Trikot-Knoten 102d zum Rucksack-Knoten 102a hinzugefügt und damit verbunden.
-
Im Schritt C (114) ermittelt das Verfahren 100 eine oder mehrere Eigenschaften, von denen ermittelt wird, dass sie für das in der Abfrage 110 genannte Trikot-Objekt 102d relevant sind. Die Eigenschaften werden mit dem Objekt verknüpft, so dass sie später dafür verwendet werden können, das Objekt auf zukünftige Benutzerabfragen hin zu erkennen, in denen das Trikot in anderer Weise beschrieben wird als bei der Abfrage 110. In einigen Ausführungen kann das Verfahren 100 ein Objekt oder einen Standort mit zusätzlichen Schlagwörtern für die ermittelten Eigenschaften versehen. Zum Beispiel wird die Darstellung des bei der Abfrage 110 genannten Trikots mit den Schlagwörtern 118 „Quarterback”, „NFL”, „Colts”, „Broncos”, „Indianapolis” und „Denver” versehen. Die Schlagwörter 118 können aus einer oder mehreren Informationsquellen 116 ermittelt werden. in einigen Ausführungen können die Informationsquellen 116 elektronische Ressourcen beinhalten oder auf solche verweisen, wie z. B. Webseiten und sonstige elektronische Dokumente, in deren Inhalt das Objekt oder der Standort diskutiert werden, auf das sich die Abfrage bezieht. In einigen Ausführungen können die Informationsquellen 116 eine kuratierte Datenstruktur enthalten, die Informationen über Einheiten in der Wirklichkeit einschließt, einschließlich verschiedener Personen, Orte, Dinge und Ideen. Eigenschaften (z. B. Tatsachen, Themen, Kategorien) für die Einheiten können in der Datenstruktur organisiert werden. Daher kann für ein Objekt oder dessen Standort eine entsprechende Einheit in einer Abfrage ermittelt werden und die Eigenschaften in der Datenstruktur für externe Einheften können für die angegebene Einheit mit dem Objekt oder Standort in der Abfrage verknüpft werden. Zum Beispiel kann der professionelle Quarterback Peyton Manning als hoch relevante Einheit für das in der Abfrage 110 genannte Objekt „Peyton Manning Trikot” erkannt werden. Die Schlagwörter 118 sind Eigenschaften, die mit der Einheit Peyton Manning verknüpft sind und die deshalb auch mit dem Trikot-Objekt in der persönlichen Objektdatenstruktur 102 verknüpft werden können.
-
Im Schritt D (120) gibt der Benutzer 104 bei der Abfrage 120 einen Befehl zum Abrufen des Standortes eines Objektes ein, der fragt „Wo habe ich mein Colts-Trikot gelassen?” Obwohl der Benutzer 104 nach dem Standort seines Peyton Manning Trikots fragt, so wie das Objekt zuvor bei der Abfrage 110 beschrieben wurde, verwendet die später eingegebene Abfrage 120 eine andere Beschreibung desselben Objektes: „Colts-Trikot”. Trotzdem erkennt das Verfahren 100 im Schritt E (124) korrekt, dass sich die Abfrage 120 höchst wahrscheinlich auf das „Peyton Manning Trikot” bezieht, das schon früher bei der Abfrage 110 genannt wurde und das in der persönlichen Objektdatenstruktur als Knoten 102d dargestellt ist. Die Korrelation zwischen den jeweiligen Bezügen auf das „Colts-Trikot” und das „Peyton Manning Trikot” wird aufgrund der Schlagwörter für die Eigenschaften des Trikots ermittelt, die im Schritt C (114) angegeben wurden. Das Verfahren 100 ermittelt, dass Peyton Manning stark mit den „Colts” verknüpft ist und der Begriff daher der Darstellung des Trikots 102d zugeordnet wurde. Damit konnte eine Entsprechung zwischen dem Inhalt der Ausleseabfrage 120 und den Eigenschaften der Darstellung 102d des Trikots ermittelt werden.
-
Im Schritt F (130) gibt der Benutzer 104 eine vierte Abfrage 128 ein, nämlich „ich habe meine Schlüssel wieder”. Diese Abfrage 128 bildet einen Befehl vom Typ Objektvervollständigung, der angibt, dass die Schlüsse! zurückgegeben wurden. Das Verfahren 100 kann aus dem Kontext (z. B. Struktur und Begriffe) der Abfrage 128 erkennen, dass es sich bei der Abfrage 128 um einen Befehl vom Typ Objektvervollständigung handelt, und als Reaktion darauf im Schritt G (132) die persönliche Objektdatenstruktur 102 aktualisieren, so dass sie berücksichtigt, dass die Schlüssel sich nicht mehr im vorderen Fach im Rucksack befinden. Zum Beispiel kann die Darstellung der Schlüssel in der Datenstruktur 102 entfernt werden, obwohl dies in 1 nicht gezeigt wird. in einigen Ausführungen kann ein gegenwärtiger Standort eines in der Datenstruktur 102 dargestellten Objektes als Reaktion auf einen Befehl vom Typ Vervollständigung ablaufen, anstatt dass das Objekt gelöscht wird. Somit kann die Standorthistorie eines Objektes analysiert werden.
-
Die in Schritt G (132) als Reaktion auf die Abfrage 128 vorgenommene Änderung wird in den Schritten H (136) und I (138) dargestellt. Im Schritt H (136) fragt der Benutzer 104 in der Abfrage 134 „Was habe ich im Rucksack?” Da die persönliche Objektdatenstruktur 102 so aktualisiert wurde, dass sie wiedergibt, dass die Schlüssel nicht mehr im Rucksack sind, beantwortet das Verfahren 100 die fünfte Benutzerabfrage 134 im Schritt I (138) mit dem Ergebnis „Peyton Manning Trikot”, das nun das einzige Objekt ist, das noch im Rucksack verbleibt.
-
Wie weiter oben angegeben, gehört zu der oder den Informationsquellen 116, auf die zugegriffen werden kann, um die mit einem in einer Abfrage genannten Objekt oder Standort verknüpften Eigenschaften zu ermitteln, auch eine Einheitendatenstruktur. Beispiele für eine solche Datenstruktur werden in 2A und 2B.
-
2A ist eine Beispielgrafik 200 einer Einheitendatenstruktur entsprechend einer beispielhaften Ausführung der hierin beschriebenen Techniken. Die grafische Darstellung 200 der Daten kann die Speicherung und Struktur von Informationen in einer Datenstruktur für untereinander verbundene Einheiten darstellen. Eine solche grafische Darstellung 200 der Daten speichert Informationen, die sich auf Knoten (Einheiten) und Kanten (Eigenschaften oder Beziehungen) beziehen, aus denen eine grafische Auftragung, wie z. B. die in 2A gezeigte Grafik, erzeugt werden kann. Die Knoten 202 können als Einheiten und die Kanten 204 als Eigenschaften bezeichnet werden, die Verbindungen zwischen Einheiten bilden.
-
2B zeigt als Beispiel einen Teil einer Datenstruktur 220 für untereinander verbundene Einheiten. In einigen Ausführungen kann die Datenstruktur 220 Informationen über Einheiten in der Datenstruktur in Form von Tripeln speichern. Zum Beispiel geben Tripel einen Gegenstand, eine Eigenschaft und einen Wert im Tripel an. Tom Hanks ist eine Einheit in der Datenstruktur 220 und ist Gegenstand des Tripels. Ein erstes der Tripel 222 gibt die Eigenschaft an „hat den Beruf” und ein zweites der Tripel 222 gibt die Eigenschaft „hat Ehefrau” an. Der Wert der Eigenschaft ist die dritte Komponente des Tripels. Tom Hanks hat den Beruf „Schauspieler” und seine Ehefrau ist „Rita Wilson”. Im Ersten der Tripel 222 hat die Eigenschaft (das Attribut) einen Wert, der eine Tatsache in der Datenstruktur ist. Schauspieler können z. B. eine Einheit in der Datenstruktur sein, oder auch nicht. in einigen Ausführungen kann sich die Wertkomponente des Tripels auf eine Klassifizierung der Einheit beziehen (z. B. Schauspieler), aus der eine Erkennungsfunktion für die in einer Textprobe genannte Einheit eine Klasse ermitteln kann. Im Zweiten der Tripel 222 ist die Wertkomponente eine weitere Einheit in der Datenstruktur 220, insbesondere die Einheit für Rita Wilson. Somit gibt das Tripel 222 an, dass die Einheit für Tom Hanks mit der Einheit für Rita Wilson durch eine eheliche Beziehung verbunden oder darauf bezogen ist. Weitere Tripel und diejenigen Tripel, mit denen sie in umgekehrter Beziehung stehen, werden in Tripel 224, 226 und 226' gezeigt.
-
Mit Bezug auf 3 wird ein Flussdiagramm eines Beispielprozesses 300 zum Speichern und Abrufen von Informationen zu den Standorten von Objekten gezeigt. In einigen Ausführungen kann das Verfahren 300 durch irgendeines der in diesem Dokument erwähnten Systeme ausgeführt werden, wie z. B. dem System 400, das in 4. Das Verfahren 300 kann auf einem oder mehreren Geräten ausgeführt werden. Zum Beispiel kann das Verfahren 300 lokal auf einem Benutzergerät ausgeführt werden (z. B. Smartphone, Tablet, Notebookcomputer), auf einem oder mehreren Servern, oder es kann teilweise lokal auf einem Benutzergerät und teilweise auf einem oder mehreren entfernten Servern ausgeführt werden.
-
Das Verfahren 300 beginnt mit dem Schritt 302, bei dem eine Benutzerabfrage erhalten wird. Die Abfrage kann z. B. eine strukturierte Abfrage sein, eine syntaktische Abfrage oder eine Abfrage in natürlicher Sprache. Die Abfrage kann vom Benutzer eingetippt oder gesprochen werden. Die Abfrage kann z. B. als Sprachbefehl gegeben werden, der von einer Spracherkennung verarbeitet wird und mindestens teilweise in Text umgewandelt wird. Auf einem Benutzergerät hat der Benutzer Zugriff auf einen Stimmassistenten oder eine sonstige sprachliche Anwendung, die gesprochene Eingaben entgegennimmt und diese Eingaben verarbeitet, um eine oder mehrere Handlungen zu ermitteln, die daraufhin ausgeführt werden. Die Abfrage kann z. B. in einen Stimmassistenten eingegeben werden, der so konfiguriert ist, dass er auf verschiedene gesprochene Befehle reagiert (z. B. den Befehl, Nachrichten zu versenden, Anwendungen zu starten, Daten zu speichern, Anwendungsparameter festzusetzen, wie z. B. ein Wecker, oder allgemeine Internetsuchen durchzuführen).
-
Unter den Befehlen, auf die der Stimmassistent seiner Konfiguration gemäß reagiert, sind auch Befehle für das Abspeichern und Abrufen der Standorte von Objekten. Im Schritt 304 bestimmt das Verfahren 300, ob die erhaltene Abfrage einem oder mehreren Befehlen zu den Standorten von Objekten entspricht. War die Abfrage eine gesprochene Abfrage, so kann die Äußerung mithilfe einer automatischen Spracherkennung in Text umgewandelt werden. Die Spracherkennung kann mehrere Grammatiken enthalten, die verschiedenen Befehle zu den Standorten von Objekten entsprechen. In einigen Ausführungen kann ein Satzanfang in der Abfrage einen bestimmten Befehl angeben. Zum Beispiel kann in der Abfrage „Merk' dir, dass Jane mein Chemiebuch hat” der Satzanfang „Merk dir, dass” angeben, dass die Abfrage ein Befehl ist, den Standort eines Objektes zu speichern.
-
In einigen Ausführungen kann die Spracherkennung mehrere Grammatiken enthalten, von denen jede einem entsprechenden Typ Objektstandortbefehl entspricht. Die Spracherkennung kann z. B. eine Aussagengrammatik, eine Vervollständigungsgrammatik, eine Auslesegrammatik und eine Grammatik zur Auslösung von Aktionen enthalten. Jede der Grammatiken kann dazu verwendet werden, einen bestimmten Typ von Objektstandortbefehl zu ermitteln, der einer Abfrage entspricht. Die Grammatiken können anhand von Textbeispielen trainiert werden (z. B. Abfragen in natürlicher Sprache), die der natürlichen Art entsprechen, wie Benutzer Befehle zu den Standorten von Objekten in einer bestimmten Sprache ausdrücken. Damit kann z. B. kein Satzanfang erforderlich sein, damit ein Stimmassistent oder eine sonstige Anwendung ermitteln kann, dass eine Abfrage einen bestimmten Typ Objektstandortbefehl darstellt. Stattdessen können die Worte und die Struktur einer Abfrage in natürlicher Sprache ausreichen, um zu ermitteln, welchem Typ Objektstandortbefehl die Abfrage entspricht, selbst wenn die Abfrage keinen erforderlichen Satzanfang oder sonstige Schlagwörter enthält. Zum Beispiel können die Abfragen „Mein Chemiebuch ist bei Jane”, „Jane hat mein Chemiebuch” und „Das Chemiebuch ist bei Jane” mithilfe von Aussagegrammatiken als Befehle zum Abspeichern von Informationen zum Standort eines Objektes verstanden werden.
-
Die Aussagengrammatik kann verwendet werden, um zu ermitteln, dass eine Abfrage ein Befehl zum Abspeichern von Informationen zum Standort eines Objektes ist. Manche Abfragemuster, die mithilfe der Aussagengrammatik als Befehl dafür erkannt werden können, Angaben zum Standort eines Objektes zu speichern, sind u. a. [$X ist bei $Y], [Ich habe $X $Y geliehen], [Ich habe $X von $Y ausgeliehen], [$X ist in $Y], [$Y hat $X], [Ich habe $X bei $Y gelassen], [Merk' Dir, dass $X in der/dem $Y ist]. Zusätzliche oder sonstige Abfragemuster können auch von der Aussagengrammatik für Befehle zum Speichern von Objektstandorten verstanden werden, die z. B. durch statistisches Training anhand der Befehlsproben zum Abspeichern des Standortes eines Objektes bestimmt werden können.
-
Die Vervollständigungsgrammatik kann dazu verwendet werden, zu ermitteln, dass eine Abfrage einen Befehl darstellt, zu registrieren, dass ein Objekt zurückgegeben wurde oder sich aus sonstigen Gründen nicht mehr an dem vorher gespeicherten Ort befindet. Wenn ein Benutzer z. B. angegeben hat, „Ich habe Fred 'James und der Riesenpfirsich' ausgeliehen”, damit das System Informationen zu dem Buch „James und der Riesenpfirsich” abspeichert, des Inhalts, dass dieses sich bei Fred befindet; zu einem späteren Zeitpunkt kann dann ein vom Benutzer eingegebener Objektvervollständigungsbefehl erfolgen, der besagt, „Fred hat 'James und der Riesenpfirsich' zurückgegeben”. Der Vollständigungsbefehl gibt an, dass das Buch zurückgegeben wurde oder dass es sich aus sonstigen Gründen nicht mehr am vorher abgespeicherten Ort befindet, und die Vervollständigungsgrammatik kann dazu dienen, Abfragen zu erkennen, die Vollständigungsbefehle darstellen. Die Vervollständigungsgrammatik kann z. B. Abfragemuster für Vollständigungsbefehle erkennen, wie z. B. [$X hat $Y zurückgegeben], [Ich habe $X zurückbekommen], [Lösche den Standort von $X], [$X ist nicht mehr bei $Y] usw. Die Vervollständigungsgrammatik kann auch noch weitere oder sonstige Abfragemuster verstehen, die z. B. durch statistisches Training anhand von Probebefehlen zur Objektvervollständigung ermittelt werden können.
-
Die Auslesegrammatik kann verwendet werden, um zu ermitteln, dass eine Abfrage einen Befehl darstellt, den jeweiligen Standort eines oder mehrerer Objekte zu ermitteln. Wenn der Standort eines Objektes als Reaktion auf einen Befehl zum Abspeichern des Standortes eines Objektes einmal abgespeichert wurde, so kann der Benutzer zu einem späteren Zeitpunkt einen Befehl zum Abrufen eines Objektes geben, um den Standort eines Objektes zu ermitteln. Zum Beispiel kann der Standort eines Fotoalbums, der zuvor als „im Schrank auf dem Dachboden” registriert wurde, dem Benutzer als Reaktion auf die Abfrage „Wo ist das Fotoalbum?” gemeldet werden. Das Verfahren 300 kann dann erkennen, dass sich das Fotoalbum im Schrank auf dem Dachboden befindet und dem Benutzer den Hinweis geben, dass das Fotoalbum im Schrank auf dem Dachboden ist. Die Antwort kann dem Benutzer sofort als Textnachricht angezeigt werden, wie z. B. als E-Mail, SMS oder Anwendungstext. In einigen Ausführungen kann die Reaktion eine gesprochene Antwort sein, z. B. mithilfe der Sprachsynthese. Die Auslesegrammatik kann Abfragemuster für Abfragebefehle erkennen, wie z. B. [Wo ist $X?], [Wo sind $X, $Y und $Z?], [Wo habe ich $X gelassen?], [Wer hat $X?], [Habe ich $X irgendwo vergessen?], [Hat sich $Y $X ausgeliehen?] und weitere, die durch statistisches Training anhand von Probebefehlen zum Abrufen von Objektstandorten ermittelt werden können. In einigen Ausführungen kann die Auslesegrammatik Abfragebefehle erkennen, die die Angabe eines oder mehrerer Objekte fordern, die an einem oder mehreren Standorten gespeichert sind. Der Benutzer kann z. B. fragen „Was befindet sich alles in der Küchenschublade?”, woraufhin das Verfahren 300 die Namen eines oder mehrerer Gegenstände in der Küchenschublade ausgibt.
-
Die Grammatik zur Auslösung von Aktionen kann verwendet werden, um zu ermitteln, dass eine Abfrage einen Befehl darstellt, auf ein bestimmtes Ereignis hin eine bestimmte Handlung auszuführen. Die Aktion und das Ereignis, von denen die Handlung abhängt, können jeweils vom Benutzer vorgegeben werden, oder sie werden anhand von Kontext- oder Standardeinstellungen ermittelt, ohne dass sie vom Benutzer vorgegeben werden. In einigen Ausführungen kann das Ereignis darin bestehen, dass ein Objekt an einem bestimmten Standort zurückgelassen wurde oder von dort zurückgekehrt ist. In einigen Ausführungen kann die Maßnahme darin bestehen, den Benutzer daran zu erinnern, mit dem Objekt etwas zu tun. Zum Beispiel kann ein Benutzer am 5. Januar festhalten, dass er seine „Harry Potter”-Sammlung Sam geliehen hat. Eine Woche später erzählt Jill dem Benutzer, dass sie gerne die „Harry Potter”-Sammlung des Benutzers ausleihen würde, sobald die Sammlung zur Verfügung steht. Der Benutzer kann einen Sprachbefehl geben, dass er daran erinnert werden will, die „Harry Potter”-Sammlung Jill zu leihen, wenn sie wieder zur Verfügung steht. Der Befehl kann mithilfe der Grammatik zur Auslösung von Aktionen erkannt werden. Der Benutzer kann z. B. sagen „Erinnere mich daran, dass Jill die „Harry Potter”-Sammlung haben will, wenn Sam damit fertig ist.” Alternativ enthält der Befehl ggf. nicht die Bedingung, sondern diese ist stattdessen implizit darin enthalten: „Erinnere mich daran, dass Jill die „Harry Potter”-Sammlung haben möchte.” Aus solchen Befehlen kann das Verfahren 300 eine Erinnerungsnachricht des Inhalts erzeugen, dass die „Harry Potter”-Sammlung Jill zur Verfügung gestellt wird. Erinnerungsmeldungen können dem Benutzer periodisch angezeigt werden, oder der Benutzer kann fragen, welche Erinnerungsmeldungen er festgelegt hat. in einigen Ausführungen erfolgt die Erinnerung auf das Eintreten eines Vervollständigungsereignisses hin. Wenn Sam das Objekt z. B. an den Benutzer zurückgibt, kann der Benutzer den Vollständigungsbefehl „Ich habe die „Harry Potter”-Sammlung zurückbekommen” sprechen. Als Reaktion auf die Registrierung des Vollständigungsbefehls kann das Verfahren 300 dem Benutzer zu dem Objekt alle ggf. relevanten Erinnerungen anzeigen, wie z. B. „Erinnerung, dass Jill sich gerne ihre „Harry Potter”-Sammlung ausleihen möchte”. In einigen Ausführungen kann die Erinnerung auf das Eintreten einer Aussage hin erfolgen (z. B. den Befehl zum Abspeichern des Standortes eines Objektes). Zum Beispiel kann der Benutzer im Mai eine erste Erinnerung einstellen, dass er seine Fußballschoner bis zum 1. August bereit haben muss. Im Juni desselben Jahres kann der Benutzer einen Befehl zum Abspeichern des Standortes eines Objektes eingeben, der angibt, dass Bobby sich die Fußballschoner ausgeliehen hat. Nach Eingabe eines solchen Befehls kann das Verfahren 300 den Benutzer daran erinnern, dass die Fußballschoner bis zum 1. August rechtzeitig für das Training zurückgegeben werden müssen. Das Verfahren 300 kann den Benutzer auch zu bestimmten Zeiten vor dem 1. August daran erinnern, dass Bobby die Fußballschoner bis zum 1. August zurückgeben muss. Darüber hinaus kann das Verfahren 300, wenn der Benutzer einen Abfragebefehl gibt, z. B. „Wo sind meine Fußballschoner?” dem Benutzer mit einem Hinweis auf den Standort der Fußballschoner antworten (bei Bobby), sowie auch mit einer Erinnerung, dass die Fußballschoner für das Training am 1. August gebraucht werden. In einigen Ausführungen kann der Benutzer angeben, dass der Benutzer zu bestimmten Zeiten oder wiederkehrend an ein Objekt bzw. dessen Standort erinnert werden will.
-
In einigen Ausführungen kann die Grammatik zur Auslösung von Aktionen dazu verwendet werden, ein Benachrichtigungsereignis festzulegen, das den Benutzer daran erinnert, dass ein Objekt an einem bestimmten Ort zurückgelassen wurde, wenn der Benutzer mit einer Darstellung des Standortes interagiert. Wenn ein Benutzer angibt, dass ein Objekt bei einer bestimmten Person zurückgelassen wurde (oder bei einer bestimmten Organisation oder allgemein einer sonstigen Einheit), so kann ein Kontakt ermittelt werden, der der Person entspricht, der das Objekt ausgeliehen wurde, so dass wenn der Benutzer mit dem Kontakt interagiert (z. B. eine E-Mail oder SMS-Kurznachricht sendet oder per Videoanruf, über soziale Medien oder per Telefonanruf bei dem Kontakt mit diesem kommuniziert), eine Erinnerung angezeigt werden kann, dass sich das Objekt bei der Person befindet, die dem ermittelten Kontakt entspricht. Leiht eine Benutzerin ihre Schneeschaufel z. B. Paula, so kann beim nächsten Mal, wenn der Benutzer Paula anruft, oder wenn Paula den Benutzer anruft, diesem automatisch eine Benachrichtigung angezeigt werden, dass der Benutzer Paula die Schneeschaufel ausgeliehen hat. In einigen Ausführungen kann für den genannten Standort eines Objektes aus einer Abfrage ein geographischer Standort ermittelt werden, und es kann automatisch eine Benachrichtigung erzeugt werden, wenn der Benutzer (oder das Gerät des Benutzers) feststellt, dass sein gegenwärtiger Standort sich innerhalb einer Schwellendistanz von dem ermittelten geographischen Standort befindet. Zum Beispiel kann eine Erinnerung zu der Schneeschaufel angezeigt werden, wenn der Benutzer durch das Viertel fährt, in dem Paula wohnt, so dass der Benutzer das Objekt bequem abholen kann, z. B. wenn der Benutzer in Paulas Nachbarschaft ist.
-
In einigen Ausführungen kann eine Abfrage verschiedene Kombinationen aus einem oder mehreren Objekten, einem oder mehreren Standorten und einem oder mehreren Befehlen enthalten. Zum Beispiel kann eine gemischte Abfrage die Form haben [$A ist bei $X und $B ist bei $Y] oder [Wo befinden sich $A und $B?]. In solchen Fällen kann das Verfahren 300 die Abfrage analysieren und für jeden Bestandteil der Abfrage in ähnlicher Weise ähnliche Handlungen ausführen, wie dies bei Abfragen mit nur einer Komponente erfolgt, die in diesem Dokument der Einfachheit halber allgemein diskutiert werden. Zum Beispiel kann eine entsprechende Grammatik dazu dienen, die einzelnen Komponenten einer zusammengesetzten Abfrage zu erkennen, und diese Grammatiken können gleich oder verschieden sein, abhängig davon, ob die Einzelkomponenten der Abfrage auf verschiedene Befehle abzielen. In einigen Ausführungen kann ein einzelner Befehl gegeben werden, das Verfahren 300 kann jedoch mehrere Objekte bzw. Standorte erkennen, die mit dem Befehl verknüpft sind. So kann z. B. der der Befehl „Mein Hut und mein Schal befinden sich im Handschuhfach” zum Abspeichern des Standortes eines Objektes in die getrennten Angaben separiert werden, dass sich der Hut im Handschuhfach befindet und dass sich der Schal im Handschuhfach befindet, und solche Informationen können gespeichert werden, als wären für beide Objekte, den Hut und den Schal, getrennte Angaben gemacht worden.
-
Im Schritt 306 analysiert das Verfahren 300 auf das Ermitteln hin, dass die Abfrage einen bestimmten Typ Objektstandortbefehl enthält, die Abfrage, um das in der Abfrage genannte Objekt zu ermitteln. Aus der Abfrage kann ein oder können mehrere Objekte erkannt werden. in einigen Ausführungen kann der Name des Objektes aus der Abfrage herausgezogen und im Wesentlichen so abgespeichert werden, wie des Objekt in der Abfrage eingegeben wurde. Zum Beispiel kann aus dem gegebenen Befehl zum Abspeichern des Standortes eines Objektes „Das Colts-Trikot ist in der Wasche” die Zeichenfolge „Colts-Trikot” herausgezogen und in einer persönlichen Objektdatenstruktur am Standort „Waschraum” gespeichert werden. In einigen Ausführungen können ein oder mehrere auf das Objekt bezogene Begriffe ermittelt werden, die verwendet oder gespeichert werden können (abhängig davon, ob es sich bei der Abfrage z. B. um einen Speicher-, Vervollständigungs- oder Abfragebefehl handelt), anstelle der oder zusätzlich zur ursprünglich aus der Abfrage extrahierten Objektzeichenfolge. Zum Beispiel können Synonyme oder Begriffe mit korrigierter Rechtschreibung für ein Objekt angegeben werden. So kann der Begriff „Trikot der Indianapolis Colts” mit dem vollständigen Namen der Mannschaft anhand der Teilbezeichnung „Trikot der Colts” erkannt werden, die in der Abfrage in natürlicher Sprache verwendet wurde. In einigen Ausführungen kann eine extrahierte Objektzeichenfolge mit anderen Objekten verglichen werden, die zuvor gespeichert und mit Standorten in einer persönlichen Objektdatenstruktur verknüpft wurden. Wenn ermittelt wird, dass die herausgezogene Objektzeichenfolge oder ein verwandter Begriff einem (zuvor gespeicherten) Objekt ähnelt oder damit in Zusammenhang steht, so kann daraus geschlossen werden, dass die beiden Objekte ein und dasselbe Objekt sind. Wenn zwei Objekte gleich sind, so kann für das neue Auftreten des Objektes ein zusätzlicher Eintrag in der persönlichen Objektdatenstruktur erstellt werden, der mit dem zuvor gespeicherten Objekt verknüpft werden kann. In einigen Ausführungen können, wenn ermittelt wird, dass Objekte mit großer Wahrscheinlichkeit dasselbe Objekt darstellen, zusätzliche oder aktualisierte Parameter für die vorhandene Darstellung des in der persönlichen Objektdatenstruktur gespeicherten Objektes erzeugt werden. Befand sich zum Beispiel ein Schraubenschlüsselsatz früher einmal im Werkzeugschuppen, und ergibt eine erneute Abfrage dagegen, dass sich der Schraubenschlüsselsatz jetzt in der Garage befindet, so kann auf die ursprüngliche Darstellung des Objektes „Schraubenschlüsselsatz” zugegriffen und dessen gegenwärtiger Standort von „Werkzeugschuppen” in „Garage” aktualisiert werden. In einigen Ausführungen kann aus der Abfrage eine Objektzeichenfolge extrahiert und ein Eintrag für das Objekt gespeichert werden, ohne dass die Objektzeichenfolge zum Zeitpunkt der Extraktion und Speicherung mit anderen Objekten verglichen wird. Zu einem späteren Zeitpunkt, wenn z. B. von einem Benutzer ein Auslese- oder Vollständigungsbefehl erhalten wird, kann das Verfahren 300 alle Einträge angeben, die zum Auslese- oder Vollständigungsbefehl passen, einschließlich der Erkennung gemeinsamer Objekte. Zum Beispiel kann der Benutzer angeben, dass sich seine „Karten” zum einen Zeitpunkt im Büro befinden, und dann zu einem späteren Zeitpunkt erklären, dass sein „Kartenspiel” im Keller Ist. Die Ermittlung, ob das Objekt „Karten” und das Objekt „Kartenspiel” dasselbe Objekt sind, kann ausgeführt werden, wenn die Aussage „Kartenspiel” erfolgt, oder wenn ein Benutzer später fragt „An welchen beiden Orten habe ich meine Karten zuletzt gelassen?” Ermittelt das Verfahren 300, dass die Objekt-Teilzeichenfolge „Karten” dasselbe Objekt bezeichnet wie „Kartenspiel”, so kann das Verfahren 300 die letztere Abfrage mit dem Hinweis beantworten, dass die letzten beiden Standorte der Karten der Keller und das Büro waren.
-
Im Schritt 308 ermittelt das Verfahren 300 aus der Abfrage den Standort des Objektes. Der Standort kann mithilfe ähnlicher Techniken ermittelt werden, wie sie auch zur Erkennung des Objektes aus der Abfrage verwendet werden. Die Abfrage kann z. B. analysiert und ein oder mehrere Wörter herausgefiltert werden, die dem Standort des Objektes entsprechen. Für einen Befehl zum Abspeichern des Standortes eines Objektes kann das Wort bzw. können die Wörter, die dem Standort entsprechen, in der persönlichen Objektdatenstruktur gespeichert und mit dem Objekt verknüpft werden. In einigen Ausführungen kann ermittelt werden, dass der in einer Abfrage angegebene Objektstandort derselbe ist wie andere Standorte in der persönlichen Objektdatenstruktur, die zuvor erfasst worden sind. In einigen Ausführungen kann zwischen mehreren Standorten, die in einer bestimmten Abfrage angegeben wurden, bzw. zwischen Standorten in einer Abfrage und Standorten, die zuvor in der persönlichen Objektdatenstruktur erfasst wurden, eine Beziehung ermittelt werden. Ein zuvor gespeicherter Standort in der Datenstruktur kann z. B. „Büro” sein. Eine erneute Abfrage kann anzeigen, dass sich ein Objekt im „Büroschrank” befindet. Zwischen dem Büro und dem Büroschrank kann eine hierarchische Beziehung hergestellt werden, so dass das Objekt im Büroschrank auch als im Büro befindlich erkannt werden kann, obwohl sich evtl. nicht alle Büroobjekte im Büroschrank befinden. In einigen Ausführungen können statt eines konzeptionellen Standortes geographische Angaben zum Standort mit einem Objekt verknüpft werden. Zum Beispiel kann aus bestimmten Abfragen, die keinen ausdrücklichen Standort angeben, oder aus Abfragen, die sehr wohl einen Standort angeben, daraus auf einen geographischen Standort geschlossen werden kann. Somit kann die Abfrage „Merk Dir, dass ich mein Auto hier abgestellt habe” das Verfahren 300 dazu veranlassen, Mittel zur Ermittlung eines Standortes, wie z. B. GPS, zu nutzen, um die geographischen Koordinaten des Gerätes zu ermitteln, das die Abfrage erhalten hat, und solche Koordinaten können als gegenwärtiger Standort das PKW erfasst werden. Bei einem weiteren Beispiel mag ein Benutzer z. B. sagen „Ich habe meinen Mantel in Jerry's World Famous Deli gelassen”. Der geographische Ort von Jerry's World Famous Deli kann Anstelle vom oder zusätzlich zum Namen des Restaurants in der persönlichen Objektdatenstruktur ermittelt und gespeichert werden.
-
Im Schritt 310 bestimmt das Verfahren 300, dass das anhand einer Abfrage ermittelte Objekt einem oder mehreren Einheiten entspricht. Einheiten können z. B. Personen, Orte, Dinge oder Ideen sein. Beispiele für Einheiten können einem weiten Bereich entnommen werden, darunter beliebige Personen und Dinge, von Präsident Bareck Obama und der Verfassung der Vereinigten Staaten von Amerika über Jon Bon Jovi, Reality Shows bis hin zu Kängurus, Büchern, Filmen, Firmen uvm. Die bekannten Einheiten können vorher angegeben worden sein oder sie können ermittelt werden, nachdem eine Abfrage erhalten wird. In einigen Ausführungen, wo die Einheiten vorher angegeben wurden, können die Einheiten in einer Datenstruktur von Einheiten indiziert werden. Die Datenstruktur kann eine oder mehrere Unter-Datenstrukturen enthalten und kann in manchen Ausführungen als Graph dargestellt werden (s. z. B. 2A). Zum Beispiel kann jede Einheit als Knoten im Graphen dargestellt werden, bestimmte der Einheiten können im Graphen miteinander durch eine oder mehrere Beziehungen verbunden sein (z. B. die Einheit, die J. K. Rowling darstellt, kann mit der Einheit, die das Buch „Harrt' Potter und der Stein des Weisen”, darstellt durch eine bidirektionale Beziehung, verbunden sein, die angibt, dass J. K. Rowling das Buch geschrieben hat), jede der Einheiten kann mit einer entsprechenden Menge Eigenschaften verknüpft sein und die Einheiten können mit einem oder mehreren Themen (Kategorien) verknüpft sein. Zum Beispiel kann die Einheit, die J. K. Rowling darstellt, mit anderen Einheiten verbunden sein, z. B. mit der Einheit, die Yate (GB) als Geburtsort der Autorin angibt. Die Einheit J. K. Rowling kann ebenfalls mit Eigenschaften verknüpft sein, z. B. mit einem Geburtsdatum, Interessen usw. Angaben zu Einheiten können von den Benutzern von Hand eingegeben bzw. aus öffentlich zugänglichen Informationen (z. B. Webseiten, Blogs und sonstigen elektronischen Dokumenten) gewonnen werden, im Vertrauen darauf, dass sie korrekte Daten zu einer Einheit darstellen, wenn aufgrund der Informationsquelle ein Mindestniveau an Vertrauen ermittelt wird (z. B. aufgrund der Zuverlässigkeit der Datenquelle, der Häufigkeit, mit sich die Daten in mehreren Quellen wiederholen, und das Alter der Daten). Die Einheitendatenstruktur kann in einigen Ausführungen auf ähnliche Weise dargestellt werden wie in dem Einheitengraph 202, der in 2A und 2B. In einigen Ausführungen können Informationen über eine Einheit, die einem Objekt oder Standort in einer Abfrage entspricht, nach Eingang der Abfrage ermittelt werden, wie z. B. durch eine Internet-Suche aufgrund der Abfrage, um öffentlich zugängliche Informationen zu ermitteln, die für die Abfrage relevant sind.
-
Im Schritt 312 werden eine oder mehrere Eigenschaften zu den Einheiten ermittelt, von denen herausgefunden wurde, dass sie den in der Abfrage bezeichneten Objekten entsprechen. Die Eigenschaften der Einheit können allgemein dafür verwendet werden, zusätzliche Informationen zu ermitteln, die für das Objekt relevant sind, in der Abfrage jedoch nicht ausdrücklich genannt wurden. Das gespeicherte Objekt kann dann gekennzeichnet oder in sonstiger Weise mit den Eigenschaften der ihm entsprechenden Einheiten verknüpft werden, so dass die Benutzer später das Objekt unter Bezugnahme auf die Eigenschaften erkennen können. In einigen Ausführungen werden aufgrund der Eigenschaften zusätzliche Schlagwörter mit dem Objekt verknüpft. Zum Beispiel wird als Reaktion auf eine Abfrage, die angibt, dass eine Benutzerin ihre Ausgabe von „Wer die Nachtigall stört” bei Ryan gelassen hat, veranlasst, dass Daten in der persönlichen Objektdatenstruktur gespeichert werden, die angeben, dass das Objekt „Wer die Nachtigall stört” sich derzeit bei „Ryan” befindet. Im Schritt 310 kann ermittelt werden, dass das Objekt „Wer die Nachtigall stört” dem Klassiker von Harper Lee entspricht (d. h. der Roman ist die Einheit, auf die sich das Abfrageobjekt in diesem Beispiel bezieht). Da erkannt wird, dass das Objekt, auf das sich die Abfrage bezieht, mit großer Wahrscheinlichkeit dem Roman entspricht, können zusätzliche Eigenschaften zu dem Roman mit dem Objekt verknüpft werden. So sind der Name der Autorin (Harper Lee), das Erscheinungsdatum der Erstausgabe (1960), die Themen (Rassendiskriminierung, Recht), Genre (Southern Gothic, Belletristik) und die Hauptpersonen (Atticus Finch) Eigenschaften, die das Buch beschreiben. Schlagwörter können aus den Eigenschaften ermittelt und mit dem gespeicherten Objekt verknüpft werden, z. B. „Buch”, „Harper Lee”, 1960, „Rassendiskriminierung”, „Recht”, „Southern Gothic” und ”Atticus Finch”. Somit können, obwohl der Benutzer ursprünglich angegeben hat, dass „Wer die Nachtigall stört” sich bei Ryan befand, unterschiedliche Begriffe dafür verwendet werden können, sich später auf das Objekt zu beziehen. Zum Beispiel kann der Benutzer einen Abfragebefehl geben, „Wer hat mein Buch über Atticus Finch?”, oder einen Vollständigungsbefehl, „Das Buch von Harper Lee wurde zurückgegeben”, und das Verfahren 300 kann dann erkennen, dass es sich bei dem Objekt in diesen späteren Befehlen um das Buch „Wer die Nachtigall stört” handelt, das Ryan ausgeliehen hatte. In ähnlicher Weise können Synonyme, Kurzbezeichnungen für Objekte, vollständige Bezeichnungen für Objekte, Kategorien und Themen- oder Kategorieangaben einem Objekt zugewiesen werden, so dass auf das Objekt mithilfe alternativer Begriffe Bezug genommen werden kann, die sich von den Begriffen unterscheiden, die zuvor zum Speichern von Informationen zu dem Objekt verwendet wurden.
-
In einigen Ausführungen können die Eigenschaften einer Einheit durch den Zugriff auf eine Einheitendatenstruktur erkannt werden, die Informationen über Einheiten und ihre Beziehungen enthält. Manchmal können einem Objekt in einer Abfrage mehrere Einheiten entsprechen. Zum Beispiel mag sich „Wer die Nachtigall stört” nicht auf das Buch beziehen, sondern stattdessen auf die Verfilmung des Buches aus dem Jahr 1962, in der Gregory Peck mitspielt. Ist das in der Abfrage angegebene Objekt nicht eindeutig und kann es einer von mehreren infrage kommenden Einheiten entsprechen, so können die Eigenschaften einer oder mehrerer der infrage kommenden Einheiten mit dem Objekt verknüpft werden.
-
Um die Auswahl infrage kommender Einheiten zu erleichtern, können für die infrage kommenden Einheiten Confidence Scores ermittelt werden, die die jeweilige Wahrscheinlichkeit wiedergeben, dass jede der infrage kommenden Einheit zu dem in einer Benutzerabfrage angegebenen Objekt passt. Das Confidence Score kann dazu dienen, auszuwählen, die Eigenschaften welcher Einheit mit einem Objekt verknüpft werden sollen. In einigen Ausführungen können die Eigenschaften der n Einheiten mit den n höchsten Confidence Scores mit einem bestimmten Objekt verknüpft werden. In einigen Ausführungen können nur die Eigenschaften solcher Einheiten mit einem bestimmten Objekt verknüpft werden, deren Confidence Scores einem Schwellenwert für den Confidence Score entsprechend (z. B. diesen übertreffen). Das Confidence Score für eine Einheit kann auf einem oder mehreren Schauspielern basieren, einschließlich des Kontextes der Abfrage, die das Objekt und die Häufigkeiten genannt hat, mit der die jeweiligen Einheiten in einem Corpus bzw. mehreren Corpora aus elektronischen Ressourcen gefunden werden. Zum Beispiel kann das Buch „Wer die Nachtigall stört” zehnmal häufiger auf Internetseiten oder an sonstigen Stellen besprochen worden sein, die den Satz „Wer die Nachtigall stört” enthalten, als der Film. Daher kann die Einheitendatenstruktur Informationen enthalten, die die Popularität des jeweiligen Buches im Vergleich zum Film angeben, und solche Informationen können dazu führen, dass der Confidence Score für das Buch höher ausfällt als der Confidence Score für den Film. In ähnlicher Weise könnte, wenn die Abfrage selbst einen Kontext enthielt, der die infrage kommende Einheiten eindeutig macht, ein solcher Kontext dazu genutzt werden, die Confidence Scores der infrage kommenden Einheiten zu beeinflussen. Zum Beispiel geht aus der Abfrage „Die DVDs für 'Wer die Nachtigall stört' befinden sich bei Ryan zuhause” klar hervor, dass sie sich auf den Film bezieht, und nicht auf das Buch. Der Confidence Score für die Einheit „Film” kann daher in diesem Beispiel höher angesetzt werden als der Confidence Score für das Buch, und die Eigenschaften für den Film könnten mit dem in der Abfrage angegebenen Objekt verknüpft werden, anstatt die Eigenschaften für das Buch.
-
Im Schritt 314 können weitere Eigenschaften, die nicht mit einer entsprechenden Einheit verknüpft sind, mit dem Abfrageobjekt verknüpft werden. Die zusätzlichen Eigenschaften können Begriffe, Phrasen und sonstige Informationen enthalten, die sich auf das Objekt beziehen, die jedoch nicht unbedingt anhand einer Einheit für das Objekt ermittelt werden. Selbst wo keine entsprechende Einheit aus einer Einheitendatenstruktur für ein Objekt ermittelt werden kann, können andere Informationsquellen relevante Eigenschaften für das Objekt angeben. Ein persönliches Objekt, das eine bestimmte und möglicherweise private Bedeutung hat, kann z. B. keine in einer Einheitendatenstruktur repräsentierte Einheit sein (die im Wesentlichen aus öffentlich zugänglichen Informationen erzeugt werden können). Somit kann „Omas Strickpullover” ein Objekt ohne Einheit in der Einheitendatenstruktur sein. Trotzdem können Schlagworteigenschaften wie „Oma”, „Familie”, „Erbstück”, „genäht” und „Hemd” mit dem Objekt verknüpft werden, um erweiterte Abfragemöglichkeiten zu schaffen, wenn sich der Benutzer später in einer Abfrage auf das Objekt bezieht. Die zusätzlichen Eigenschaften können in einigen Ausführungen ermittelt werden, indem in einem Synonymwörterbuch synonyme Schlagwörter nachgeschlagen werden, indem verwandte (jedoch nicht entsprechende) Einheiten aus einer Einheitendatenstruktur ermittelt werden bzw. indem für das Objekt eine Internet-Suche durchgeführt wird und aus relevanten Suchergebnissen Schlagwörter ermittelt werden.
-
Weitere Eigenschaften eines Objektes können auch auf der Basis von Benutzerkontodaten ermittelt werden. Zum Beispiel kann ein Objekt anhand von Daten beschrieben werden, die in einem mit dem Benutzer verknüpften Konto gespeichert sind, und diese Beschreibung kann auf Schlagwörter für Eigenschaften hin analysiert werden, die mit dem Objekt verknüpft werden sollen. Dies kann z. B. dazu nützlich sein, Angaben zu den Eigenschaften von Objekten zu ermitteln, unabhängig davon, ob in einer vorhandenen Einheitendatenstruktur eine dem Objekt entsprechende Einheit repräsentiert ist. Somit können Schlagwörter oder sonstige Daten, die aus der Beschreibung eines Objektes in den E-Mails, Anwendungen, Konten in sozialen Medien, Profilinformationen des Benutzers oder sonstigen Quellen gezogen werden, mit einem Objekt verknüpft und in einer persönlichen Objektdatenstruktur abgespeichert werden. Ein Benutzer kann sich entscheiden, ob seine Benutzerkontodaten zu diesem Zweck analysiert werden dürfen oder nicht, und er kann einschränken, welche Daten analysiert werden dürfen.
-
Im Schritt 316 werden Informationen, die das in der Abfrage angegebene Objekt bezeichnen, den Standort des Objektes und mit dem Objekt verknüpfte Eigenschaften in einer persönlichen Objektdatenstruktur gespeichert. Die persönliche Objektdatenstruktur kann eine Sammlung von Datenstrukturen an einem oder mehreren Standorten enthalten, so dass die Daten gemeinsam gespeichert werden können oder auch nicht, obwohl sie miteinander verknüpft sind. Im Schritt 316 des Verfahrens 300 können Informationen gespeichert werden, wenn die Abfrage einen Befehl zum Abspeichern von Informationen zum Standort eines Objektes darstellt. Abfragen für sonstige Befehle, wie z. B. Befehle zur Abfrage von Informationen Ober den Standort eines Objektes, können nicht die Speicherung neuer Informationen zu einem Objekt oder zu dessen Standort veranlassen. In solchen Fällen, wo Angaben zum Standort des Objektes gespeichert werden, können außer der Objektbezeichnung, dem Standort und den Objekteigenschaften auch noch weitere Informationen gespeichert werden. Zum Beispiel können Schlagwörter oder sonstige Eigenschaften für Standorte mithilfe von Techniken erkannt werden, die den für Objekteigenschaften verwendeten ähnlich sind (z. B. durch Ermittlung der Eigenschaften einer Einheit, die dem in dem Befehl genannten Standort entsprechen). Informationen zu den Eigenschaften eines Standortes können daher mit einem Eintrag zum Standort eines Objektes abgespeichert werden. Ein Zeitstempel, der das Datum und die Uhrzeit angibt, wann ein Objekt an einem bestimmten Standort zurückgelassen wurde oder warm eine Abfrage empfangen wurde, kann auch mit einem Eintrag zum Standort eines Objektes abgespeichert werden. Der Zeitstempel kann dafür verwendet werden, komplexe Operationen zum Nachschlagen der Standorte von Objekten auszuführen. Zum Beispiel kann der Zeitstempel dazu verwendet werden, Benutzerabfragen zu beantworten, die danach fragen, wann ein Objekt an dem jeweiligen Standort zurückgelassen wurde, wie lange ein Objekt an einem bestimmten Standort verblieb oder an welchen Standorten sich das Objekt innerhalb eines bestimmten Zeitraums befunden hat.
-
In einigen Ausführungen können am Speicherort für persönliche Objekte gespeicherte Informationen als Graph dargestellt werden. Der Graph kann Knoten (Ecken) enthalten, die die verschiedenen Objekte und Orte im Speicher darstellen, und Kanten, die die Knoten verbinden, die die Beziehungen zwischen den Knoten darstellen. Der Graf kann auf ähnliche Weise dargestellt werden wie der in 2. Zum Beispiel kann ein bestimmter Standort, an dem sich ein oder mehrere Objekte befinden oder befunden haben, als Knoten dargestellt werden, der mit anderen Knoten für jedes der Objekte verbunden ist. Objekte, die sich an einem oder mehreren Standorten befunden haben, können Knoten haben, die jeweils mit anderen Knoten für ihre jeweiligen Standorte verbunden sind. In einigen Ausführungen können Eigenschaften für Objekte oder Standorte auch durch Knoten im Graphen dargestellt werden. Zum Beispiel kann das Objekt „Wer die Nachtigall stört” dem Buch von Harper Lee entsprechen, was ermittelt wurde, indem auf eine Einheitendatenstruktur zugegriffen und das zu dem Buch passende Objekt gefunden wurde, das als Einheit in der Datenstruktur dargestellt ist. Die Autorin des Buches, Harper Lee, kann dann ein Attribut sein, das mit dem Objekt verknüpft ist, und kann im persönlichen Objektgraph als Knoten dargestellt sein, der mit dem Knoten für das Objekt „Wer die Nachtigall stört” verbunden ist.
-
Im Schritt 318 wird eine zweite Abfrage erhalten. Die zweite Abfrage kann sich auf ein Objekt beziehen, das zuvor am Speicherort für persönliche Objekte gespeichert wurde. Zum Beispiel kann die im Schritt 302 empfangene erste Abfrage ein Speicherbefehl für einen Objektstandort gewesen sein, und die zweite Abfrage kann ein Abfragebefehl sein, auf den das Verfahren 300 mit der Angabe des Standortes des Objektes aus der ersten Abfrage reagieren soll. Die zweite Abfrage kann zur Angabe desselben Objektes die gleiche, eine ähnliche oder sogar eine ganz andere Sprache verwenden als die erste Abfrage. Zum Beispiel mag sich die erste Abfrage auf einen Roman mit dessen Titel beziehen (z. B. „Wer die Nachtigall stört”), während sich die zweite Abfrage auf den Roman beziehen kann, wobei nur ein Teil des Titels genannt wird (z. B. „Nachtigall”), oder sogar unter Verwendung ganz anderer Parameter, wie z. B. des Namens des Autors (z. B. „Harper Lee) oder sonstiger Eigenschaften des Romans. In ähnlicher Weise kann ein bestimmter in der Abfrage angegebener Standort in gleicher, ähnlicher oder ganz anderer Weise bezeichnet werden, als dies in einer früheren Abfrage der Fall war. Zum Beispiel kann eine Abfrage erkennen, dass sich ein Objekt bei „Mutter” befindet, während die zweite Abfrage denselben Standort als die Anschrift der Mutter oder als entsprechende geographische Koordinaten für das Haus der Mutter ermittelt.
-
Im Schritt 320 wird die zweite Abfrage analysiert. Das Verfahren 300 bestimmt, ob die Abfrage ein Befehl vom Typ Objektstandort ist, und wenn ja, von welchem Typ der Befehl ist (z. B. ein Speicherbefehl für einen Objektstandort (Aussage), Vollständigungsbefehl, Abfragebefehl, Befehl zum Auslösen von Handlungen). Die verschiedenen Aussage-, Vervollständigungs-, Auslese-, Auslöse- und sonstigen Grammatiken können z. B. dazu verwendet werden, eine gesprochene Abfrage zu analysieren. Die Objekt- bzw. Standortzeichenfolge in der Abfrage wird durch Analyse der Abfrage erkannt. Zum Beispiel kann die Abfrage „Wo habe ich das Buch von Harper Lee gelassen?” analysiert werden, und es kann ermittelt werden, dass es sich dabei um einen Befehl vom Auslesetype mit der Objektzeichenfolge „Buch von Harper Lee” und ohne Standortangabe handelt.
-
Im Schritt 322 bestimmt das Verfahren 300, dass ein in der zweiten Abfrage angegebenes Objekt bzw. ein Standort dem in der ersten, vorher erhalten, Abfrage angegebenen Objekt bzw. Standort entspricht. Passt eine erkannte Objekt- bzw. Standortzeichenfolge aus der zweiten Abfrage zu einer zuvor empfangenen Objekt- bzw. Standortzeichenfolge aus der ersten Abfrage, so kann das Objekt bzw. der Standort zwischen den beiden Abfragen als derselbe erkannt werden. Wenn dasselbe Objekt oder derselbe Standort bei der zweiten Abfrage anders ermittelt wird als in der ersten Abfrage, so können ein oder mehrere der am ehesten passenden Objekte bzw. Standorte ermittelt werden. In einigen Ausführungen wird ein Vergleich der Zeichenfolgen zwischen Teilen der zweiten Abfrage und Teilen der ersten Abfrage vorgenommen, z. B. ein Vergleich zwischen der Objektzeichenfolge in derselben Abfrage und der Objektzeichenfolge, die aus der ersten Abfrage erhalten wurde. In einigen Ausführungen bezieht sich das in der zweiten Abfrage genannte Objekt indirekt auf dasselbe Objekt, das in der ersten Abfrage genannt wurde, aufgrund einer oder mehrerer Eigenschaften des Objektes. Zum Beispiel ist das „Buch von Harper Lee” ein indirekter Bezug auf „Wer die Nachtigall stört”. Enthält die zweite Abfrage die Objektzeichenfolge „Buch von Harper Lee”, so kann eine solche Zeichenfolge mit „Wer die Nachtigall stört” identifiziert werden, indem die Objektzeichenfolge „Buch von Harper Lee” mit den Eigenschaften für das Buch mit dem Titel „Wer die Nachtigall stört” verglichen und anhand des Buchautors die Übereinstimmung festgestellt werden. In einigen Ausführungen sind die Eigenschaften Schlagwörter, die dem Objekt „Wer die Nachtigall stört” zugeordnet wurden, das zuvor in der persönlichen Objektdatenstruktur gespeichert wurde, und eine Übereinstimmung wird durch einen Vergleich eines indirekten Objektes festgestellt, das in der zweiten Abfrage angegeben wurde, mit den Schlagwörtern zuvor gespeicherter Objekte. Auf diese Weise kann das Verfahren 300 ein oder mehrere Objekte in einem Speicher für persönliche Objekte erkennen, die mit hoher Wahrscheinlichkeit einem Objekt entsprechen, auf das in einer Abfrage indirekt Bezug genommen wurde. In einigen Ausführungen können Einträge für Objekte oder Standorte in einer persönlichen Objektdatenstruktur aktualisiert werden, wenn auf entsprechende Objekte oder Standorte in einer Reihe von Abfragen Bezug genommen wird, ohne zu berücksichtigen, ob auf ein und dasselbe Objekt oder ein und denselben Standort Bezug genommen wird, oder auf verschiedene. Zum Beispiel kann ein Eintrag für einen Standort mit der Bezeichnung „Bills Wohnung” in der Datenstruktur als Reaktion auf den Erhalt einer ersten Abfrage erstellt werden, die angibt, dass sich ein erstes Objekt in Bills Wohnung befindet. Eine zweite Abfrage kann angeben, dass sich ein zweites Objekt in Bills Wohnung befindet, jedoch Bills Wohnung anhand von dessen Anschrift, 555 Candy Cane Lane, Apartment Nr. 3, angeben. Das Verfahren 300 kann ermitteln, dass die in der zweiten Abfrage angegebene Adresse Bills Wohnung entspricht und daher der Standorteintrag für Bills Wohnung aktualisieren, um anzuzeigen, dass sich das zweite Objekt ebenfalls in Bills Wohnung befindet. Zum Beispiel kann in der grafischen Darstellung der persönlichen Datenstruktur ein Knoten für das zweite Objekt von dem Knoten, der den Standort für „Bills Wohnung” darstellt, abzweigen.
-
Im Schritt 324 führt das Verfahren 300 als Reaktion auf die zweite Abfrage eine mit dem Objekt verknüpfte Aktion durch. Zum Beispiel können Informationen zur Erkennung eines Objektes und seines gegenwärtigen Standortes zum späteren Abrufen gespeichert werden. Informationen über Objekte oder Standorte können abgerufen und einem Benutzer zur Verfügung gestellt werden; Vervollständigungsmaßnahmen können ausgeführt werden, und Auslöseaktionen können als Reaktion auf die zweite Abfrage ausgeführt werden.
-
4 zeigt ein Beispielsystem 400 zur Verwaltung und zur Meldung von Angaben zum Standort von Objekten. Das System 400 kann so konfiguriert werden, dass es Benutzerabfragen zum Abspeichern von Informationen darüber entgegen nimmt, wo ein Benutzer persönliche Objekte zurückgelassen hat, so dass der Standort dieser Objekte später auf die Aufforderung durch den Benutzer hin wieder abgerufen werden kann. Das System 400 erlaubt eine flexible Abfragestruktur und den Gebrauch natürlicher Sprache in Abfragen für Befehle an das System 400 zum Abspeichern von Informationen über Objekte und Standorte des Objektes, um an gespeicherten Darstellungen der Objekte und deren Standorten Operationen auszuführen und auf Abfragen mit Informationen zu reagieren, die dazu dienen können, den Benutzern über Objekte und Standorte gespeicherte Informationen anzuzeigen. Das System 400 kann ein oder mehrere Benutzergeräte 402, ein Netzwerk 410, einen Objekt- und Standortengine 404, eine Einheitendatenstruktur 408 und eine Spracherkennung 406 beinhalten. Obwohl verschiedene Komponenten des Systems 400 so dargestellt sind, als wären sie voneinander getrennt, können in einigen Ausführungen bestimmte der Komponenten mit anderen Komponenten in verschiedenen Kombinationen integriert und manche der Komponenten können in zusätzlichen Unterkomponenten getrennt untergebracht werden. Zum Beispiel kann die Spracherkennung 406 auf dem Benutzergerät 402 oder auf einem oder mehreren Serversystemen umgesetzt werden, die von dem Benutzergerät 402 entfernt angeordnet sind. In ähnlicher Weise kann der Objekt- und Standortengine 404 lokal auf dem Benutzergerät 402 bereitgestellt werden, auf einem oder mehreren Serversystemen, die von dem Benutzergerät 402 entfernt angeordnet sind, oder bestimmte Unterkomponenten können lokal bereitgestellt werden, andere dagegen auf entfernten Servern. in einigen Ausführungen kann das System 400 so konfiguriert sein, dass es bestimmte Verfahren durchführt, die in diesem Dokument beschrieben sind, wie z. B. das in 1 gezeigte Verfahren 100, oder das in 3 dargestellte Verfahren 300.
-
Das Benutzergerät 402 ist so konfiguriert, dass es Abfragen von einem Benutzer empfängt und dem Benutzer Informationen anzeigt. in einigen Ausführungen kann das Benutzergerät 402 ein Smartphone, Tabletcomputer, Desktopcomputer, Notebookcomputer oder eine Smartwatch sein. Das Benutzergerät 402 kann so konfiguriert werden, dass es Abfragen auf der Basis gesprochener Eingaben von einem Benutzer oder vom Benutzer getätigte Texteingaben empfängt. Das Benutzergerät 402 kann darüber hinaus eine elektronische Anzeige enthalten oder im Betrieb mit einer solchen verbunden sein, z. B. eine berührungsempfindliche Anzeige, Ober die dem Benutzer Informationen angezeigt werden können. Das Benutzergerät 402 kann eine E/A-Schnittstelle 412, eine Spracherkennung 414, eine Anzeigeverwaltung 416, Zeit- und Standortengines 418 und eine Kontoverwaltung 420 enthalten. Die E/A-Schnittstelle 412 ist so konfiguriert, dass sie Daten an das Benutzergerät 402 sendet und von dort empfängt. Zum Beispiel kann die E/A-Schnittstelle 412 einen oder mehrere Chips für die drahtlose Kommunikation enthalten, die Ober das Netzwerk 410, z. B. das Internet oder ein privates Netzwerk, Daten senden und empfangen können. Die Spracherkennung 414 kann vom Nutzer gesprochene Eingaben erkennen. In einigen Ausführungen kann die Spracherkennung 414 über begrenzte grammatikalische Fähigkeiten verfügen, so dass sie lediglich eine begrenzte Anzahl Sprachbefehle erkennt. Das Audiosignal für gesprochene Eingaben komplexer Abfragen in natürlicher Sprache kann in einigen Ausführungen an die Spracherkennung 406 übertragen werden, zur Verarbeitung auf getrennten Servern mit leistungsfähigeren Spracherkennungsfunktionen und größeren Grammatiken, als die, über die das Benutzergerät 402 verfügt. In einigen Ausführungen wird die gesamte Sprachverarbeitung auf dem Benutzergerät 402 ausgeführt. Die Anzeigeverwaltung 416 verwaltet die Inhalte, die auf einer oder mehreren elektronischen Anzeigen angezeigt werden, die mit dem Benutzergerät 402 verknüpft sind. Abfragen können dem Benutzer angezeigt werden, während die Abfrage von dem Gerät 402 empfangen wird, und die Reaktionen auf die Abfragen können dem Benutzer auf der elektronischen Anzeige angezeigt werden.
-
Die Zeit- und Standortengines 418 sind so konfiguriert, dass sie die gegenwärtige Zeit und den aktuellen Standort des Benutzergerätes 402 verfolgen. Mithilfe von Informationen aus den Zeit- und Standortengines 418 kann das System 400 Benutzerabfragen mit der Zeit bzw. dem Standort verknüpfen. Eine Abfrage kann mit einem Zeitstempel versehen werden, z. B. um das Datum und die Uhrzeit anzugeben, wann ein Objekt an einem bestimmten Standort zurückgelassen wurde. Wenn der Benutzer einen Speicherbefehl für einen Objektstandort gibt, z. B. „Ich habe den Basketball heute Nachmittag Paige geliehen”, so wird der Zeitstempel mit dem Befehl (Abfrage) verknüpft, um das Datum und die Uhrzeit festzuhalten, wann der Basketball Paige ausgeliehen wurde. In einigen Ausführungen kann der Benutzer ausdrücklich angeben, wann ein Objekt an einem bestimmten Standort zurückgelassen wurden, und solche ausdrücklichen Zeitstempel überschreiben den aktuellen Standardzeitstempel aus den Zeit- und Standortengines 418. Zum Beispiel kann eine Abfrage, die am 5. Juni empfangen wurde, und die besagte „Ich habe den Basketball vor vier Tagen Paige gegeben” mit dem Datum 1. Juni versehen werden, anstatt 5. Juni, da der Inhalt der Abfrage ausdrücklich ein Datum angibt. Durch die Protokollierung des Datums und der Uhrzeit, wann ein Objekt an einem bestimmten Standort zurückgelassen wurde, kann das System 400 diese Angaben später nutzen, um zeitliche Abfragen zu Objekten und Standorten zu beantworten. Zum Beispiel kann das System 400 einen Zeitstempel verwenden, der mit Einträgen in einer persönlichen Objektdatenstruktur verknüpft ist, um Abfragen dazu zu beantworten, wann ein Objekt an einem oder mehreren Standorten zurückgelassen wurde, wie lange das Objekt an einem oder mehreren Standorten verblieben ist und an welchen Standorten ein Objekt innerhalb eines bestimmten Zeitraums gelassen wurde.
-
Die Kontoverwaltung 420 des Benutzergerätes 402 verwaltet ein oder mehrere Benutzerkonten auf dem Gerät 402. Zum Beispiel kann die Kontoverwaltung 420 für jeden von mehreren Benutzern entsprechende Konten verwalten. Jedes Benutzerkonto kann Benutzerprofilinformationen sowie Informationen über Benutzerpräferenzen in Bezug auf Befehle vom Typ Objektstandort enthalten. Benutzerkontoinformationen können im Benutzerprofilspeicher 422 gespeichert werden. Eine oder mehrere persönliche Objektdatenstrukturen für die jeweiligen Benutzerkonten können in einem Objektdatenpool 424 gespeichert werden. Daher können verschiedene Benutzer ihre eigene, persönliche Datenstruktur haben, die von denen anderer Benutzer getrennt ist. Wenn ein erster Benutzer sich mit einem ersten Konto in das Gerät 402 eingeloggt hat, kann er Informationen zum Standort von Objekten in seiner jeweiligen persönlichen Objektdatenstruktur speichern und abrufen. Wenn ein anderer Benutzer sich mit einem zweiten Konto in das Gerät 402 einloggt, kann dieser Benutzer Informationen zum Standort von Objekten in seiner jeweiligen persönlichen Objektdatenstruktur speichern und abrufen. Die Konten können mit dem Benutzergerät 402 verknüpft werden (z. B. verwaltet durch ein Betriebssystem des Benutzergerätes 402) oder von einem oder mehreren Diensten oder Anwendungen auf dem Gerät, oder die in sonstiger Weise für das Gerät 402 zugänglich sind. Zum Beispiel kann eine auf dem Gerät installierte Objekteigenschaften-Anwendung mehreren verschiedenen Benutzern erlauben, sich bei der Anwendung anzumelden, und kann die jeweiligen Konten für jeden der Benutzer verwalten. In einigen Ausführungen kann der Benutzerprofilspeicher 422 und/oder der Objektdatenpool 424 mindestens teilweise von außerhalb des Benutzergerätes 402 gepflegt werden, z. B. von einem Objekte-Standortserver. In einigen Ausführungen können Benutzerdaten, einschließlich der persönlichen Objektdatenstruktur, sowohl lokal als auch von fern gepflegt werden. Änderungen der Benutzerdaten, wie z. B. Aktualisierungen der persönlichen Objektdatenstruktur, können automatisch zwischen einem oder mehreren lokalen und entfernten Geräten weitergeleitet werden, wenn an einem der Geräte eine Anderung vorgenommen wird.
-
Der Objekt- und Standortengine 404 („O&L-Engine”) ist so konfiguriert, dass er Abfragen empfängt, verarbeitet und darauf reagiert, darunter ein oder mehrere Typen von Befehlen zu den Standorten von Objekten. Der O&L-Engine 404 kann eine Abfrage empfangen, die Abfrage analysieren und aufgrund des Inhaltes der Abfrage darauf reagieren. Gibt ein Benutzer z. B. eine gesprochene Abfrage in das Benutzergerät 402 ein, kann das Benutzergerät 402 die Abfrage oder eine Beschreibung der Abfrage über das Netzwerk 410 an den O&L-Engine 404 senden, der auf einem oder mehreren entfernten Servern gehustet werden kann. Der O&L-Engine 404 kann als Reaktion auf die Abfrage eine oder mehrere Aktionen ausführen, z. B. Informationen darüber speichern, wo sich ein bestimmtes Objekt befindet, angeben, wo sich das Objekt befindet, Informationen darüber aktualisieren, wo sich das Objekt befindet, Informationen für das Auslösen einer Aktion ermitteln und Anweisungen erzeugen, die an das Benutzergerät 402 gesendet werden, um die Ausführung einer Aktion als Reaktion auf ein auslösendes Ereignis zu veranlassen.
-
Der O&L-Engine 404 kann eine E/A-Schnittstelle 426, eine Analysefunktion für Abfragen 428, eine Erkennungsfunktion für benannte Einheiten 430, eine O&L-Datenverwaltung 432 und eine Kontenverwaltung 434 enthalten. Darüber hinaus kann der O&L-Engine 404 mit einer Spracherkennung 406 und einer oder mehreren externen Datenquellen kommunizieren, z. B. einer Einheitendatenstruktur 408. Die E/A-Schnittstelle 426 ist so konfiguriert, dass sie über ein oder mehrere Netzwerke 410 kommuniziert, z. B. ein privates Netzwerk oder das Internet, und kann mit der Spracherkennung 406, der Einheitendatenstruktur 408 und sonstigen externen Quellen und mit dem Benutzergerät 402 kommunizieren.
-
Die Analysefunktion 428 für Abfragen ist so konfiguriert, dass sie vom Benutzergerät 402 empfangene Abfragen analysiert. Die Analysefunktion 428 für Abfragen kann eine Benutzerabfrage verarbeiten, um zu ermitteln, ob es sich um einen Befehl vom Typ Objektstandort handelt, und wenn ja, von welchem Typ der Befehl vom Typ Objektstandort ist (z. B. Speicherbefehl für einen Objektstandort, Abfragebefehl, Vallständigungsbefehl, Befehl zum Auslösen von Handlungen oder sonstige). Die Analysefunktion für Abfragen kann jedes in einer Abfrage genannte Objekt erkennen, jeden in einer Abfrage genannten Standort sowie eine Entsprechung zwischen den in der Abfrage genannten Objekten und Standorten. Eine Abfrage kann z. B. angeben „Die Handtücher sind im Trockner und das Bettzeug ist im Schrank.” Die Analysefunktion 428 für Abfragen kann erkennen, dass es sich bei der Abfrage um einen Speicherbefehl für einen Objektstandort handelt, enthält Bezüge auf zwei Objekte (Handtücher und Bettzeug), zwei Standorte (Trockner und Schrank) sowie die Angabe, dass die Handtücher und der Trockner einander als Objekt und Standort entsprechen, und das Bettzeug und der Schrank als weiteres Objekt mit seinem Standort.
-
In einigen Ausführungen verwendet die Analysefunktion 428 für Abfragen zur Verarbeitung und Analyse einer Abfrage eine oder mehrere Grammatiken. Zum Beispiel kann eine Sprachabfrage von der Spracherkennung 406 in Text umgewandelt werden. Die Spracherkennung 406 enthält Grammatiken, die so konfiguriert sind, dass sie Befehle verschiedener Typen in natürlicher Sprache zu den Standorten von Objekten erkennen. Die Aussagengrammatik 440 ist so konfiguriert, dass sie die Erkennung von Speicherbefehlen für Objektstandorte erlaubt (z. B. „Der Hockeypuck ist auf dem Rücksitz”, „Denk' daran, dass die Kunstsammlung bei Bill zuhause ist”). Die Auslesegrammatik 442 ist so konfiguriert, dass sie die Erkennung von ObjektAbfragebefehlen erlaubt (z. B. „Wo ist der Hockeypuck?”, „Was hat Bill?”). Die Vervollständigungsgrammatik 444 ist so konfiguriert, dass sie die Erkennung von Objekvervoliständigungsbefehlen erlaubt (z. B. „Ich habe den Hockeypuck zurückgegeben”, „Bill hat die Kunstsammlung nicht mehr”). Die Grammatiken zum Auslösen von Ereignissen 446 sind so konfiguriert, dass sie die Erkennung von Befehlen zum Auslösen von Ereignissen erlauben („Erinnere mich daran, dass Sally den Hockeypuck haben möchte”, „Erinnere mich daran, dass Sally nach Bill die Kunstsammlung haben möchte”). Die Analysefunktion 428 für Abfragen kann eine Abfrage senden, die von der Spracherkennung 406 mithilfe der verschiedenen Grammatiken 440-446 der Spracherkennung 406 transkribiert werden soll. Aus der Transkription der Sprachabfrage kann die Analysefunktion 428 für Abfragen eine oder mehrere Zeichenfolgen herausziehen, die Objekten und Standorten in den Zeichenfolgen entsprechen. In einigen Ausführungen können die Grammatiken 440-446 dafür verwendet werden, zu erkennen, welche Begriffe in einer Textabfrage Objekten und Standorten entsprechen, und auch um zu bestimmen, um was für einen Befehl vom Typ Objektstandort es sich bei der Abfrage handelt. Zum Beispiel kann jede Grammatik in einem oder mehreren Sprachmodellen enthalten sein, die mithilfe einer großen Anzahl von Trainingsabfragen eines bestimmten Typs trainiert wurden. Die Aussagegrammatiken 440 können auf Trainingsbeispielen von Abfragen vom Aussagetyp basieren (z. B. Speicherbefehle für einen Objektstandort), die Auslesegrammatiken 442 können auf Trainingsbeispielen von Abfragen vom Auslesetyp basieren, die Vervollständigungs-Grammatiken 444 können auf Trainingsbeispielen von Abfragen vom Vervollständigungstyp basieren und Grammatiken zum Auslösen von Ereignissen 446 können auf Trainingsbeispielen von Abfragen vom Typ zum Auslösen von Ereignissen basieren. Wenn eine neue Abfrage erhalten wird, kann ein Modell, das statistisch mithilfe von Abfragen der verschiedenen Typen trainiert wurde, eine probabilistische Bestimmung des jeweils verwendeten Abfragetyps vornehmen (z. B. Aussage, Abfrage, Vervollständigung, Auslösen von Ereignissen, sonstige).
-
Die Erkennungsfunktion für benannte Einheiten 430 ist so konfiguriert, dass sie eine oder mehrere Eigenschaften eines in einer Abfrage genannten Objektes oder Standortes bestimmt. Die Erkennungsfunktion für benannte Einheiten 430 kann Eigenschaften entweder für Objekte oder Standorte in einer Abfrage oder sowohl für Objekte und Standorte bestimmen. Wenn in einer Abfrage mehr als ein Objekt oder Standort angegeben wird, kann der Engine 430 Eigenschaften für alle oder lediglich einige der Objekte oder Standorte bestimmen. Die Erkennungsfunktion für benannte Einheiten 430 kann auf eine oder mehrere Datenquellen zugreifen, um die Eigenschaften für ein Objekt oder dessen Standort zu erkennen. In einigen Ausführungen können die Datenquellen außerhalb des Systems 400 liegen. Zum Beispiel kann die Erkennungsfunktion für benannte Einheiten 430 auf die Abfrage oder aufgrund des interessierenden Objektes oder Standortes hin ein oder mehrere Corpora durchsuchen. Der Inhalt der Suchergebnisse kann dann dafür verwendet werden, ein oder mehrere Schlagwörter zu bestimmen, die mit dem Objekt oder Standort verknüpft sind. Zum Beispiel kann die Erkennungsfunktion für benannte Einheiten 430 Schlagwort-Eigenschaften für das Objekt „Kamera” ermitteln, indem sie nach dem Wort „Kamera” sucht und aus einem oder mehreren der Suchergebnisse in den vordersten Positionen die relevantesten Schlagwärter ermittelt, die mit dem Wort „Kamera” verknüpft sind. Diese Schlagwort-Eigenschaften können dann mit dem Objekt „Kamera” verknüpft werden, so dass die Kamera später auf der Basis ihrer Eigenschaften erkannt werden kann (z. B. Foto, Linse, Sucher, D-SLR usw.), anstelle oder zusätzlich zu der Art und Weise, wie die Kamera ursprünglich in einer Abfrage angegeben wurde.
-
In einigen Ausführungen ermittelt die Erkennungsfunktion für benannte Einheiten 430 Eigenschaften für ein Objekt oder dessen Standort, indem sie eine oder mehrere Einheiten erkennt, denen das Objekt oder der Standort in der Wirklichkeit entspracht, und Eigenschaften für diese Einheiten mit dem in der Abfrage genannten Objekt oder Standort verknüpft. in einem Beispiel werden die Einheit und ihre Eigenschaften unter Bezugnahme auf eine Einheitendatenstrijktur 408 erkannt. Die Einheltendatenstruktur 408 enthält allgemein eine strukturierte Darstellung von Einheiten (z. B. Personen, Orte, Dinge, Ideen), Beziehungen zwischen Einheiten und Eigenschaften solcher Einheiten. Die Einheitendatenstruktur 408 kann als Graph dargestellt werden, mit Knoten, die Einheiten darstellen, und Kanten, die die Knoten verbinden und die Beziehungen zwischen Einheiten und verschiedenen Eigenschaften (z. B. Tatsachen) zu den Einheiten darstellen. Ein Beispiel eines solchen Graphen ist in den 2A und 2B gezeigt. Der Einheiten-Datenpool 448 enthält Daten für die in der Datenstruktur 408 dargestellten Einheiten, und der Eigenschaften-Datenpool 450 enthält Daten zu den Eigenschaften der Einheiten. Die Einheitendatenstruktur 448 kann manuell, automatisch oder durch eine Kombination aus beidem beschafft werden. Einheiten können z. B. ermittelt werden, indem öffentlich zugängliche Ressourcen im Internet ausgewertet, die Inhalte der öffentlich zugänglichen Ressourcen analysiert werden und anhand der Analyse der Ressourcen ermittelt wird, ob es Einheiten gibt und welche Eigenschaften sie haben. Thema einer große Anzahl von Ressourcen kann z. B. ein bestimmtes Objekt (oder eine Reihe von Objekten) sein, wie z. B. die Sherlock-Holmes-Romanreihe von Arthur Conan Doyle. Ein hoher Vertrauenswert kann dafür ermittelt werden, dass jedes Buch in der Reihe eine Einheit ist, wie auch ihr Autor, Sir Arthur Conan Doyle. Darüber hinaus können für die Bücher verschiedene Eigenschaften ermittelt werden, wie z. B. ein Genre (Krimi) und die Zeit und der Ort ihrer Entstehung und Erstveröffentlichung. Solche Informationen können in der Einheitendatenstruktur 448 gespeichert werden.
-
In einigen Ausführungen kann die Erkennungsfunktion für benannte Einheiten 430 ein Objekt oder einen Standort in einer Abfrage mit einer Einheit in der Einheitendatenstruktur 448 verknüpfen, z. B. mit einem Verweis auf die verknüpfte Einheit. In dieser Weise können solche Informationen auch für das entsprechende Objekt oder den Standort aus der Abfrage aktualisiert werden, wenn Informationen über eine Einheit hinzugefügt oder in sonstiger Weise aktualisiert werden.
-
Die O&L-Datenverwaltung 432 verwaltet Informationen über Objekte und Standorte. Zum Beispiel kann die O&L-Datenverwaltung 432, die mit der Kontenverwaltung 434 und als Reaktion auf Benutzerabfragen arbeitet, Informationen Ober Objekte und Objektspeicherorte für Benutzer abspeichern und darauf zugreifen. Wurde eine Abfrage einmal analysiert und Eigenschaften eines Objektes oder Standortes ermittelt, so kann die O&L-Datenverwaltung 432 veranlassen, dass solche Informationen durch die Analysefunktion 428 für Abfragen bzw. die Erkennungsfunktion für benannte Einheiten 430 gespeichert werden, und Informationen zu einem Objekt, dessen Standort und die Eigenschaften des Objektes und Standortes können in einer persönlichen Objektdatenstruktur 438 gespeichert werden, die von der Kontenverwaltung 434 gepflegt wird. Zum Beispiel kann eine jeweilige persönliche Objektdatenstruktur 438, wie durch Daten im Benutzerkontenspeicher 436 angezeigt, für jedes Benutzerkonto gepflegt werden. Daher kann Fred z. B. Informationen darüber abspeichern und abrufen, wo sich seine eigenen, persönlichen Objekte befinden, und auch Emma kann dies km. Die O&L-Datenverwaltung 432 kann auch Informationen aus der persönlichen Objektdatenstruktur 438 ziehen, um Anfragen zu beantworten, wie z. B. Objekt-Abfragen.
-
5 zeigt das Beispiel eines Computers 500 und eines tragbaren Computers, die zur Umsetzung der hierin beschriebenen Techniken verwendet werden können. Der Computer 500 soll verschiedene Formen digitaler Computer darstellen, wie z. B. Laptops, Desktops, Workstations, persönliche digitale Assistenten, Server, Blade-Server, Großrechner und sonstige geeignete Computer. Der mobile Computer soll verschiedene Formen mobiler Geräte darstellen, z. B. persönliche digitale Assistenten, Mobiltelefone, Smartphones und sonstige, ähnliche Computer. Die hier gezeigten Komponenten, ihre Verbindungen und Beziehungen und ihre Funktionen sollen lediglich als Beispiele dienen, sie sollen die Ausführungen des in diesem Dokument beschriebenen bzw. beanspruchten Gegenstandes jedoch nicht einschränken.
-
Der Computer 500 enthält einen Prozessor 502, einen Speicher 504, ein Speichergerät 506, eine Hochgeschwindigkeitsschnittstelle 508, die mit dem Speicher 504 verbunden ist, sowie mehrere Hochgeschwindigkeits-Erweiterungsports 510 und eine langsame Schnittstelle 512, die mit einem langsamen Erweiterungsport 514 verbunden ist, und das Speichergerät 506. Der Prozessor 502, der Speicher 504, das Speichergerät 506, die Hochgeschwindigkeitsschnittstelle 508, die Hochgeschwindigkeits-Erweiterungsports 510 und die langsame Schnittstelle 512 sind jeweils mithilfe verschiedener Busse untereinander verbunden und können auf einer gemeinsamen Hauptplatine (Motherboard) oder in sonstiger geeigneter Weise montiert sein. Der Prozessor 502 kann Anweisungen zur Ausführung im Computer 500 verarbeiten, darunter auch solche Anweisungen, die im Speicher 504 oder auf dem Speichergerät 506 gespeichert sind, um grafische Informationen für ein GUI auf einer externen Eingabe-/Ausgabegerät anzuzeigen, wie z. B. einer Anzeige 516, die mit einer Hochgeschwindigkeitsschnittstelle 508 verbunden ist. Bei anderen Ausführungen können, je nach Eignung, mehrere Prozessoren bzw. mehrere Busse gemeinsam mit mehreren Speichern und Speichertypen verwendet werden. Es können auch mehrere Computer untereinander verbunden sein, wobei jedes Gerät Teile der notwendigen Operationen leistet (z. B. als Serverbank, Gruppe von Blade-Servern oder ein Mehrprozessorsystem).
-
Der Speicher 504 speichert Informationen im Computer 500. in einigen Ausführungen ist der Speicher 504 eine flüchtige Speichereinheit bzw. mehrere solche Speichereinheiten. In einigen Ausführungen ist der Speicher 504 eine nicht-flüchtige Speichereinheit bzw. mehrere solche Speichereinheiten. Der Speicher 504 kann auch eine andere Form von computerlesbarem Medium sein, wie z. B. eine magnetische oder optische Platte.
-
Das Speichergerät 506 kann als Massenspeicher für den Computer 500 fungieren. In einigen Ausführungen kann das Speichergerät 506 ein computerlesbares Medium sein oder ein solches enthalten, wie z. B. ein Diskettenlaufwerk, eine Festplatte, ein optisches Laufwerk oder ein Bandlaufwerk, einen Flashspeicher oder sonstige ähnliche Festspeichergeräte oder eine Anordnung solcher Geräte, darunter auch Geräte in einem Speichernetzwerk (Storage Area Network) oder sonstige Konfigurationen. Das Computerprogrammprodukt kann auch Anweisungen enthalten die, wenn sie ausgeführt werden, eine oder mehrere Methoden wie die oben beschriebene ausführen. Das Computerprogrammprodukt kann auch physisch in einem Computer oder einem maschinenlesbaren Medium ausgeführt werden, wie z. B. dem Speicher 504, dem Speichergerät 506 oder Speicher auf dem Prozessor 502.
-
Die Hochgeschwindigkeitsschnittstelle 508 verwaltet bandbreitenintensive Operationen für den Computer 500, während die langsame Schnittstelle 512 Operationen verwaltet, die weniger bandbreitenintensiv sind. Diese Zuweisung von Funktionen soll hier nur als Beispiel dienen. In einigen Ausführungen ist die Hochgeschwindigkeitsschnittstelle 508 mit dem Speicher 504, der Anzeige 516 (z. B. durch einen Grafikprozessor oder Beschleuniger) und die Hochgeschwindigkeits-Erweiterungsports 510 verbunden, die verschiedene Erweiterungskarten (nicht gezeigt) aufnehmen können. Bei der Ausführung ist die langsame Schnittstelle 512 mit dem Speichergerät 506 und dem langsamen Erweiterungsport 514 verbunden. Der langsame Erweiterungsport 514, der verschiedene Kommunikationsports einschließen kann (z. B. USB, Bluetooth, Ethernet, Wireless Ethernet), kann mit einem oder mehreren Eingabe-/Ausgabegeräten verbunden sein, wie z. B. einer Tastatur, einem Zeigegerät, einem Scanner oder einem Netzwerkgerät, wie z. B. einem Switch oder Router, z. B. über einen Netzwerkadapter.
-
Der Computer 500 kann in einer Vielzahl verschiedener Formen ausgeführt werden, wie in der Abbildung gezeigt. Er kann z. B. als Standardserver 520 oder mehrmals in einer Gruppe solcher Server ausgeführt werden. Außerdem kann er in einem Personal Computer ausgeführt werden, z. B. in einem Laptopcomputer 522. Er kann auch als Teil eines Rack-Serversystems 524 ausgeführt werden. Alternativ können Komponenten des Computers 500 mit anderen Komponenten in einem mobilen Gerät (nicht gezeigt) kombiniert werden, z. B. in einem mobilen Computer 550. Jedes dieser Geräte kann einen oder mehrere der Computer 500 und der mobilen Computer 550 enthalten, und es kann ein ganzes System aus mehreren miteinander kommunizierenden Computern aufgebaut werden.
-
Der mobile Computer 550 enthält einen Prozessor 552, einen Speicher 564, ein Eingabe-/Ausgabegerät, wie z. B. eine Anzeige 554, eine Kommunikationsschnittstelle 566 und einen Transceiver 568, neben anderen Komponenten. Der mobile Computer 550 kann auch mit einem Speichergerät ausgestattet sein, wie z. B. einem Micro-Drive- oder sonstigen Gerät, um zusätzliche Speichermöglichkeiten zu bieten. Der Prozessor 552, der Speicher 564, die Anzeige 554, die Kommunikationsschnittstelle 566 und der Transceiver 568 sind mithilfe verschiedener Busse miteinander verbunden, und mehrere der Komponenten können auf einer gemeinsamen Hauptplatine (Motherboard) oder in sonstiger geeigneter Weise montiert werden.
-
Der Prozessor 552 in dem mobilen Computer 550 kann Anweisungen ausführen, einschließlich solcher Anweisungen, die im Speicher 564 gespeichert sind. Der Prozessor 552 kann als Chipset aus Chips ausgeführt werden, die separate und mehrere analoge und digitale Prozessoren enthalten. Der Prozessor 552 kann z. B. die anderen Komponenten des mobilen Computers 550 koordinieren, z. B. die Steuerung der Benutzeroberflächen, Anwendungen, die auf dem mobilen Computer 550 ausgeführt werden, und Drahtloskommunikation durch den mobilen Computer 550.
-
Der Prozessor 552 kann mit einem Benutzer durch eine Kontrollschnittstelle 558 und eine Anzeigeschnittstelle 556 kommunizieren, die mit der Anzeige 554 verbunden ist. Die Anzeige 554 kann z. B. eine TFT (Thin-Film-Transistor Liquid Crystal Display) Anzeige oder eine OLED (Organic Light Emitting Diode) Anzeige oder eine sonstige geeignete Anzeigetechnologie sein. Die Anzeigeschnittstelle 556 kann geeignete Schaltungen zum Betrieb der Anzeige 554 enthalten, damit dem Benutzer grafische und sonstige angezeigt werden können. Die Kontrollschnittstelle 558 kann Befehle von einem Benutzer entgegennehmen und diese in Anweisungen für den Prozessor 552 übersetzen. Außerdem kann eine externe Schnittstelle 562 die Kommunikation mit dem Prozessor 552 ermöglichen, damit der mobile Computer 550 mit anderen Geräten in seiner unmittelbaren Umgebung kommunizieren kann. Die externe Schnittstelle 562 kann z. B. in einigen Ausführungen die drahtgebundene Kommunikation ermöglichen, oder in anderen Ausführungen die drahtlose Kommunikation, und es können auch mehrere Schnittstellen verwendet werden.
-
Der Speicher 564 speichert Informationen in dem mobilen Computer 550. Der Speicher 564 kann in Form eines oder mehrerer computerlesbarer Medien, einer oder mehrerer flüchtiger Speichereinheiten oder einer oder mehrerer nicht-flüchtiger Speichereinheiten ausgeführt werden. Es kann auch ein Erweiterungsspeicher 574 bereitgestellt und mit dem mobilen Computer 550 über eine Erweiterungsschnittstelle 572 verbunden werden, die z. B. eine Schnittstelle für SIMM-Karten (Single In Line Memory Module) enthalten kann. Der Erweiterungsspeicher 574 kann zusätzlichen Speicherplatz für den mobilen Computer 550 bereitstellen oder auch Anwendungen oder sonstige Informationen für den mobilen Computer 550 speichern. Insbesondere kann der Erweiterungsspeicher 574 Anweisungen enthalten, die die oben beschriebenen Verfahren ausführen oder ergänzen, und kann darüber hinaus auch sichere Informationen enthalten. Somit kann der Erweiterungsspeicher 574 z. B. als Sicherheitsmodul für den mobilen Computer 550 angeboten werden und kann mit Anweisungen programmiert werden, die den sicheren Gebrauch des mobilen Computers 550 ermöglichen. Außerdem können über die SIMM-Karten sichere Anwendungen bereitgestellt werden, zusammen mit zusätzlichen Informationen, wie z. B. die Ablage von Informationen zur Identifizierung auf der SIMM-Karte in einer Weise, die nicht gehackt werden kann.
-
Der Speicher kann Flash-Speicher bzw. NVRAM-Speicher (Non-volatile Random Access Memory) beinhalten, wie weiter unten besprochen. Das Computerprogrammprodukt enthält Anweisungen die, wenn sie ausgeführt werden, eine oder mehrere Methoden ausführen, wie z. B. die oben beschriebenen. Das Computerprogrammprodukt kann ein computer- oder maschinenlesbares Medium sein, z. B. der Speicher 564, der Erweiterungsspeicher 574 oder Speicher auf dem Prozessor 552. In einigen Ausführungen kann das Computerprogrammprodukt als weitergeleitetes Signal erhalten werden, z. B. Ober den Transceiver 568 oder die externe Schnittstelle 562.
-
Der mobile Computer 550 kann über die Kommunikationsschnittstelle 566 drahtlos kommunizieren, die ggf. auch Schaltungen zur Verarbeitung digitaler Signale enthalten kann. Die Kommunikationsschnittstelle 566 kann die Kommunikation unter verschiedenen Moden oder Protokollen ermöglichen, z. B. GSM-Sprachanrufe (Global System für Mobile Communications), SMS (Skort Message Service), EMS (Enhanced Messaging Service) oder MMS-Nachrichten (Multimedia Messaging Service), CDMA (Code Division Multiple Access), TDMA (Time Division Multiple Access), PDC (Personal Digital Cellular), WCDMA (Wideband Code Division Multiple Access), CDMA2000 oder GPRS (General Packet Radio Service), unter anderen. Eine solche Kommunikation kann z. B. durch den Transceiver 568 mithilfe einer Funkfrequenz erfolgen. Außerdem kann die Kommunikation auf kurze Distanz erfolgen, z. B. mithilfe eines Bluetooth-, WiFi- oder sonstigen Transceivers (nicht gezeigt). Außerdem kann ein GPS (Global Positioning System)-Empfängermodul 570 drahtlos zusätzliche Navigations- und Ortungsdaten an den mobilen Computer 550 senden, die je nach Eignung durch Anwendungen verwendet werden können, die auf dem mobilen Computer 550 laufen.
-
Der mobile Computer 550 kann mithilfe eines Audio-Codecs 560 auch akustisch kommunizieren, das gesprochene Informationen von einem Benutzer empfangen und diese in nutzbare digitale Informationen umwandeln kann. Das Audio-Codec 560 kann auch für einen Benutzer hörbare Signale erzeugen, wie z. B. Ober einen Lautsprecher, z. B. in einem Hörer des mobilen Computers 550. Solche Tonsignale können Tonsignale von Sprachanrufen sein, Tonaufnahmen (z. B. Sprachnachrichten, Musikdateien usw.) und können darüber hinaus Tonsignale enthalten, die von Anwendungen erzeugt werden, die auf dem mobilen Computer 550 ausgeführt werden.
-
Der mobile Computer 550 kann in einer Vielzahl verschiedener Formen ausgeführt werden, wie in der Abbildung gezeigt. Zum Beispiel kann er als Mobiltelefon 580 ausgeführt werden. Er kann auch als Teil eines Smartphones 582, eines persönlichen digitalen Assistenten oder eines sonstigen, ähnlichen mobilen Gerätes ausgeführt werden.
-
Verschiedene Ausführungen der hier beschriebenen Systeme und Techniken können in digitalen elektronischen Schaltungen, integrierten Schaltkreisen, speziell konstruierten ASICs (Application Specific Integrated Circuits), Computerhardware, Firmware, Software oder in Kombinationen davon ausgeführt werden. Diese verschiedenen Ausführungen können die Ausführung in einem oder mehreren Computerprogrammen beinhalten, die auf einem programmierbaren System mit mindestens einem programmierbaren Prozessor ausgeführt bzw. interpretiert werden können, der entweder speziell oder für allgemeine Zwecke bestimmt ist, und der mit einem Speichersystemen verbunden ist, um von dort Daten und Anweisungen zu empfangen und sie dorthin zu senden, mit mindestens einem Eingabegerät und mindestens einem Ausgabegerät.
-
Diese Computerprogramme (die auch als Programme, Software, Softwareanwendungen oder Code bezeichnet werden) sind u. a. Maschinenanweisungen für einen programmierbaren Prozessor und können in einer prozeduralen bzw. objektorientierten Programmiersprache auf hohem Niveau ausgeführt sein, bzw. in Assembly-/Maschinensprache. Die hier verwendeten Begriffe maschinenlesbares Medium und computerlesbares Medium beziehen sich auf jedes Computerprogrammprodukt, jeden Apparat bzw. jedes Gerät (z. B. Magnetplatten, optische Platten, Speicher, programmierbare Logic Devices (PLDs)), die dazu verwendet werden, Maschinenanweisungen bzw. Daten an einen programmierbaren Prozessor zu senden. Hierzu gehört auch ein maschinenlesbares Medium, das Maschinenanweisungen als maschinenlesbares Signal entgegennimmt. Der Begriff maschinenlesbares Signal bezieht sich auf jedes Signal, das dazu verwendet wird, Maschinenanweisungen bzw. Daten an einen programmierbaren Prozessor zu senden.
-
Um die Interaktion mit einem Benutzer zu ermöglichen, können die hier dargestellten Systeme und Techniken auf einem Computer mit einem Anzeigegerät umgesetzt werden (z. B. einem CRT-(Kathodenstrahlröhren) oder LCD-(Flüssigkristallanzeige)-Monitor, einschließlich einer Tastatur und eines Zeigegerätes (z. B. einer Maus oder eines Trackballs), mit denen der Benutzer Eingaben in den Computer vornehmen kann. Es können auch andere Geräte verwendet werden, um die Interaktion mit einem Benutzer zu ermöglichen; zum Beispiel kann es sich bei der Rückmeldung an den Benutzer um jegliche Art von sensorischer Rückmeldung handeln (z. B. visuelle, akustische oder taktile Rückmeldung); auch die Eingaben des Benutzers können in beliebiger Form empfangen werden, d. h. auch akustisch, sprachlich oder taktil.
-
Die hier beschriebenen Systeme und Techniken können in einem Computersystem umgesetzt werden, das eine Backend-Komponente enthält (z. B. einen Datenserver) oder eine Middleware-Komponente (z. B. einen Anwendungsserver) oder eine Frontend-Komponente (z. B. einen Client-Computer mit einer grafischen Benutzeroberfläche oder einen Web-Browser, durch den der Benutzer mit einer hier dargestellten Umsetzung des Gegenstandes interagieren kann), oder eine beliebige Kombination solcher Backend-, Middleware- oder Frontend-Komponenten. Die Komponenten des Systems können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation verbunden sein (z. B. ein Kommunikationsnetzwerk). Solche Kommunikationsnetzwerke sind u. a. lokale Netzwerke („LAN”) und Großraumnetzwerke („WAN”) sowie das Internet.
-
Das Computersystem kann aus Clients und Servern bestehen. Client und Server sind generell voneinander entfernt und interagieren in der Regel über ein Kommunikationsnetzwerk. Die Beziehung von Client und Server ergibt sich durch Computerprogramme, die auf den jeweiligen Computern ausgeführt werden und in einer Client-Server-Beziehung zueinander stehen.
-
Obwohl weiter oben verschiedene Ausführungen detailliert beschrieben wurden, sind auch andere Modifikationen möglich. Darüber hinaus erfordern die in den Abbildungen dargestellten logischen Abläufe nicht unbedingt die gezeigte spezielle Reihenfolge oder überhaupt eine bestimmte Reihenfolge, um die gewünschten Ergebnisse zu erzielen. Außerdem können weitere Schritte zur Anwendung kommen, oder Schritte können bei den beschriebenen Abläufen ausgelassen werden, und weitere Komponenten können zu den beschriebenen Systemen hinzugefügt oder daraus entfernt werden. Dementsprechend liegen andere Implementierungen innerhalb des Umfangs der folgenden Ansprüche.