Die Named Entity Recognition (deutsch: Erkennung benannter Entitäten) ist ein Anwendungsfall innerhalb des Natural Language Processings, bei dem ein Modell erlernt bestimmt Wörter zu kennzeichnen, die einer gewissen Gruppe angehören.
Was ist die Named Entity Recognition?
Wenn wir Menschen versuchen einen Satz zu verstehen, dann erkennen schnell einzelne Wörter, die einer bestimmten Klasse angehören, wie beispielsweise eine Ortsangabe, eine Zeitangabe oder Wörter, die eine Person kennzeichnen. Named Entity Recognition bezeichnet genau solche Modelle, die bestimmte Wörter in einem Satz oder Paragraph kennzeichnet und ihnen die richtige Klasse zuordnet.
Diese Informationen sind unverzichtbar, um den Inhalt des Satzes richtig zu verstehen und sollten deshalb richtig erkannt werden. Die richtige Klassifizierung der Wörter und Satzbausteine werden in verschiedenen Stufen gefunden.
Was sind die Herausforderungen von NER?
Die Problematik beim Natural Language Processing ist, dass wir alle seit früher Kindheit eine natürliche Sprache fließend sprechen und ohne nachzudenken verstehen. Deshalb ist es umso schwieriger zu formulieren, wie wir Entitäten in einem Text erkennen. Für das Modell gilt es dabei einige Herausforderungen zu bewältigen, die für uns selbstverständlich erscheinen:
- Erkennen von Varianten: Namen, Ortsangaben oder Unternehmensbezeichnung können in verschiedenen Varianten auftreten. Eine Person kann entweder mit vollem Namen angesprochen werden oder lediglich mit dem Nachnamen. Das Modell muss erkennen, dass beides mal möglicherweise die gleiche Person gemeint ist. Gleiches gilt für die Bezeichnungen “New York”, “NYC” und “New York City”, die alle dieselbe amerikanische Großstadt benennen.
- Normalisierung: Zeit- oder Geldangaben können in verschiedenen Formaten auftreten und trotzdem dasselbe meinen. Auch diese Unterschiede muss ein NER Modell erlernen, um beispielsweise zu verstehen, dass “10.000 €” und “10,000 €” dasselbe meinen und lediglich im englischen Sprachgebrauch das Komma zur Tausendertrennung genutzt wird.
- Abgrenzung der Entitäten: Schlussendlich müssen auch die Abgrenzungen zwischen Entitäten erkannt werden. Dabei kann es vorkommen, dass eine Entity nur aus einem einzelnen Wort besteht, während eine andere in den meisten Fällen vier Wörter besitzt.
Welche Stufen werden zur Named Entity Erkennung genutzt?
Wenn wir eine Named Entity Recognition trainieren wollen benötigen wir ausreichend Trainingsdaten, die wir dem Modell füttern können. Um diese automatisiert zu erhalten und die Entitäten nicht von Hand klassifizieren zu müssen, können wir die folgenden Schritte nutzen:
- Erkennung von Substantiven: Bei unseren Named Entities muss es sich Substantive handeln, deshalb filtern wir den gegebenen Text, sodass nur die Substantive übrig bleiben. Dafür gibt es in vielen Sprachen bereits austrainierte Modelle, beispielsweise zum Part of Speech Tagging.
- Klassifizierung der Wörter: Nachdem wir die Substantive gefiltert haben, können wir diese in die von uns gewünschten Klassen einteilen. Dafür lassen sich verschiedene kostenlose Datenbanken nutzen, um diesen Schritt so weit wie möglich zu automatisieren. Um Ortsangaben zu klassifizieren, können wir beispielsweise die Datenbank von Google Maps per API abfragen.
Wie funktioniert NER?
In den Python Modulen Spacy und NLTK kann man ohne weiteres austrainierte Named Entity Recognition Modelle laden, welche für die Standardsprachen auch schon gut funktionieren. Jedoch kann man auch darauf angewiesen sein, ein eigenens NER Modell zu trainieren, um es für den eigenen Anwendungsfall besser abstimmen zu können.
Bevor wir mit dem eigentlichen Training starten können, benötigen wir einen Trainingsdatensatz mit genügend Beispielen von Texten und den zu findenden Entitäten innerhalb des Textes. Wenn man das Modell auf Spezialfälle trainieren will, führt häufig auch kein Weg daran vorbei, den Datensatz selbst zu erzeugen und die Wörter oder Phrasen von Hand zu benennen.
Anschließend kann man ein sogenanntes Conditional Random Field (CRF) für die Named Entity Recognition trainieren. Es ist ein statistisches Modell, welches sich besonders gut für die Erkennung von Schemata eignet und dabei auch Kontextinformationen mit in die Vorhersage mit einbezieht.
In einfachen Worten erklärt trainiert das Conditional Random Field Logistische Regressionen für einzelne Sequenzen. Als Input Variablen werden die folgenden Werte genutzt:
- Set von Input Vektoren
- Position des Wortes, das aktuell vorhergesagt werden soll
- Label des vorherigen Wortes
- Label des aktuellen Wortes
Dadurch kann dann beispielsweise erlernt werden, dass Verben oft nach Substantiven folgen und daraus Rückschlüsse auf das mögliche Label erlernen.
Wie kann die Qualität von NER gemessen werden?
Es gibt verschiedene Möglichkeiten, Modelle zur Erkennung von benannten Entitäten (NER) zu bewerten, darunter:
- Precision, Recall und F1-Score: Dies sind häufig verwendete Metriken zur Bewertung von NER-Modellen. Die Präzision misst den Prozentsatz der benannten Entitäten, die vom Modell korrekt identifiziert wurden, der Recall misst den Prozentsatz der benannten Entitäten, die das Modell von allen tatsächlich benannten Entitäten identifizieren konnte, und der F1-Score ist das harmonische Mittel aus Präzision und Recall.
- Genauigkeit: Die Genauigkeit ist eine weitere Metrik, die zur Bewertung von NER-Modellen verwendet wird. Sie misst den Prozentsatz der benannten Entitäten, die von dem Modell korrekt identifiziert wurden.
- Konfusionsmatrix: Eine Konfusionsmatrix ist eine Tabelle, die die tatsächlichen benannten Entitäten mit den vom Modell vorhergesagten Entitäten vergleicht. Sie kann zur Berechnung verschiedener Bewertungsmetriken wie Präzision, Wiedererkennung, Genauigkeit und F1-Score verwendet werden.
- Kreuzvalidierung: Die Kreuzvalidierung ist eine Technik, die zur Bewertung der Leistung von NER-Modellen verwendet wird. Dabei wird der Datensatz in mehrere Foldings aufgeteilt, das Modell auf einer Teilmenge der Foldings trainiert und auf dem verbleibenden Fold evaluiert. Dieser Prozess wird mehrmals wiederholt, um eine genauere Bewertung der Leistung des Modells zu erhalten.
- Fehleranalyse: Bei der Fehleranalyse werden die vom Modell gemachten Fehler manuell untersucht und die Muster oder häufigen Fehler identifiziert. Dies kann dazu beitragen, die Schwachstellen des Modells zu ermitteln und es zu verbessern.
Es ist wichtig zu beachten, dass je nach Anwendungsfall und Anforderungen an das NER-Modell unterschiedliche Bewertungsmaßstäbe angemessener sein können.
Wofür nutzt man NER?
Die Erkennung von benannten Entitäten (Named Entity Recognition) hat zahlreiche Anwendungen in verschiedenen Bereichen wie der Verarbeitung natürlicher Sprache, dem Information Retrieval und dem Text Mining. Eine der häufigsten Anwendungen der Named Entity Recognition ist der Bereich der Informationsextraktion. Dies liegt daran, dass NER zur Identifizierung und Extraktion von Entitäten von Interesse aus großen Mengen unstrukturierter Textdaten verwendet werden kann.
Im Gesundheitswesen kann NER verwendet werden, um medizinische Entitäten wie Krankheitsnamen, Symptome und Behandlungen aus elektronischen Gesundheitsakten (EHRs) zu extrahieren. Dies kann bei der Erkennung von Krankheiten sowie bei der Analyse medizinischer Daten zu Forschungszwecken helfen.
In der Finanzbranche kann NER zur Identifizierung und Extraktion von Finanzdaten wie Firmennamen, Aktiensymbolen und Finanzindikatoren aus Nachrichtenartikeln und anderen Finanzdokumenten verwendet werden. Dies kann bei Börsenanalysen und Finanzprognosen helfen.
In der Rechtsbranche kann die Named Entity Recognition verwendet werden, um juristische Entitäten wie Fallnamen, juristische Zitate und Richternamen aus juristischen Dokumenten zu extrahieren. Dies kann bei der juristischen Forschung und der Klassifizierung von Dokumenten helfen.
Im Bereich der Analyse sozialer Medien kann NER verwendet werden, um benannte Entitäten wie Personen, Orte und Organisationen aus Posts in sozialen Medien zu extrahieren. Dies kann bei der Stimmungsanalyse und der Analyse sozialer Netzwerke helfen.
Insgesamt bietet die NER zahlreiche praktische Anwendungen und kann dazu verwendet werden, wertvolle Informationen aus großen Mengen unstrukturierter Textdaten zu extrahieren.
Welche Tools und Bibliotheken können für die Named Entity Recognition genutzt werden?
Es gibt viele Werkzeuge und Bibliotheken für die Named Entity Recognition (NER). Hier sind einige beliebte:
- spaCy: Eine Python-Bibliothek für fortgeschrittene natürliche Sprachverarbeitung. spaCy enthält einen eingebauten NER.
- NLTK: Eine beliebte Python-Bibliothek für die Verarbeitung natürlicher Sprache, einschließlich eines Named Entity Recognizer.
- Stanford Named Entity Recognizer (Erkennung benannter Entitäten): Ein Java-basiertes NER-Tool, das benannte Entitäten im Text identifiziert und kategorisiert.
- OpenNLP: Eine Apache-Bibliothek, die Tools für die Verarbeitung natürlicher Sprache, einschließlich der Erkennung benannter Entitäten, enthält.
- GATE: Eine Java-basierte allgemeine Architektur für Text Engineering, die einen Named Entity Recognizer enthält.
- LingPipe: Ein Java-basiertes Tool für die Verarbeitung natürlicher Sprache, das einen Named Entity Recognizer enthält.
- IBM Watson Natural Language Understanding: Ein Cloud-basierter Dienst, der neben anderen Funktionen zur Verarbeitung natürlicher Sprache auch die Erkennung benannter Entitäten umfasst.
- Google Cloud Natural Language API: Ein Cloud-basierter Dienst, der neben anderen Funktionen zur Verarbeitung natürlicher Sprache auch die Erkennung benannter Entitäten umfasst.
Diese Tools und Bibliotheken verwenden verschiedene Algorithmen und Techniken zur Erkennung von benannten Entitäten, z. B. regelbasierte Methoden, statistische Modelle und maschinelles Lernen.
Das solltest Du mitnehmen
- Named Entity Recognition Modelle erlernen einzelne Wörter oder Sequenzen einer Gruppe zuzuordnen.
- Dazu werden sogenannte Conditional Random Fields trainiert, die die Klassifizierung sequenzabhängig vornehmen.
- Ein gutes NER Modell zeichnet sich durch die Erkennung von Varianten und die gute Abgrenzung von Entitäten aus.
Was sind Microservices?
Erstellen Sie skalierbare und modulare Anwendungen mit Microservices. Ermöglichen Sie flexible Dienste für eine effiziente Entwicklung.
Sentiment Analyse mit BERT und TensorFlow
Nutzung des BERT Embeddings zur Textklassifizierung von IMDb Filmbewertungen.
Convolutional Neural Network in TensorFlow mit CIFAR10 Bildern
Convolutional Neural Network in Python erstellen mit Tensorflow.
Web Scraping mit Python – in 5 Minuten zum fertigen Scraper!
Web Scraping am Beispiel mit Python und der Bibliothek Beautiful Soup.
Andere Beiträge zum Thema Named Entity Recognition
- Weiterführende Informationen zum Thema Named Entity Recognition findest Du hier.