Nous savons que bert a une limite de longueur maximale de jetons = 512, donc si un acticle a une longueur beaucoup plus grande que 512, comme 10000 jetons dans le texte. Comment utiliser bert?
6 Réponses :
Vous avez essentiellement trois options:
Je suggérerais d'essayer l'option 1, et seulement si ce n'est pas assez bon pour considérer les autres options.
Je prévois d'utiliser bert comme encodeur de paragraphe, puis de passer à lstm, est-ce que cela fonctionne?
stackoverflow.com/questions/58703885/...
Dans mon expérience, j'ai également dû analyser de grands paragraphes et ce qui a abouti le mieux était en effet de ne considérer que les 512 derniers jetons, car ils étaient les plus informatifs (généralement conclu le sujet). Mais je pense que cela dépend fortement du domaine et du texte en question. De plus, l'option d'envoi présentée ici ne fonctionnait pas aussi bien pour moi, car je gérais le texte conversationnel et les phrases individuelles en disaient peu sur la classification.
Cet article a comparé quelques stratégies différentes: Comment affiner le BERT pour la classification de texte? . Sur l'ensemble de données de critique de film IMDb, ils ont en fait constaté que couper le milieu du texte (plutôt que de tronquer le début ou la fin) fonctionnait le mieux! Il a même surpassé des approches «hiérarchiques» plus complexes consistant à diviser l'article en morceaux, puis à recombiner les résultats.
Comme autre anecdote, j'ai appliqué le BERT à l'ensemble de données Wikipedia Personal Attacks ici , et j'ai trouvé que la simple troncature fonctionnait suffisamment bien pour que je n'étais pas motivé pour essayer d'autres approches :)
le lien avec le papier semble rompu. Pourriez-vous nous fournir un lien de travail ou le titre / les auteurs de l'article?
En plus de segmenter les données et de les transmettre à BERT, je vérifie les nouvelles approches suivantes.
Il y a de nouvelles recherches pour l'analyse de longs documents. Comme vous l'avez demandé pour Bert, un transformateur pré-entraîné similaire 'Longform' a récemment été mis à disposition par ALLEN NLP ( https://arxiv.org/abs/2004.05150 ). Consultez ce lien pour le papier.
La section consacrée aux travaux mentionne également certains travaux antérieurs sur de longues séquences. Google eux aussi. Je suggère au moins de passer par Transformer XL ( https://arxiv.org/abs/1901.02860 ). Pour autant que je sache, c'était l'un des modèles initiaux pour les longues séquences, il serait donc bon de l'utiliser comme base avant de passer à «Longformers».
Il existe une approche utilisée dans l'article Defending Against Neural Fake News ( https://arxiv.org/abs/1905.12616 )
Leur modèle génératif produisait des sorties de 1024 jetons et ils voulaient utiliser BERT pour les générations homme vs machine. Ils ont étendu la longueur de séquence utilisée par BERT simplement en initialisant 512 imbrications supplémentaires et en les entraînant pendant qu'ils affinaient BERT sur leur ensemble de données.
Il existe deux méthodes principales:
J'ai repris quelques articles typiques de BERT pour un texte long dans ce post: https://lethienhoablog.wordpress.com/2020/11/19/paper-dissected-and-recap-4-which-bert-for-long-text/
Vous pouvez y avoir un aperçu de toutes les méthodes.
Vous pouvez tirer parti de la bibliothèque HuggingFace Transformers qui comprend la liste suivante de Transformers qui fonctionnent avec des textes longs (plus de 512 jetons):
Huit autres modèles de transformateurs efficaces récemment proposés incluent Sparse Transformers (Child et al., 2019), Linformer (Wang et al., 2020), Sinkhorn Transformers (Tay et al., 2020b), Performers (Choromanski et al., 2020b), Synthétiseurs (Tay et al., 2020a), transformateurs linéaires (Katharopoulos et al., 2020) et BigBird (Zaheeret al., 2020).
L' article des auteurs de Google Research et DeepMind tente de faire une comparaison entre ces Transformers sur la base de «métriques agrégées» Long-Range Arena:
Ils suggèrent également que les Longformers ont de meilleures performances que Reformer en ce qui concerne la tâche de classification .
J'ajouterai que Longformer (je ne sais pas pour les autres) a toujours une limitation de 4096 jetons