Reconnaissance d'entité nommée (VERS LE BAS) en Python avec Spacy

Contenu

Le traitement du langage naturel traite les données textuelles. La quantité de données textuelles générées de nos jours est énorme. Et ces données, si utilisé correctement, peut apporter de nombreux résultats fructueux. Certaines des applications de traitement du langage naturel les plus importantes sont l'analyse de texte, les parties du marquage vocal, analyse des sentiments et reconnaissance des entités nommées.

26119ner1-9906021

La grande quantité de données textuelles contient une grande quantité d'informations. Un aspect important de l'analyse de ces données textuelles est l'identification des entités nommées.

Qu'est-ce qu'une entité nommée?

Une entité nommée est fondamentalement un objet de la vie réelle qui a une identification appropriée et peut être désigné par un nom propre. Les entités nommées peuvent être un lieu, une personne, une organisation, un temps, un objet ou une entité géographique.

Par exemple, les entités nommées seraient Roger Federer, honda ville, Samsung Galaxy S10. Les entités nommées sont généralement des instances d'instances d'entité. Par exemple, Roger Federer est une instance d'un joueur de tennis / personne, Honda City est une instance de voiture et Samsung Galaxy S10 est une instance de téléphone mobile.

Reconnaissance d'entité nommée:

La reconnaissance des entités nommées est le processus NLP qui traite de l'identification et de la classification des entités nommées. Le texte brut et structuré est pris et les entités nommées sont classées en personnes, organisations, endroits, argent, conditions météorologiques, etc. Essentiellement, les entités nommées sont identifiées et segmentées en plusieurs classes prédéfinies.

Les systèmes NER sont développés avec diverses approches linguistiques, ainsi que des méthodes statistiques et d'apprentissage automatique. NER a de nombreuses applications pour des projets ou à des fins commerciales.

Le modèle NER identifie d'abord une entité, puis la catégorise dans la classe la plus appropriée. Certains des types courants d'entités nommées seront:

1. Organisations:

Nasa, CERN, ISRO, etc.

2 endroits:

Bombay, New York, Calcutta.

3. De l'argent:

Milliards de dollars, 50 livres sterling.

4. Date:

15 août 2020

5. Personne:

Elon Musk, Richard Feynman, Subhas Chandra Bose.

Une chose importante à propos des modèles NER est que leur capacité à comprendre les entités nommées dépend des données sur lesquelles elles ont été formées.. Il existe de nombreuses applications de NER.

NER peut être utilisé pour la classification du contenu, les différentes entités nommées d'un texte peuvent être compilées et, sur la base de ces données, les sujets de contenu peuvent être compris. Dans les domaines académiques et de recherche, NER peut être utilisé pour récupérer des données et des informations plus rapidement à partir d'une grande variété d'informations textuelles. NER aide beaucoup dans le cas de l'extraction d'informations à partir de grands ensembles de données textuelles.

NER utilisant Spacy:

Spacy est une bibliothèque de traitement du langage naturel open source qui peut être utilisée pour diverses tâches. Possède des méthodes intégrées pour la reconnaissance d'entités nommées. Spacy dispose d'un système de reconnaissance d'entités statistiques rapide.

Nous pouvons utiliser spacy très facilement pour les tâches NER. Bien que nous ayons souvent besoin de former nos propres données pour des besoins commerciaux spécifiques, le modèle spatial général fonctionne bien pour tous les types de données de texte.

Commençons par le code, nous importons d'abord de l'espace et continuons.

espace d'importation
de spacy import displacy

NER = spacy.load("en_core_web_sm")

À présent, nous saisissons notre exemple de texte que nous allons tester. Le texte est tiré de la page Wikipédia de l'ISRO.

raw_text="L'Organisation indienne de recherche spatiale ou est l'agence spatiale nationale de l'Inde, siège à Bangalore. Il opère sous le ministère de l'Espace qui est directement supervisé par le Premier ministre indien, tandis que le président de l'ISRO agit également en tant que directeur du DOS."
text1 = BAS(raw_text)

À présent, nous imprimons les données sur les NE trouvés dans cet exemple de texte.

pour mot dans text1.ents:
    imprimer(mot.texte,word.label_)

La sortie:

L'Organisation indienne de recherche spatiale ORG
l'agence spatiale nationale ORG
GPE Inde
GPE de Bangalore
Département de l'espace ORG
GPE Inde
ORG ISRO
DOS ORG

Ensuite, maintenant nous pouvons voir que toutes les entités nommées dans ce texte particulier sont extraites. Si nous sommes confrontés à un problème concernant le type d'un NE particulier, nous pouvons utiliser la méthode suivante.

spacy.explain("ORG")

Production: 'Entreprises, agences, établissements, etc.’

spacy.explain("GPE")

Production: 'Les pays, villes, Etat’

À présent, nous avons essayé une image intéressante, qui affiche les NE directement dans le texte.

déplacement.render(texte1,style="ent",jupyter=Vrai)

Production:

45514ner2-1751415

Je laisserai Kaggle Link à la fin, afin que les lecteurs puissent tester le code par eux-mêmes. Quant au visuel, Les entités nommées sont correctement mentionnées dans le texte, avec des couleurs contrastées, ce qui rend la visualisation des données assez facile et simple. Il existe un autre type de visuel, qui explore l'ensemble de données dans son ensemble. Voir le lien Kaggle à la fin.

Essayons les mêmes tâches avec quelques tests qui contiennent plus d'entités nommées.

raw_text2 = "Mission La Mars Orbiter (MAMAN), officieusement connu sous le nom de Mangalyaan, a été lancé en orbite terrestre le 5 novembre 2013 par l'Organisation indienne de recherche spatiale (ISRO) et est entré dans l'orbite de Mars le 24 septembre 2014. L'Inde est ainsi devenue le premier pays à entrer sur l'orbite de Mars dès sa première tentative.. Il a été achevé à un coût record de 74 millions de dollars “.

text2 = BAS(raw_text2)
pour mot dans text2.ents:
    imprimer(mot.texte,word.label_)

Production:

La mission Mars Orbiter
MAMAN ORG
GPE de Mangalyaan
LOC de la Terre
5 novembre 2013 DATE
l'Organisation indienne de recherche spatiale ORG
ORG ISRO
LOC de Mars
24 septembre 2014 DATE
GPE Inde
premier ORDINAL
LOC de Mars
premier ORDINAL
$74 millions d'ARGENT

Ici, nous obtenons plus de types d'entités nommées. Identifions de quel type ils sont.

spacy.explain("PRODUIT")

Production: 'Objets, Véhicules, nourriture, etc. (aucun service)’

spacy.explain("ENDROIT")

Production: ‘Lieux n’appartenant pas au GPE, chaînes de montagnes, corps d'eau’

spacy.explain("DATE")

Production: « Dates ou périodes absolues ou relatives’

spacy.explain("ORDINAL")

Production: '"Premier", "seconde", etc.’

spacy.explain("DE L'ARGENT")

Production: « Valeurs monétaires, y compris le lecteur’

À présent, nous analysons le texte dans son ensemble sous forme de visuel.

déplacement.render(texte2,style="ent",jupyter=Vrai)

Production:

68260ner3-3209580

Ici, les différentes entités nommées dans des couleurs contrastées, ainsi nous comprenons la nature générale du texte.

NER d'un article de presse

Nous extrairons des données d'un article de presse et effectuerons un NER sur les données textuelles collectées à partir de là.

Nous utiliserons Beautiful Soup à des fins de grattage Web.

de bs4 import BeautifulSoup
demandes d'importation
importation re

À présent, nous utiliserons l'URL de l'article de presse.

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).texte
soupe = BelleSoupe(html_content, "lxml")

À présent, nous obtenons le contenu du corps.

corps=soupe.corps.texte

À présent, nous utilisons des expressions régulières pour nettoyer le texte.

corps= corps.remplacer('n', ' ')
corps= corps.remplacer('t', ' ')
corps= corps.remplacer('r', ' ')
corps= corps.remplacer('xa0', ' ')
corps=re.sub(r'[^ ws]', '', corps)

Voyons maintenant le texte.

corps[1000:1500]
' La vue dans l'App Bitcoin était en baisse de 6 et se négociait à Rs 2728815 après avoir atteint le plus haut niveau de Rs en jours 2900208 Source Reuters Rapporté par ZeeBiz WebTeam Écrit par Ravi Kant Kumar Mis à jour le samedi juin 12 20210646 pm Patna ZeeBiz WebDesk NOUVELLES CONNEXES Dernières nouvelles de la crypto-monnaie aujourd'hui juin 14 Bitcoin en tête du rallye crypto 12 après ELON MUSK TWEET Vérifiez Ethereum Polka Dot Dogecoin Shiba Inu et d'autres meilleures pièces Prix INR Monde L'Inde met à jour la loi Bitcoin est seulement '

À présent, procédons à la reconnaissance des entités nommées.

text3 = BAS(corps)
déplacement.render(texte3,style="ent",jupyter=Vrai)

Bon, la forme visuelle est très grande, mais il y a des parties intéressantes que je veux couvrir.

81153ner4-8773793

À présent, arriver à quelques observations.

Bitcoin est censé être un emplacement géographique. Patna est une organisation. Laissant de côté certains cas, la plupart du texte a été correctement classé dans leurs entités nommées respectives. Pourtant, nous pouvons comprendre que la comptabilisation de l'entité a été effectuée correctement.

NER a de nombreux défis et de nombreux développements encore à faire. La bonne mise en œuvre de la NER reste un gros problème. Outre Spacy, d'autres plates-formes de PNL incluent PORTAIL Oui OpenNLP.

Pour voir le code complet, voir ce lien dans Kaggle.

Ensuite, nous pouvons conclure que NER est une application importante de la PNL et a des utilisations répandues.

Sur moi:

Prateek Majumder

Science des données et analyse | Spécialiste du marketing numérique | Référencement | Création de contenu

Connectez-vous avec moi sur Linkedin.

Merci.

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.