Erkennung benannter Entitäten (NIEDER) in Python mit Spacy

Inhalt

Natural Language Processing befasst sich mit Textdaten. Die Menge an Textdaten, die heutzutage generiert wird, ist enorm. Und diese Daten, bei richtiger Anwendung, kann viele fruchtbare Ergebnisse bringen. Einige der wichtigsten Anwendungen für die Verarbeitung natürlicher Sprache sind die Textanalyse, die Teile von Voice Tagging, Sentiment-Analyse und Named-Entity-Erkennung.

26119ner1-9906021

Die große Menge an Textdaten enthält eine große Menge an Informationen. Ein wichtiger Aspekt bei der Analyse dieser Textdaten ist die Identifizierung von Named Entities.

Was ist eine benannte Entität??

Eine benannte Entität ist im Grunde ein reales Objekt, das eine richtige Identifizierung hat und mit einem richtigen Namen bezeichnet werden kann. Benannte Entitäten können ein Ort sein, eine Person, eine Organisation, eine Zeit, ein geografisches Objekt oder eine Einheit.

Zum Beispiel, die genannten Entitäten wären Roger Federer, Honda-Stadt, Samsung Galaxy S10. Benannte Entitäten sind normalerweise Instanzen von Entitätsinstanzen. Zum Beispiel, Roger Federer ist eine Instanz eines Tennisspielers / Person, Honda City ist eine Instanz eines Autos und Samsung Galaxy S10 ist eine Instanz eines Mobiltelefons.

Erkennung benannter Entitäten:

Die Erkennung benannter Entitäten ist der NLP-Prozess, der sich mit der Identifizierung und Klassifizierung von benannten Entitäten befasst. Klarer und strukturierter Text wird genommen und benannte Entitäten werden in Personen eingeteilt, Organisationen, setzt, Geld, Wetter, etc. Grundsätzlich, benannte Entitäten werden identifiziert und in mehrere vordefinierte Klassen unterteilt.

NER-Systeme werden mit verschiedenen linguistischen Ansätzen entwickelt, sowie statistische und maschinelle Lernmethoden. NER hat viele Anwendungen für Projekte oder kommerzielle Zwecke.

Das NER-Modell identifiziert zuerst eine Entität und kategorisiert sie dann in die am besten geeignete Klasse. Einige der gebräuchlichen Arten von benannten Entitäten sind:

1. Organisationen:

NASA, CERN, ISRO, etc.

2 setzt:

Mumbai, New York, Kalkutta.

3. Geld:

Milliarde Dollar, 50 Pfund Sterling.

4. Datum:

15 August 2020

5. Person:

Elon Musk, Richard Feynman, Subhas Chandra Bose.

Eine wichtige Sache bei NER-Modellen ist, dass ihre Fähigkeit, benannte Entitäten zu verstehen, von den Daten abhängt, mit denen sie trainiert wurden.. Es gibt viele Anwendungen von NER.

NER kann zur Inhaltsklassifizierung verwendet werden, die verschiedenen Named Entities eines Textes können zusammengestellt werden und, basierend auf diesen Daten, inhaltliche Themen sind verständlich. Im akademischen und wissenschaftlichen Bereich, NER kann verwendet werden, um Daten und Informationen aus einer Vielzahl von Textinformationen schneller abzurufen. NER hilft sehr beim Extrahieren von Informationen aus großen Textdatensätzen.

NER mit Spacy:

Spacy ist eine Open-Source-Bibliothek zur Verarbeitung natürlicher Sprache, die für verschiedene Aufgaben verwendet werden kann. Verfügt über integrierte Methoden zur Erkennung benannter Entitäten. Spacy verfügt über ein schnelles statistisches Entitätserkennungssystem.

Wir können spacy sehr einfach für NER-Aufgaben verwenden. Obwohl wir oft unsere eigenen Daten für spezifische Geschäftsanforderungen trainieren müssen, Das allgemeine Raummodell funktioniert gut für alle Textdatentypen.

Fangen wir mit dem Code an, zuerst importieren wir spacy und fahren fort.

spacig importieren
aus spacy import displacy

NER = spacy.load("de_core_web_sm")

Jetzt, wir geben unseren Beispieltext ein, den wir testen werden. Der Text wurde der Wikipedia-Seite von ISRO entnommen.

raw_text="Die indische Weltraumforschungsorganisation oder ist die nationale Raumfahrtbehörde Indiens, mit Hauptsitz in Bengaluru. Es untersteht dem Weltraumministerium, das direkt vom indischen Premierminister beaufsichtigt wird, während der Vorsitzende von ISRO auch als Exekutivorgan von DOS fungiert."
text1 = DOWN(raw_text)

Jetzt, wir drucken die Daten auf den NEs in diesem Textbeispiel.

für Wort in text1.ents:
    drucken(Wort.text,Wort.label_)

Der Ausgang:

Die indische Weltraumforschungsorganisation ORG
die nationale Raumfahrtbehörde ORG
Indien GPE
Bengaluru GPE
Abteilung für Raumfahrt ORG
Indien GPE
ISRO-ORG
DOS-ORG

Dann, Jetzt können wir sehen, dass alle in diesem bestimmten Text genannten Entitäten extrahiert wurden. Wenn wir mit einem Problem bezüglich des Typs eines bestimmten NE konfrontiert sind, wir können die folgende Methode verwenden.

spacy.explain("ORG")

Produktion: 'Unternehmen, Agenturen, Institutionen, etc.’

spacy.explain("GPE")

Produktion: 'Länder, Städte, Zustand’

Jetzt, Wir haben ein interessantes Bild ausprobiert, die die NEs direkt im Text anzeigt.

displacy.render(text1,style="ent",jupyter=Wahr)

Produktion:

45514ner2-1751415

Ich werde Kaggle Link am Ende verlassen, damit die Leser den Code selbst testen können. Was das Visuelle angeht, Benannte Entitäten werden im Text korrekt erwähnt, mit Kontrastfarben, was die Datenvisualisierung ganz einfach und einfach macht. Es gibt eine andere Art von Visuals, die den gesamten Datensatz als Ganzes untersucht. Siehe den Kaggle-Link am Ende.

Versuchen wir die gleichen Aufgaben mit einigen Tests, die mehr benannte Entitäten enthalten.

raw_text2 = ”La Mars Orbiter Mission (MAMA), informell bekannt als Mangalyaan, wurde am in die Erdumlaufbahn geschossen 5 November 2013 von der indischen Weltraumforschungsorganisation (ISRO) und betrat die Umlaufbahn des Mars am 24 September 2014. Indien war damit das erste Land, das beim ersten Versuch die Umlaufbahn des Mars betrat.. Es wurde zu einem Rekordpreis von fertiggestellt 74 Millionen von Dollar “.

text2 = DOWN(raw_text2)
für Wort in text2.ents:
    drucken(Wort.text,Wort.label_)

Produktion:

Die Mars Orbiter Mission PRODUKT
MOM-ORG
Mangalyaan GPE
Erde LOC
5 November 2013 DATUM
die indische Weltraumforschungsorganisation ORG
ISRO-ORG
Mars LOC
24 September 2014 DATUM
Indien GPE
erste ORDINAL
Mars LOC
erste ORDINAL
$74 Millionen GELD

Hier, wir erhalten mehr Arten von benannten Entitäten. Lass uns herausfinden, um welchen Typ es sich handelt.

spacy.explain("PRODUKT")

Produktion: 'Objekte, Fahrzeuge, Lebensmittel, etc. (keine Dienste)’

spacy.explain("PLATZ")

Produktion: „Orte, die nicht zur GPE gehören, Bergketten, Wasserkörper’

spacy.explain("DATUM")

Produktion: „Absolute oder relative Daten oder Zeiträume’

spacy.explain("ORDINAL")

Produktion: '"Zuerst", "Sekunde", etc.’

spacy.explain("GELD")

Produktion: „Geldwerte“, inklusive Antrieb’

Jetzt, Wir analysieren den Text als Ganzes in Form von visuellen.

displacy.render(text2,style="ent",jupyter=Wahr)

Produktion:

68260ner3-3209580

Hier, die verschiedenen benannten Entitäten in kontrastierenden Farben, damit wir den allgemeinen Charakter des Textes verstehen.

NER eines Nachrichtenartikels

Wir werden Daten aus einem Nachrichtenartikel extrahieren und eine NER mit den dort gesammelten Textdaten durchführen.

Wir werden Beautiful Soup für Web-Scraping-Zwecke verwenden.

aus bs4 importieren BeautifulSoup
Importanfragen
Importieren

Jetzt, wir verwenden die URL des Nachrichtenartikels.

URL="https://www.zeebiz.com/markets/currency/news-cryptocurrency-news-today-june-12-bitcoin-dogecoin-shiba-inu-and-other-top-coins-prices-and-all-latest-updates-158490"
html_content = request.get(URL).Text
Suppe = SchöneSoup(html_inhalt, "lxml")

Jetzt, wir bekommen den Körperinhalt.

body=suppe.body.text

Jetzt, Wir verwenden reguläre Ausdrücke, um den Text zu bereinigen.

body= body.replace('n', ' ')
body= body.replace('T', ' ')
body= body.replace('R', ' ')
body= body.replace('xa0', ' ')
body=re.sub(R'[^ ws]', '', Karosserie)

Schauen wir uns nun den Text an.

Karosserie[1000:1500]
' Ansicht in App Bitcoin war um 6 und handelte bei Rs 2728815 nach dem Schlagen von Tagen hoch von Rs 2900208 Quelle Reuters Gemeldet von ZeeBiz WebTeam Geschrieben von Ravi Kant Kumar Aktualisiert Sa. Juni 12 20210646 pm Patna ZeeBiz WebDesk VERWANDTE NACHRICHTEN Kryptowährung Neueste Nachrichten Heute Juni 14 Bitcoin führt Krypto-Rallye an 12 nach ELON MUSK TWEET Überprüfen Sie Ethereum Polka Dot Dogecoin Shiba Inu und andere Top-Münzen INR-Preis World India aktualisiert nur das Bitcoin-Gesetz

Jetzt, fahren wir mit der Anerkennung benannter Entitäten fort.

text3 = DOWN(Karosserie)
displacy.render(text3,style="ent",jupyter=Wahr)

Gut, die visuelle Form ist sehr groß, aber es gibt einige interessante Teile, die ich behandeln möchte.

81153ner4-8773793

Jetzt, zu einigen Beobachtungen kommen.

Bitcoin ist angeblich ein geografischer Standort. Patna ist eine Organisation. Abgesehen von einigen Fällen, der größte Teil des Textes wurde korrekt in ihre jeweiligen benannten Entitäten eingeordnet. Deswegen, wir können nachvollziehen, dass die Anerkennung der Entität korrekt erfolgt ist.

NER hat viele Herausforderungen und viele Entwicklungen, die noch gemacht werden müssen. Die korrekte Implementierung von NER ist immer noch ein großes Problem. Neben Spacy, andere NLP-Plattformen umfassen TOR Ja OpenNLP.

Um den vollständigen Code zu sehen, siehe diesen Link in Kaggle.

Dann, Wir können daraus schließen, dass NER eine wichtige Anwendung von NLP ist und weit verbreitet ist.

Über mich:

Prateek Majumder

Datenwissenschaft und Analytik | Spezialist für digitales Marketing | SEO | Inhaltserstellung

Verbinde dich mit mir auf Linkedin.

Vielen Dank.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.