Maison > développement back-end > Tutoriel Python > ETL : extraire le nom d'une personne à partir d'un texte

ETL : extraire le nom d'une personne à partir d'un texte

Linda Hamilton
Libérer: 2024-10-08 06:20:30
original
850 Les gens l'ont consulté

Disons que nous voulons gratter chicagomusiccompass.com.

Comme vous pouvez le constater, il comporte plusieurs cartes, chacune représentant un événement. Voyons maintenant le suivant :

ETL: Extracting a Person

Notez que le nom de l'événement est :


jazmin bean: the traumatic livelihood tour


Copier après la connexion

Alors maintenant la question est : Comment extraire le nom de l'artiste du texte ?

En tant qu'humain, je peux "facilement" dire que Jazmin Bean est l'artiste - il suffit de consulter leur page wiki. Mais écrire du code pour extraire ce nom peut s'avérer délicat.

On pourrait penser : « Hé, tout ce qui précède le : devrait être le nom de l'artiste », ce qui semble intelligent, non ? Cela fonctionne pour ce cas, mais qu'en est-il de celui-ci :


happy hour on the patio: kathryn & chris


Copier après la connexion
Copier après la connexion

Ici, l'ordre est inversé. Nous pourrions continuer à ajouter de la logique pour gérer différents cas, mais nous nous retrouverons bientôt avec une tonne de règles fragiles et qui ne couvriront probablement pas tout.

C’est là que les modèles Named Entity Recognition (NER) sont utiles. Ils sont open source et peuvent nous aider à extraire des noms du texte. Cela ne détectera pas tous les cas, mais la plupart du temps, ils nous fourniront les informations dont nous avons besoin.

Avec cette approche, l'extraction devient beaucoup plus facile. Je choisis Python car la communauté autour du Machine Learning en Python est tout simplement imbattable.


from gliner import GLiNER

model = GLiNER.from_pretrained("urchade/gliner_base")

text = "jazmin bean: the traumatic livelihood tour"
labels = ["person", "bands", "projects"]
entities = model.predict_entities(text, labels)

for entity in entities:
    print(entity["text"], "=>", entity["label"])


Copier après la connexion

Ce qui génère la sortie :


jazmin bean => person


Copier après la connexion

Maintenant, regardons cet autre cas :


happy hour on the patio: kathryn & chris


Copier après la connexion
Copier après la connexion

Sortie :


kathryn => person
chris => person


Copier après la connexion

source-GLiNER

Génial, non ? Fini la logique fastidieuse pour extraire les noms, utilisez simplement un modèle. Bien sûr, cela ne couvrira pas tous les cas possibles, mais pour mon projet, ce niveau de flexibilité fonctionne très bien. Si vous avez besoin de plus de précision, vous pouvez toujours :

  • Essayez un autre modèle
  • Contribuer au modèle existant
  • Forkez le projet et ajustez-le pour l'adapter à vos besoins

Conclusion

En tant que développeur de logiciels, il est fortement recommandé de rester à jour avec les outils de l'espace Machine Learning. Tout ne peut pas être résolu avec une programmation et une logique simples : certains défis sont mieux relevés à l'aide de modèles et de statistiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal