Skip to content
ATEGRA MLIT
  • Front Page
  • Blog
Blog

Die Auswirkung von AI auf Bots

  • 2017-07-182019-10-18
  • by mlit-ategra-admin

 

Schon immer war der Mensch ein Genie darin, für die Probleme welche ihm durch seine Umwelt gestellt wurden, das dazu passende Werkzeug zu erschaffen. Von den einfachen Steinwerkzeugen der Steinzeit bis hin zu den automatisierten Fabriken der Neuzeit. Heutzutage, wo eine die grösste Herausforderung des Alltags das durchdringen der täglichen Datenflut zu sein scheint, ist das keine Ausnahme. Schnell etablierten sich sogenannte Bots, kleine Programme welche repetitive Aufgaben übernehmen, das Internet nach Informationen durchsuchen oder automatisiert Fragen in Foren oder Chats beantworten.
Bots waren über Jahre hinweg grossartige Tools, wenn es darum geht einfache repetitive Dinge zu erledigen. Diese gehen von kleinen Twitterbots für das automatisierte schreiben von Kurznachrichten bis hin zum mächtigen Googlebot welcher täglich das Internet nach neuen Informationen durchkämmt. Jedoch waren diese Systeme bisher in ihren Aufgabengebieten sehr beschränkt.

Game-Changer Machine Learning

In den letzten Jahren erlebte eine bereits seit Jahrzehnten bekannte Technologie eine Renaissance. Durch die extrem gestiegene Rechenleistung von Computern ist das maschinelle Lernen aus seinem Schattendasein herausgetreten und zeigen fast überall wo es eingesetzt wird ihre Teils gewaltige Überlegenheit zu herkömmlichen Verfahren. So übertreffen Bilderkennungssysteme auf der Basis von ML bereits trainierte Menschen beim Beschreiben von Bildinhalten. Bis vor kurzem wurde noch davon ausgegangen, dass dies noch weit in der Zukunft liegen würde.
Das gleiche Muster zeigte sich jüngst auch beim antiken Brettspiel aus dem fernen Osten namens GO. Bei diesem schaffte es ein System von Google den momentanen Weltbesten Spieler zu bezwingen. Das scheint auf den ersten Blick nicht sehr beeindruckend. Doch dieses Spiel ist aus mathematischer Sicht um Grössenordnungen komplexer als z.B. Schach, weswegen von Experten lange bezweifelt wurde, ob es jemals einem Computer gelingen würde, auch nur annähernd so gut wie ein Menschlicher Widersacher zu sein. Deswegen spricht Demis Hassabis, der Leiter des Teams welches hinter dem Historischen Sieg in Go steht, bei Go vom Heiligen Gral der AI-Forschung. Er hofft die bei dem Spiel verwendeten Algorithmen auf reale Probleme anwenden zu könnten. Und so arbeitet das Team heute daran die Medizin zu revolutionieren.
(Sam Byford, DeepMind founder Demis Hassabis on how AI will shape the future, 2016, von http://www.theverge.com/2016/3/10/11192774/demis-hassabis-interview-alphago-google-deepmind-ai)
Das verfrühte Eintreffen von Expertenvorhersagen scheint mehr und mehr zur Gewohnheit zu werden. Man fragt sich, was wohl als nächstes durch das maschinelle Lernen revolutioniert wird.

Open-Source Bewegung

Ein wichtiger Grund für die grossen Sprünge, welche momentan im Bereich des ML gemacht werden ist die öffentlich verfügbare und gut dokumentierte Software. Diese werden von Unternehmen wie Google oder Facebook zur Verfügung gestellt und gepflegt. Hinzu kommt die grosse und aktive Community zu diesen Frameworks, welche sich rege über best practices und neue Entdeckungen austauschen. Dies ermöglicht es einer relativ grossen Masse an interessierten Personen schnell den Einstieg zu finden und eigene Experimente damit zu starten.
Daraus resultieren auch viele neue Startups, die die neuen Techniken an realen Problemen anzuwenden versuchen. Dabei sind sie meist sehr erfolgreich. Machine Learning befindet sich also auf dem Sprung in die Marktwirtschaft, und birgt Gefahren für Unternehmen welche den Anschluss verpassen.

ML-Upgrade für Bots

Was sind nun die Auswirkungen dieser rasanten Entwicklung auf Bots. Dazu müssen wir erst einen Blick in die Funktionsweise der „alten“ Bots werfen. Sie basieren normalerweise auf einem Regelset mit wenn-dann-Verknüpfungen. Wobei dies Abbildungsregeln vom Entwickler von Hand eingepflegt werden müssen. Dieser Prozess ist langwierig und Zeitintensiv. Das Resultat ist ein unflexibles System, welches nur einen sehr begrenzten Einsatzbereich hat.

Mit ML ist die Herangehensweise ein Andere. Es werden keine Regeln mehr definiert sondern das System lernt durch ein Set an Beispielen wie es sich zu verhalten hat. Beispielsweise zeigt man einem Chat-Bot eine grosse Anzahl an Fragen und Antworten, und der Bot versucht diese „nachzuahmen“ und generelle Regeln daraus abzuleiten. Er könnt zum Beispiel lernen, dass auf die Frage „Wie heisst dieser Schauspieler?“ ein Name gesucht wird und dass der Name mit einem Schauspieler in Verbindung stehen muss. Dadurch ist das System in der Lage auch Fragen zu beantworten, welche nicht so in den Trainingsdaten vorhanden ist. Die Menge der zur Verfügung stehenden Lern-Daten ist hierbei entscheidend für die Qualität des Systems. Die „Intelligenz“ eines solchen Bots auf der Basis von ML ist also genereller, als jener mit einem fixen Regelset.

Das Beispiel oben zeigt die neue Herangehensweise an die Entwicklung von Bots. Nicht mehr das Aufstellen der Regaltabellen nimmt die grosse Zeit in Anspruch, sondern das Erstellen und Aufbereiten der Beispieldaten. Und das System kann potentiell immer besser werden, sobald mehr Daten zur Verfügung stehen. Man könnte such zum Beispiel vorstellen, dass ein Chatbot die Antworten seiner Menschlichen Chatpartnern aufzeichnet und später als Trainigsdaten weiterverwendet um sich weiter zu verbessern.
Der Trend im Bereich der Bots ist klar. Wöchentlich werden neue Bots bekannt bei welchen diese ML Techniken erfolgreich angewendet wurden. Sie entwickeln sich mehr und mehr zu wirklich nützlichen Helfern im Alltag, wie Beispielsweise Google Now oder auch Siri zeigen. Und die riesigen Investitionen der grossen Player im Internet in diesem Bereich lassen vermuten, dass sich hier in der nächsten Zeit noch einiges bewegen wird. Man darf also gespannt sein.

Blog

Natural Language Processing (NLP) – ein Überblick

  • 2017-07-152019-10-18
  • by mlit-ategra-admin

Artificial Intelligence, Machine Learning und Natural Language Processing erleben z.Z. einen Aufschwung. Die Gründe dafür sind schnellere Prozessoren (z.B. von NVIDIA), riesige abrufbare Datenbestände im Internet und v.a. auch neue, gute Open Source Software Libaries. Dieser Artikel beschreibt, die wichtigsten darunter.

Da man nicht jedes Mal das Rad neu erfinden will sobald man einen Text analysieren muss, gibt es verschiedene Open-Source Toolkits und Software Bibliotheken, sogenannte Libraries, welche einem die Arbeit vereinfachen. Unter anderem kann man mit solchen Tools herausfinden, ob ein Text eine negative oder positive Konnotation hat.

In diesem Artikel werden wir untersuchen was für Open-Source NLP Libraries es gibt und ob es welche gibt, die besonders geeignet sind für gewisse Analysen und Programmiersprachen.

NLTK

Das Natural Language Toolkit (NLTK) ist eine Plattform welche das Verarbeiten von Texten vereinfacht. Die Plattform basiert auf der weitverbreiteten und beliebten Programmiersprache Python und ermöglicht somit auch die reibungslose Zusammenarbeit mit anderen bekannten und viel genutzten Python-Modulen. NLTK bietet Zugang zu mehr als 50 Linguistischen Korpora und lexikographischen Ressourcen an. Sehr oft wird Textverarbeitung mit Maschinellem Lernen (oder Machine Learning) erweitert oder kombiniert. Dies macht das NLTK umso attraktiver, da es sich mit den bestehenden Machine Learning Libraries in Python wie Scikits.learn oder NumPy/SciPy problemlos einbinden lässt. Zudem ist die NLTK Gemeinschaft gross und wenn man was nicht durch Web-Recherchen findet kann man auch gut in der online Version des Buches (http://www.nltk.org/book/) nachschlagen. Somit können Anfänger sowie Fortgeschrittene mit diesem Toolkit bequem arbeiten.

Die Stanford CoreNLP

Stanford University hat ihre eigene NLP Software mit Open-Source zur Verfügung gestellt und heisst Stanford CoreNLP. Sie basiert auf Java und unterstützt die wichtigsten  NLP-Funktionalitäten wie grammatikalische Analyse, schnelles verarbeiten und analysieren von Texten und Text Analytics. Obwohl es primär für Java programmiert wurde, gibt es zahlreiche APIs (Application Programming Interfaces) welche es ermöglichen die Library auch mit anderen Programmiersprachen zu verwenden. Stanford CoreNLP unterstützt nicht nur mehrere Computersprachen, sondern auch zahlreiche menschliche Sprachen wie Arabisch, Chinesisch, Englisch, Französisch, Deutsch und Spanisch. Die Unterstützung von so vielen gesprochenen Sprachen macht dieses Tool sehr attraktiv, insbesondere für Programme, wo man all diese Sprachen unterstützen muss. Da es so viele Funktionalitäten hat und mehrere Programmiersprachen unterstützt, kann es zum Teil etwas schwer fallen, konkrete Lösungen zu individuellen Problemen zu finden.

Apache OpenNLP

Eine weitere Java NLP Library ist die Apache OpenNLP Library. Wie alle anderen zuvor vorgestellten Software-Bibliotheken steht auch hier die Verarbeitung und Analyse von Texten im Vordergrund. Somit unterstützt Apache OpenNLP unter anderem auch die verbundenen Funktionalitäten wie tokenization, sentence segmentation, part-of-speech tagging und named entity extraction. Je nach Anwendung werden zusätzlich zu Englisch noch weitere Sprachen unterstützt, meistens sind es aber nicht die meistgesprochenen Sprachen, welche unterstützt werden (siehe http://opennlp.sourceforge.net/models-1.5/, man beachte jedoch, dass die aktuelle Version 1.7.2 ist). Es ist eine gute Library um in der NLP-Domäne Fuss zu fassen, da es einige Anleitungen im Internet hat und man sich damit schnell mit den Konzepten vertraut machen kann. Offiziell werden keine weiteren Programmiersprachen unterstützt, allerdings findet man nach kurzem suchen schnell sogenannte Wrapper welche die Benutzung von Apache OpenNLP durch z.B. Python ermöglichen.

MALLET (MAchine Learning for LanguagE Toolkit)

MALLET ist ein Toolkit, welches an der University of Massachusetts entwickelt wurde. Obwohl es eine offizielle Dokumentation gibt, sollte man sich bewusst sein, dass dies kein Tool für Anfänger ist. Viele Funktionalitäten sind nicht mit einprogrammiert und müssen von Null auf gemacht werden. Das ist nicht zwingenderweise etwas schlechtes, da man mit diesem Tool genau das machen kann, was man will. Topic Modeling ist eine der Stärken von MALLET. Dies erlaubt es MALLET einen Text zu nehmen und Wörter zusammenzunehmen, welche einem ähnlichen Thema entsprechen. Auch hier gibt es zwar Wrappers für andere Programmiersprachen, dennoch ist die Haupt-Programmiersprache Java. Viel Unterstützung bei Problemen kann man sich hier nicht erhoffen. Nichts desto trotz ist es ein starkes Tool und wird in der Forschung und Industrie immer wieder benutzt.

 

Natürlich gibt es noch viele weitere Toolkits und Libraries welche hier nicht behandelt wurden. Allerdings decken diese vier schon ein sehr grosses und allgemeines Gebiet ab. Schlussendlich muss auch jeder Entwickler und jede Entwicklerin das beste Tool für sich heraussuchen und damit arbeiten. Dies kann je nach NLP und Machine-Learning-Erfahrung, Programmierkenntnissen und Projekt ganz unterschiedlich sein. Mit etwas Übung und Kreativität lässt sich aber mit allen Tools ganz viel machen!

 

Quellen:

http://www.nltk.org/

https://stanfordnlp.github.io/CoreNLP/

https://nlp.stanford.edu/pubs/lrecstanforddeps_final_final.pdf

https://opennlp.apache.org/

http://mallet.cs.umass.edu/

Neueste Beiträge

  • Der Unterschied von Machine Learning und Artificial intelligence
  • Machine Learning im Einsatz
  • Die Auswirkung von AI auf Bots
  • Natural Language Processing (NLP) – ein Überblick

Urheberrechtshinweise

Auf dieser Webseite werden Namen und Logos verschiedener Organisationen und Softwareprojekte verwendet. Die Verwendung der Logos erfolgt unter den Bedingungen der jeweiligen Lizenzvereinbarungen. Die Verwendung dieser Logos stellt keine offizielle Billigung oder Partnerschaft durch die jeweiligen Unternehmen dar.
Hiermit möchten wir die entsprechenden Urheberrechte und Markenrechte anerkennen und die erforderlichen Danksagungen aussprechen:

PyTorch und zugehörige Marken: PyTorch, das PyTorch-Logo und alle zugehörigen Marken sind eingetragene Markenzeichen der Linux Foundation.” Weitere Informationen zur Markenrichtlinie finden Sie unter Linux Foundation Trademark Usage. Das PyTorch-Logo wird unter der BSD-Lizenz verwendet. Ursprünglich von PyTorch - Wikimedia Commons bereitgestellt.

Docker und zugehörige Marken: Das Docker-Logo ist ein Warenzeichen von Docker, Inc. und wird unter Einhaltung der Docker-Markenrichtlinien verwendet.

Admin

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
Copyright Ategra 2020
Theme by Colorlib Powered by WordPress