CognioLogic bietet Lösungen zum maschinellen Verstehen und Lernen. Die Virtual Assistent-, Artificial Coworker-, Roboter- und IoT-Applikationen zählen zu den Anwendungsfeldern unserer Technologien.

CognioLogic bietet Lösungen zum maschinellen Verstehen und Lernen. Die Virtual Assistent-, Artificial Coworker-, Roboter- und IoT-Applikationen zählen zu den Anwendungsfeldern unserer Technologien.

Cogniology


Unsere Technologien basieren auf dem Konzept der Cogniology, die sich mit der Wissenschaft der Kognition beschäftigt – also mit dem Umgestalten von Informationen durch ein verhaltenssteuerndes System. Cogniology ist ein Ansatz zum maschinellen Verstehen und Lernen, der maßgeblich auf natürlicher Sprache basiert und drei miteinander verbundene Elemente umfasst: eine endliche Menge der Regelwerke, die die Semantik des gesamten Systems abbilden, eine Wissensbasis, die Fakten in Form von W-Fragen und deren Antwort im Kurz- und Langzeitgedächtnis breitstellt, sowie ein Meta-Regelwerk, das definiert, wie aus gegebenen Regelwerken und Fakten neue Regelwerke und Fakten entstehen. Unsere Technologien realisieren das Konzept des Meta-Regelwerks als eine Plattform und die jeweiligen Regelwerke als Sentence Component.

Das primäre Ziel der Cogniology ist es, Experten aus verschiedenen Disziplinen in einfacher Weise an der Entwicklung der künstlichen Intelligenz zu beteiligen, indem die Programmierung in natürlicher Sprache erfolgt.

Die Programmiersprache in natürlicher Sprache entspricht der gewöhnlichen Form, in der Menschen einen Sachverhalt präzise spezifizieren würden.

Softwareentwickler können intelligente Komponenten fast ohne Vorkenntnisse der künstlichen Intelligenz sowohl in herkömmlichen Programmiersprachen (Java, C#, …) als auch in natürlicher Sprache erstellen, die sich per Plug & Play in unsere Plattform integrieren lassen.



Virtual- bzw. Digitalassistent


Da die Entwicklung der Digitalassistenten mit natürlichen Sprachen zu tun hat, ist die Denkweise, wie die Softwareentwickler die Anforderungen der Anwender aufnehmen, sie analysieren, Lösungen dafür finden und diese umsetzen, besonders am Anfang komplex und anders als der Umgang mit typischen Anwendungen. Auch ein erfahrener Softwareentwickler, der sich zum ersten Mal mit der Entwicklung eines Digitalassistenten beschäftigt, wird schnell feststellen, dass er mit Problemlösungen konfrontiert ist, die multidisziplinäre Fähigkeiten aus mindestens Linguistik und Mathematik erfordern, die mit dem Kern seiner bisherigen Softwareentwicklungserfahrungen und Knowhow wenig Berührung finden. Ansätze aus der Fachliteratur sind in der Regel noch Forschungsprojekte und stellen keine adäquate Lösung der aktuellen Probleme dar.

Wünschenswert ist ein pragmatischer Weg, der die Softwareentwickler in die Lage versetzt, aus ihren bisherigen Softwareentwicklungserfahrungen komplexe Digitalassistenten zu entwickeln, ohne sich mit KI tiefgreifend beschäftigen zu müssen.



Einen solchen pragmatischen Weg bieten unsere Technologien, die auf dem Konzept der „Cogniology“ basieren. Das Konzept des Meta-Regelwerks haben wir als eine Cloud Plattform realisiert, die allgemeingültige Regeln und Algorithmen umfasst und durch eine linguistische Analyse des Eingabetextes sowie durch die Anwendung der Matching-Algorithmen am Analyseergebnis und an der Wissensbasis für das Verstehen und das Lernen sorgt. Das Konzept der Regelwerke ist durch Sentence Component realisiert und bildet die Semantik des gesamten Systems ab. Die Wissensbasis besteht aus Antworten, die in Form einer W-Frage gestellt werden und deren Daten im Kurz- und Langzeitgedächtnis bereitstellt werden. Die Wissensbasis kann von jeder beliebigen Sentence Component verwendet werden, um Schlussfolgerungen aus den Zusammenhängen zu ziehen.

Durch unsere Technologien konzentriert sich die Aufgabe eines Softwareentwicklers zur Entwicklung von sprachnatürlichen Anwendungen lediglich auf die Entwicklung der „Sentence Components“.

Als Beispiel dient ein Ausschnitt eines Konversationsszenarios zwischen einem Kunden und einem Digitalassistenten zur Bestellungsannahme in einem Fast Food Restaurant:

 
Ich möchte ein Roast-Beef-Sandwich auf Italian Brot mit Salat außer Zwiebeln, American-Sauce, extra Käse, keine Getränke und bitte alles als Menü zum Mitnehmen.
Warum als Menü? Sie können ein großes Roast Beef auf Italian Brot mit American Sauce ohne Zwiebeln einzeln für 4,39 bekommen, dazu noch extra Käse für 30 Cent. Sie sparen dann 80 Cent. Wollen Sie es immer noch als Menü?

Die dazugehörige Sentence Component (siehe unten) zeigt, dass die Plattform der Sentence Component alle natürlichen Datentypen (Sauce, Salat, …) als Parameter zur Verfügung stellt. Das Codesegment zwischen Begin und End ist in Java programmiert.


Sentence: Ich nehme irgendein Sandwich auf irgendeinem Brot mit Salat, irgendeine Sauce und irgendein Getränk als Menü.
Parameter: Sandwich, Brot, Salat, Sauce, Getränk und Menü
Beginn (JAVA):
Float menuPrise = orderService.getPriseAsMenu(sandwich, brot, salat, sauce,
getraenk, menue);
Float singlePrise = orderService.getPriseAsSingle(sandwich, brot, salat, sauce,
getraenk, menue);
if(menuePrise < singlePrise)
{
	return “Das macht ” + menuPrise; 
}
else if (menue != true)
{
	String answer; 
	answer = “Warum als Menü ? Sie bekommen”;
	answer += „ ein “ + sandwich;
	answer += „ auf  “ + brot;
	answer += „ mit “ + sauce;
	if (salat.excludeVegetable())
	{
		answer += „ohne“ + salat.excludeVegetableList();
	}
	answer += „ im Einzel für „ + singlePrise + „€“;
	answer += „Sie sparen dann „menuePrise - singlePrise  + „ Cent“;
	answer += „Wollen Sie es immer noch als Menü? “;
	return answer; 
}
End

Die Sentence Components können komplett im nativen Java programmiert werden. Damit können alle bisher bekannten Möglichkeiten der IDE und Tools verwendet werden.

Hier ist der Java Source Code  

Natural Language Interface


Als Softwareentwickler entwickeln wir die Applikationen in mindestens zwei Schichten, Frontend und Backend. Das Frontend kann als Web-, iPhone-, Android- oder Desktop-Anwendung realisiert werden und dient der Interaktion zwischen Benutzer und Applikation.

Wie aus dem Sentence Component-Konzept hervorgeht, ist es einfach, für jede Funktionalität im Frontend eine oder mehrere äquivalente Sentence Components zu erstellen, die eine oder mehrere Methoden des Backend aufruft. Solche Sentence Components können zusammen mit unserer Plattform wie GUIs mit dem Nutzer interagieren. Wenn wir davon ausgehen, dass eine Grundmenge sinnvoller Funktionalitäten durch Sentence Components implementiert ist, dann können wir aus der Menge der existierenden Sentence Components durch Programmierung in natürlicher Sprache neue Sentence Components erstellen, die noch komplexere Aufgaben erledigen.


Sentence: Bestelle Hundefutter.
Parameter: -
Beginn (Natural Language): Bestelle von günstigstem Anbieter eine 15 kg-Packung trockenes Hundefutter mit Lammfleisch von der Firma Happy Dog.
Für die Terminvereinbarung achte darauf, dass ich die Bestellung nur Montagsvormittag und mittwochs ab 14 Uhr 30 entgegennehmen kann.
Zahle den Betrag für Hundefutter aus meinem Sparkassenkonto mit IBAN DE12 3456789 00 1122233 und frage mich immer nach dem Passwort.
End

In obigem Beispiel sind drei Sentence Components, nämlich für die Bestellung des Hundefutters, für die Terminvereinbarung und für die Zahlung zusammengestellt, sodass daraus eine neue Sentence Component mit dem Definitionssatz „Bestelle Hundefutter“ erstellt worden ist. Wenn nun der Benutzer dem Digitalassistenten sagt „Bestelle Hundefutter“, werden diese drei Sentence Components nacheinander durch die Plattform ausgeführt.

In diesem Fall ist die Sachverhalt einfach und die Programmierung muss nicht unbedingt in einem Editor bearbeitet werden, sodass die obige Sentence Component  dem Digitalassistenten direkt folgendermaßen gesagt werden kann:

 
Wenn ich sage, bestelle Hundefutter, dann bestelle vom günstigsten Anbieter eine 15 kg-Packung trockenes Hundefutter mit Lammfleisch von der Firma Happy Dog. Für die Terminvereinbarung achte bitte darauf, dass ich die Bestellung nur Montagsvormittag und mittwochs ab 14 Uhr 30 entgegennehmen kann. Zahle den Betrag für Hundefutter aus meinem Sparkassenkonto mit IBAN DE12 3456789 00 1122233 und frage mich immer nach dem Passwort.
Ok

Aus diesem Beispiel wird ersichtlich, dass einer Maschine etwas Neues beigebracht werden kann. Dieses Phänomen ist die Grundlage des kognitiven Lernens.

Device Controller


Zu unserer Plattform gehören auch die sognannten Device Controllers. Das Prinzip der Device Controller ist sehr ähnlich wie das von Hardwaretreibern, die in Betriebssystemen verwendet werden, um das Betriebssystem von Herstellern und tatsächlich verwendeter Hardware unabhängig zu machen. Ein gutes Beispiel dazu ist der Druckertreiber. Jeder Druckerhersteller liefert für seinen Drucker einen passenden Treiber, der sich in Windows (oder anderen Betriebssystem) installieren lässt. Somit können die Applikationen ihre Inhalte ausdrucken, ohne den Drucker zu kennen.

Ein gutes Beispiel für den Device Controller sind die für unseren Digitalassistenten verwendeten VoiceToText- und TextToVoice-Device Controller. Sie konvertieren die akustischen Signale aus dem Mikrofon in Text und in umgekehrter Richtung einen Text in akustische Signale, die vom Lautsprecher ausgegeben werden. Die Schnittstelle diese Device Controllers mit der Plattform sind Texte in natürlicher Sprache.

In der folgenden Abbildung ist ein weiterer Device Controller mit dem Namen ChatEditor dargestellt, der die Eingabe des Benutzers direkt an die Plattform sendet und empfangene Texte in seinem Ausgabebereich darstellt. Die Schnittstelle dieser Device Controller mit der Plattform ist ebenso Text.

Wenn Menschen durch die beschriebenen Device Controllers mit unserer Plattform über sprachnatürliche Texte kommunizieren, dann sollte es jedem Gerät auch möglich sein, über dasselbe Prinzip mit der Plattform über die Texte zu kommunizieren. Zum Beispiel ein Sensor, der die Innentemperatur misst und das Ergebnis durch ein Funksignal an einen entsprechenden Device Controller sendet. Der Device Controller empfängt dieses Funksignal, erzeugt einen entsprechenden Satz und sendet ihn seinerseits an die Plattform weiter. Die Plattform behandelt diesen Satz, als ob er von einem Mensch gesprochen worden sei und führt die entsprechende Sentence Component aus.



Ein konkretes Beispiel wäre ein Temperaturregulationssystem: Wenn die Innentemperatur auf 17 Grad fällt, sendet der Device Controller den Satz „Es ist kalt“ an die Plattform. Die Plattform sucht in der Menge der vorhanden Sentence Components nach einer mit dem Definitionssatz „Es ist kalt“ und führt deren Codesegment aus. Die Sentence Component „Es ist kalt“ kann wie die Sentence Component „Bestelle Hundefutter“ vom Benutzer programmiert worden sein. Dadurch kann der Benutzer die Raumtemperatur individuell automatisieren.



Sentence:Es ist kalt.
Parameter: -
Beginn (Natural Language): Schalte die Heizung an. End

Die Plattform kann an jeden beliebigen Device Controller unaufgefordert einen Text senden und dadurch eine Aktion hervorrufen.

Beispielweise implementiert der Device Controller „Heizung“ mehrere Callback-Funktionen, um auf bestimmte Ereignisse zu reagieren. Das Code Segment des Definitionssatzes „Schalte die Heizung an“ ist eine solche Callback-Funktion. Wenn der Benutzer sagt oder in einem Programm den Satz „Schalte die Heizung an“ aufruft, führt die Plattform deren Codesegment aus, wodurch ein Funksignal an die Heizung gesendet wird, um diese einzuschalten.

Wie aus diesem Beispiel zu entnehmen ist, lassen sich die Geräte durch diesen Mechanismus vom Benutzer durch Programmierung in natürlicher Sprache steuern und individuell anpassen.

Auf dieser Weise konzentrieren sich die Gerätehersteller auf Bereitstellung ihrer Grundfunktionalität in Form der Sentence Component und überlassen den Rest unserem System.

Unser System bietet einen großen Vorteil, da hier nicht nur einzelne Geräte vernetzt werden („Internet der Dinge“), die durch ihre Hersteller programmiert worden sind. Durch die Verbindung mit unserer Plattform und die Programmierung in natürlicher Sprache können Benutzer beliebig und individuell verschiedene Geräte kombinieren und steuern.

Natural Language Object Description


Durch die Beschreibung der Objekte in natürlicher Sprache lassen sich diese in einem Videostream oder Image erkennen. Aus den erkannten Objekten können entsprechende Sentence Components als Callback-Funktionen aufgerufen werden, die auf entsprechende Ereignisse reagieren. 

Kognitives Lernen und Verstehen


Aus den genannten Ansätzen und Technologien entsteht ein kognitives Gesamtsystem, das durch Device Controllers auf die Umgebung reagiert, durch natürliche Sprache von Menschen lernt und Gelerntes versteht.

Get Started


Hier noch ein paar Hinweise, bevor es losgeht:

  • Nach der Registrierung bieten wir eine kostenlose Schulung anstelle von Tutorials an.
  • Als native Programmiersprache wird zurzeit nur Java unterstützt. In der Schulung gehen wir davon aus, dass Grundkenntnisse der Programmiersprache Java vorhanden sind. Andere Programmiersprachen werden in Zukunft folgen.
  • Unser Java Developer Kit (JDK) und die Zugangsinformationen werden in der Schulung zur Verfügung gestellt.

Registrierung

Team Members


Jeffrey Seife

  • CEO
  • MBA an der Carnegie Mellon University.
  • Erfahrener Unternehmer und Gründer von zwei Firmen mit zusammen mehr als 70 Mio Dollar Umsatz und 300 Angestellten


Masoud Amri

  • CTO
  • Diplom Informatiker mit über 20 Jahren Erfahrung als Softwareentwickler, Softwarearchitekt und Projektleiter bei namhaften Unternehmen ( IBM, Mercedes, Volksbank,Siemens, Telekom und Fraunhofer)






Armin Mahdiani

(Entwicklung)





Sohrab Rahmani

(Entwicklung)

Kontakt