Technologie

Extraire l'auteur de nouvelles avec une segmentation basée sur DOM et BERT

Extraire l'auteur de nouvelles avec une segmentation basée sur DOM et BERT


Obtenir l'auteur de grands volumes de nouvelles est intimidant. Les pages Web se présentent sous différents formats, et une solution parfaite devrait identifier dans tous les cas, lorsque nom complet de l'auteur ou des auteurs. Le nom de l'auteur peut parfois être juste en dessous du titre, mais d'autres fois, il se trouve sous l'article ou presque masqué dans une autre colonne. Le nom de l'auteur peut entrer n'importe quel langage et peut ou non contenir une particule, comme la préposition anglaise par. Dans certains cas, il y a plusieurs auteurs et les noms sont virgule- ou et- séparé.

UNE analyseur basé sur l'heuristique, c'est-à-dire que l'utilisation d'expressions régulières et de scripts bash avec des conditions, fonctionnerait bien dans de nombreux cas. Pourtant, une bonne solution devrait généraliser aux formats invisibles. Par exemple, certains articles contiennent des listes de prénoms dans le document (liens vers d'autres articles ou d'autres éléments du site Web), ce qui pourrait créer une ambiguïté.

Les classificateurs sont connus¹ ² pour bien fonctionner pour les tâches d'extraction de contenu car ils peuvent examiner plusieurs fonctionnalités contextuelles et de mise en page.

Cet article de Le gardien a l'auteur dans la colonne de gauche. La chaîne «à Paris" fait référence à l'endroit où le journaliste a écrit la pièce et ne fait pas partie du nom.
Un article dans un tabloïd suédois Aftonbladet avec l'auteur correspondant à gauche. En suédois, «un V" est placé devant le nom de l’auteur et ressemble à «par" en anglais. Notez qu'il y a des noms dans la deuxième colonne (Prins Harry, Meghan Markle, etc.), qui pourrait être confondu avec l’auteur de l’article. Le titre contient également un nom (Prins Phillip), qui n'est pas encore l'auteur.

Étant donné que les journaux changent la structure de leur site Web de temps en temps, il existe un nombre inconnu (mais sans doute faible) de cas différents couverts par le corpus. Il devrait être relativement facile de collecter et d'étiqueter manuellement plus d'exemples de formation d'autres médias pour couvrir plus de cas.

Pipeline d'extracteur d'auteur de bout en bout

Web2Text peut construire une arborescence DOM pour le HTML conforme et non conforme. Il a une logique pour nettoyer les nœuds DOM connus pour contenir des données non informatives, parcourir l'arborescence DOM vers le bas et réduire les nœuds à enfant unique avec leurs enfants respectifs.

(Source: Web2Text)

Les exemples d'apprentissage du modèle sont les nœuds DOM des fichiers HTML. Chaque fichier HTML a une moyenne de 138 nœuds DOM. Donc, au total, l'ensemble de données contient m = 73K * 138 = 101M d'exemples de formation. En moyenne, le code prend 127 ms pour convertir chacun des fichiers HTML en un fichier de représentation d'entités CSV où chaque ligne représente une entité et chaque colonne est un nœud DOM (fonctionnant sur un i7 bicœur à 1,7 GHz avec 8 Go de mémoire DDR3) .

La classe principale ExtractPageFeatures prend en entrée un fichier HTML brut et produit un fichier CSV avec des fonctionnalités pour la tâche de suppression de la chaudière. J'ai modifié ce code et créé de nouvelles fonctionnalités qui conviennent mieux à la tâche d'extraction de l'auteur en cours. Après avoir compilé le projet Scala, vous pouvez exécuter n'importe quel fichier HTML:

> ./extract_page_features.sh  

Prenons un exemple simple de l'un des textes de notre jeu de données:

L'algorithme atteint le jeton Politique (8 caractères) à travers l'itinéraire en-tête -> div -> div -> h2 / a. Remarquez comment

et sont effondrés en une seule feuille.

Pour chaque noeud DOM réduit (CDOM), Web2Text construit un vecteur de fonctionnalités:

Web2Text vous permet de générer l’arborescence CDOM dans un fichier HTML afin que vous puissiez voir les fonctionnalités de chaque nœud.

Web2Text est livré avec un ensemble de 128 fonctionnalités prédéfinies:

Fonctionnalités prêtes à l'emploi de Web2Text (Source: Web2Text)

