Riconoscimento entità nominative (FUORI USO) in Python con Spacy

Contenuti

L'elaborazione del linguaggio naturale si occupa dei dati di testo. La quantità di dati di testo generati in questi giorni è enorme. E questi dati, se usato correttamente, può portare molti risultati fruttuosi. Alcune delle più importanti applicazioni di elaborazione del linguaggio naturale sono l'analisi del testo, le parti del voice tagging, analisi del sentiment e riconoscimento di entità denominate.

26119ner1-9906021

La grande quantità di dati di testo contiene una grande quantità di informazioni. Un aspetto importante dell'analisi di questi dati di testo è l'identificazione delle Entità nominate.

Che cos'è un'entità denominata??

Un'entità con nome è fondamentalmente un oggetto della vita reale che ha una corretta identificazione e può essere denotato con un nome proprio. Le entità nominate possono essere un luogo, una persona, un'organizzazione, un tempo, un oggetto o entità geografica.

Ad esempio, le entità nominate sarebbero Roger Federer, honda city, Samsung Galaxy S10. Le entità denominate sono di solito istanze di istanze di entità. Ad esempio, Roger Federer è un esempio di tennista / persona, Honda City è un'istanza di un'auto e Samsung Galaxy S10 è un'istanza di un telefono cellulare.

Riconoscimento entità nominative:

Il riconoscimento delle entità nominate è il processo di PNL che si occupa di identificare e classificare le entità nominate. Viene preso testo semplice e strutturato e le entità nominate vengono classificate in persone, organizzazioni, posti, soldi, tempo metereologico, eccetera. Fondamentalmente, le entità nominate sono identificate e segmentate in diverse classi predefinite.

I sistemi NER sono sviluppati con vari approcci linguistici, così come metodi statistici e di apprendimento automatico. NER ha molte applicazioni per progetti o scopi commerciali.

Il modello NER prima identifica un'entità e poi la categorizza nella classe più appropriata. Alcuni dei tipi comuni di entità nominate saranno:

1. Organizzazioni:

NASA, CERN, ISRO, eccetera.

2 posti:

Mumbai, New York, Calcutta.

3. Soldi:

Miliardi di dollari, 50 sterline inglesi.

4. Data:

15 agosto 2020

5. Persona:

Elon Musk, Richard Feynman, Subhas Chandra Bose.

Una cosa importante dei modelli NER è che la loro capacità di comprendere le entità nominate dipende dai dati su cui sono stati addestrati.. Ci sono molte applicazioni di NER.

NER può essere utilizzato per la classificazione dei contenuti, le varie Entità nominate di un testo possono essere compilate e, sulla base di quei dati, gli argomenti di contenuto possono essere compresi. In ambito accademico e di ricerca, NER può essere utilizzato per recuperare dati e informazioni più rapidamente da un'ampia varietà di informazioni testuali. NER aiuta molto nel caso di estrazione di informazioni da insiemi di dati di testo di grandi dimensioni.

NER usando Spacy:

Spacy è una libreria di elaborazione del linguaggio naturale open source che può essere utilizzata per varie attività. Dispone di metodi incorporati per il riconoscimento di entità denominate. Spacy ha un veloce sistema di riconoscimento statistico delle entità.

Possiamo usare spacy molto facilmente per le attività NER. Anche se spesso abbiamo bisogno di addestrare i nostri dati per esigenze aziendali specifiche, Il modello di spazio in generale funziona bene per tutti i tipi di dati di testo.

Iniziamo con il codice, prima importiamo spacy e continuiamo.

import spacy
from spacy import displacy

NER = spacy.load("en_core_web_sm")

Ora, inseriamo il nostro testo di esempio che testeremo. Il testo è stato preso dalla pagina ISRO di Wikipedia.

raw_text="L'Indian Space Research Organization o è l'agenzia spaziale nazionale dell'India, con sede a Bengaluru. Opera sotto il Dipartimento dello Spazio, che è direttamente supervisionato dal Primo Ministro dell'India, mentre il Presidente dell'ISRO funge anche da dirigente del DOS."
testo1 = GI(raw_text)

Ora, stampiamo i dati sui EN trovati in questo esempio di testo.

per la parola in text1.ents:
    Stampa(parola.testo,parola.etichetta_)

L'uscita:

The Indian Space Research Organisation ORG
the national space agency ORG
India GPE
Bengaluru GPE
Department of Space ORG
India GPE
ISRO ORG
DOS ORG

Quindi, ora possiamo vedere che tutte le Entità nominate in questo particolare testo vengono estratte. Se stiamo affrontando qualsiasi problema riguardante il tipo di un particolare NE, possiamo usare il seguente metodo.

spacy.explain("ORG")

Produzione: «Aziende, Agenzie, istituzioni, eccetera.’

spacy.explain("GPE")

Produzione: «Paesi, città, stato’

Ora, abbiamo testato un'immagine interessante, mostrando i NE direttamente nel testo.

displacy.render(testo1, stile="ente",jupyter=Vero)

Produzione:

45514ner2-1751415

Lascerò Kaggle Link alla fine, in modo che i lettori possano testare il codice da soli. Per quanto riguarda la visuale, Le entità nominate sono menzionate correttamente nel testo, con colori a contrasto, che rende la visualizzazione dei dati abbastanza facile e semplice. C'è un altro tipo di visual, che esplora l'intero set di dati nel suo insieme. Vedi il link Kaggle alla fine.

Proviamo le stesse attività con alcuni test che contengono più entità con nome.

raw_text2 = "La missione Mars Orbiter (MAMMA), informalmente conosciuto come Mangalyaan, è stato lanciato in orbita terrestre il 5 novembre 2013 dell'Indian Space Research Organisation (ISRO) ed entrò nell'orbita di Marte il 24 settembre 2014. L'India divenne così il primo paese ad entrare nell'orbita di Marte nel suo primo tentativo.. È stato completato ad un costo record di 74 milioni di dollari “.

text2= NER(raw_text2)
per Word in Text2.ents:
    Stampa(parola.testo,parola.etichetta_)

Produzione:

The Mars Orbiter Mission PRODUCT
MOM ORG
Mangalyaan GPE
Earth LOC
5 Novembre 2013 DATE
the Indian Space Research Organisation ORG
ISRO ORG
Mars LOC
24 Settembre 2014 DATE
India GPE
first ORDINAL
Mars LOC
first ORDINAL
$74 milioni di SOLDI

Qui, otteniamo più tipi di entità denominate. Identifichiamo di che tipo sono.

spacy.explain("PRODOTTO")

Produzione: «Oggetti, veicoli, alimenti, eccetera. (nessun servizio)’

spacy.explain("LOC")

Produzione: «Siti non GPE, Montuose, corsi e bacini d'acqua’

spacy.explain("DATTERO")

Produzione: «Date o periodi assoluti o relativi’

spacy.explain("ORDINALE")

Produzione: '"Primo", "secondo", eccetera.’

spacy.explain("DENARO")

Produzione: «Valori monetari, compresa l'unità’

Ora, analizziamo il testo nel suo insieme sotto forma di un visual.

displacy.render(testo2,stile="ente",jupyter=Vero)

Produzione:

68260ner3-3209580

Qui, le varie Entità Denominate in colori contrastanti, quindi comprendiamo la natura generale del testo.

NER di un articolo di notizie

Estrarremo i dati da un articolo di notizie ed eseguiremo un NER sui dati di testo raccolti da lì..

Useremo Beautiful Soup per scopi di web scraping.

from bs4 import BeautifulSoup
import requests
import re

Ora, useremo l'URL dell'articolo di notizie.

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).testo
zuppa = zuppa bella(html_content, "lxml")

Ora, otteniamo il contenuto del corpo.

corpo=zuppa.corpo.testo

Ora, usiamo le espressioni regolari per pulire il testo.

body= body.sostituisci('n', ' ')
body= body.sostituisci('T', ' ')
body= body.sostituisci('R', ' ')
body= body.sostituisci('xa0', ' ')
body=re.sub(R'[^ w]', '', corpo)

Diamo ora un'occhiata al testo.

corpo[1000:1500]
' Visualizza nell'app Bitcoin era inattivo da 6 ed era scambiato a Rs 2728815 dopo aver raggiunto il massimo dei giorni di Rs 2900208 Fonte Reuters segnalato da ZeeBiz WebTeam Scritto da Ravi Kant Kumar Aggiornato sabato giugno 12 20210646 pm Patna ZeeBiz WebDesk NOTIZIE CORRELATE Criptovaluta Ultime notizie di oggi giugno 14 Bitcoin guida il rally delle criptovalute 12 dopo ELON MUSK TWEET Controlla Ethereum Polka Dot Dogecoin Shiba Inu e altre migliori monete Il prezzo INR World India aggiorna la legge Bitcoin è solo'

Ora, procediamo con il riconoscimento delle entità nominative.

text3 = GI(corpo)
displacy.render(testo3, stile="ente",jupyter=Vero)

Bene, la forma visiva è molto grande, ma ci sono alcune parti interessanti che voglio coprire.

81153ner4-8773793

Ora, arrivando ad alcune osservazioni.

Bitcoin è presumibilmente una posizione geografica. Patna è un'organizzazione. Tralasciando alcuni casi, la maggior parte del testo è stata correttamente classificata nelle rispettive entità nominate. Perciò, possiamo comprendere che la rilevazione dell'entità è stata effettuata correttamente.

NER ha molte sfide e molti sviluppi ancora da fare. La corretta implementazione del NER è ancora un grosso problema. Oltre a Spacy, altre piattaforme di PNL includono CANCELLO e OpenNLP.

Per vedere il codice completo, vedi questo link in Kaggle.

Quindi, possiamo concludere che NER è un'applicazione importante della PNL e ha usi diffusi.

A proposito di me:

Prateek Majumder

Scienza dei dati e analisi | Specialista in marketing digitale | SEO | Creazione di contenuti

Connettiti con me su Linkedin.

Grazie.

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.