Wie Annas Wissen gebaut ist
Anna, die iPhone-Assistentin von fak10, merkt sich nicht nur deine Sätze, sondern vor allem, was sie bedeuten. Dafür zerlegt sie jeden Satz in kleine Aussagen und legt sie in ihr Wissen. Hier sind die Grundbegriffe, damit du beim Ausprobieren verstehst, was du im Graphen und unter „Fakten“ siehst.
Ein Gedächtnispalast
Wie ein Gedächtnispalast: Was du erzählst, legt Anna als Netz aus Aussagen ab und findet es über die Beziehungen wieder. Das Netz kannst du im Reiter „Graph“ ablaufen, wie im Beitrag über den Graphen gezeigt.
Die vier Bausteine
- Klasse (im Code
cls): ein Begriff, etwa Mensch, Tochter, Hund oder Ort. Klassen bilden eine Leiter nach oben: Tochter → Kind → Mensch → Person. - Entität (
com, complex): ein bestimmtes Gegenüber, etwa eine Person, ein Tier, ein Ort oder ein Ereignis. Eine Entität ist Instanz einer Klasse, und über sie gibt es weitere Aussagen. Deine Schwester ist eine Entität, dein Hund auch. - Zeichenkette (
lit, literal): ein bloßer Text wie ein Vorname, eine Telefonnummer, eine E-Mail-Adresse oder eine URL. Eine Zeichenkette hat keine Klasse und keine eigenen Fakten, sie wird gelesen, nicht beschrieben. Welche Relationen auf eine Zeichenkette zeigen, ist festgelegt, zum Beispiel „hat Vornamen“ oder „hat Telefonnummer“. Ein Datum ist keine Zeichenkette, sondern ein eigener Knoten. - Relation (
rel): das Prädikat, also die Beziehung, etwa „hat Kind“, „wohnt in“ oder „hat Telefonnummer“. Jede Relation hat einen eigenen Knoten, an dem steht, was sie bedeutet, zum Beispiel worauf sie zeigt.
Daneben gibt es unter anderem Typen, die du nicht siehst: Wörter und Grammatik, mit denen Anna Sätze liest. Zeichenketten zeigt der Graph nicht, du findest sie unter „Fakten“.
Tripel: Subjekt, Prädikat, Objekt
Jede Aussage in Annas Wissen hat drei Teile: worüber (Subjekt), welche Relation (Prädikat) und worauf sie zeigt (Objekt, eine Entität, eine Klasse oder eine Zeichenkette). So eine Dreiergruppe heißt Tripel. Aus „Ich habe einen Hund. Meine Schwester hat die Handynummer 0170 …“ werden zum Beispiel diese Tripel:
mein Hund
Entität (com)
↓→ist ein(e) = Instanz von
Hund
Klasse (cls)
meine Schwester
Entität (com)
↓→hat Mobilnummer
„0170 …“
Zeichenkette (lit)
Hund
Klasse (cls)
↓→spezifiziert
Tier
Klasse (cls)
„ist ein(e)“ heißt: Die Entität ist Instanz dieser Klasse. Ein Satz ergibt oft mehrere Tripel, und ein Tripel kann aus mehreren Sätzen stammen. An jedem Tripel hängt mehr als die drei Teile:
- Quelle und weitere Zeugen: woher es kommt (du, ein Dokument, die große KI oder Annas eigene Folgerung). Weitere Quellen können es bestätigen oder bestreiten, jede mit ihrer Angabe, wann es laut ihr galt („gestern“).
- Zeitpunkt der Aussage und, wo nötig, eine Wahrscheinlichkeit.
- Prüfstatus: ob du es bestätigt hast. Was die große KI vorschlägt, wartet unter „Prüfen“.
- Verneinung: „Ich mag keine Hunde“ ist dasselbe Tripel mit umgekehrtem Sinn.
- Modalität: können, wollen, müssen, dürfen, mögen, werden, vorhaben.
- Zeitform: „Ich hatte einen Hund“ ist Vergangenheit.
- Art und Weise: „spricht fließend Deutsch“ ist ein „spricht“ mit „fließend“, kein eigenes Prädikat.
- Abhängigkeit von einer anderen Aussage, mit ihrer Art: weil, wenn/dann, dass, obwohl, als/während, sodass, damit. Das ist eine Aussage über eine Aussage.
Was hat das mit RDF und dem Semantic Web zu tun?
Die Idee kennt man vor allem aus dem Semantic Web. Dessen Grundformat RDF beschreibt die Welt genau so: als Tripel aus Subjekt, Prädikat und Objekt. Entitäten heißen dort Ressourcen, feste Werte wie Zeichenketten heißen Literale. RDFS und OWL ergänzen Klassen, Unterklassen und Regeln für Beziehungen. Annas Begriffe entsprechen dem recht genau:
- com entspricht einer Ressource (Entität), lit einem Literal (String).
- „ist ein(e)“ (Instanz von) entspricht
rdf:type, „spezifiziert“ (Hund unter Tier)rdfs:subClassOf. - Was eine Beziehung bedeutet, steht als gewöhnliche Tripel an ihrem eigenen Knoten, wie bei
rdf:Property: worauf sie zeigt (rdfs:range), wovon sie ausgeht (rdfs:domain), unter welcher allgemeineren sie steht (rdfs:subPropertyOf: „hat Tochter“ ist ein „hat Kind“). - Gegenrichtung, Transitivität, Ketten und sich ausschließende Klassen kennt OWL als
owl:inverseOf,owl:TransitiveProperty, Property Chains undowl:disjointWith. Gleichsetzungen heißen in OWL wie bei AnnasameAs.
Was ist ein Reasoner?
Ein Reasoner ist ein Programm, das aus vorhandenen Aussagen neue folgert, nach festen Regeln. Annas Reasoner läuft auf deinem iPhone, im Hintergrund, und arbeitet, sobald neue Aussagen dazukommen. Unter anderem tut er heute das:
- Klassen aus Beziehungen: „Ich wohne in …“ zeigt immer auf einen Ort. Also weiß Anna, dass das Ziel ein Ort ist, auch wenn du es nie gesagt hast.
- Ketten: Die Eltern eines Elternteils sind Großeltern, die Geschwister eines Elternteils sind Tante oder Onkel.
- Transitivität: Ein Vorfahre eines Vorfahren ist auch ein Vorfahre. Bei „ist älter als“ gilt das ebenso, wie im Beitrag Wie Anna Beziehungen versteht gezeigt.
- Genauer werden: „hat Kind“ und das Kind ist weiblich, dann gilt „hat Tochter“. Umgekehrt folgt aus „hat Tochter“, dass das Kind weiblich ist, wenn das noch offen war.
- Dieselbe Person? Haben zwei Personen denselben Vor- und Nachnamen, schlägt Anna vor, dass es eine ist. Das ist ein Vorschlag, du entscheidest.
- Läuft noch: Hat etwas begonnen und kein Ende, schlägt Anna vor, dass es noch läuft.
Manches folgert Anna erst beim Lesen, ohne es zu speichern: die Gegenrichtung (aus „Meine Schwester ist älter als ich“ wird „Ich bin jünger als meine Schwester“), allgemeinere Beziehungen („hat Kind“ findet auch die Töchter) und die Leiter der Klassen nach oben. Was der Reasoner speichert, trägt seine Herkunft: Er ist als Quelle eingetragen. Bei Ketten und Transitivität gilt: Fällt die Grundlage weg, fällt auch die Folgerung.
Ein Reasoner wendet nur Regeln an, die Anna kennt. Wo er unsicher ist, schlägt er vor oder kennzeichnet eine Schätzung als solche. Eine fehlende Verbindung heißt nicht, dass es sie nicht gibt.
Wenn du dabei sein willst: Zur Beta