Les fonctionnalités existent aux niveaux suivants:

  • Feuille
  • Parent
  • Grand-parent
  • Racine

Le préprocesseur calcule les fonctionnalités de niveau ancêtre (parent, grand-parent ou racine) avec SOMME sur les caractéristiques des descendants (sur des entiers) ou avec un OU (sur booléens). Par exemple, s'il existe deux nœuds frères, l'un avec une adresse e-mail et l'autre sans, le préprocesseur marquera le nœud parent commun comme contenant un e-mail.

Avoir des fonctionnalités de capture de données au niveau d'un ancêtre est utile dans la tâche d'extraction de l'auteur car, dans de nombreux sites de nouvelles, les noms des auteurs sont entourés de petites cases avec la date de publication et parfois le profil de médias sociaux de l'auteur. Ces informations peuvent aider le classificateur à savoir quels blocs contiennent l'auteur.

Dans cet exemple de Le New York Times, le préprocesseur étiquette le nœud contenant l'auteur comme ayant un Date champ au niveau de l'ancêtre.

Ingénierie des fonctionnalités

  • contient_nom_populaire: Vrai si le nœud CDOM contient un nom à partir d'un ensemble de données des 1 000 noms de bébé les plus courants aux États-Unis par an pour la période 1880-2008. Sur une année donnée, il couvre 80% des noms pour les garçons et 67% pour les filles aux États-Unis (6,8 000 enregistrements dédupliqués). (Remarque: cette partie particulière utilise une comparaison de chaînes. Une meilleure solution pour cette fonctionnalité impliquerait des incorporations de mots ou éventuellement BERT ou ses successeurs).
  • contains_author_particle: Vrai si le nœud CDOM contient la particule par ou et.
  • contains_author_url: Vrai si le nœud inclut une URL au format http[s]: //[something]/auteur/[quelquechose[something. De nombreux journaux contiennent des liens vers une page avec la biographie de l'auteur ou une page avec d'autres articles du même auteur avec un lien dans ce format.

J'étais ravi d'apprendre que je pouvais utiliser certaines des fonctionnalités standard de Web2Text pour capturer des informations pertinentes pour ma tâche:

  • contains_two_capitalized_words: Contient au moins deux mots en majuscule (John Doe, JOHN DOE) (Fonctionnalités de Web2Text b20, b21, b22)
  • at_least_two_words: Contient au moins deux mots (capturés par la fonction Web2Text b5)
  • contains_date: Un nœud à une distance raisonnable contient une date. Cela est capturé par le contient_année fonctionnalité (b19) au niveau des parents ou des grands-parents.

Certaines fonctionnalités qui seraient très intéressantes pour étendre le modèle seraient:

  • Taille de la taille de police HTML rendue
  • Un nœud ancêtre contient un lien vers les médias sociaux
  • number_of_sibling_nodes: Le nombre de frères CDOM part. Capture le fait que le nom peut faire partie d'une liste de liens, comme dans l'exemple d'Aftonbladet vu précédemment.
  • Identifiez la langue dans laquelle l'article est écrit, car le modèle repose sur la capitalisation, les formats de date en anglais et une liste de prénoms en anglais.

Hyperparamètres

Mesures clés

Temps de formation: 8,3 heures

Matrice de confusion

Les poids du modèle formé sont stockés dans notre référentiel, à / public / entraîné_modèle_all_les_nouvelles /.

1.- Exécutez le réseau neuronal formé sur le document HTML pour choisir le bloc DOM au coût minimum.

2.- Exécutez un Reconnaissance d'entité nommée BERT pour extraire tous les noms de personnes du bloc. Ce modèle utilise la mise en œuvre de HuggingFace Transformer de BERT (grand, avec boîtier)⁴ (lien vers le modèle ) et étiquetera chaque jeton d'une phrase comme appartenant à quatre types: La personne, MISC, Organisation, et Emplacement, en utilisant le format IOB standard. Pour la tâche d'extraction d'auteur, seuls les noms de personne (PAR les balises) sont pertinentes. Le modèle est affiné à l'aide du CoNLL-2003⁵ jeu de données, un jeu de données standard pour la reconnaissance d'entités nommées.

Vous pouvez enfin exécuter la commande suivante pour prédire le nom de l'auteur d'un article de presse:

> ./inference_from_url.sh https://www.theguardian.com/us-news/2016/jul/13/alton-sterling-son-cameron-protesters-baton-rougeLe nom de l'auteur est: Jessica Glenza.

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer