Qu'est-ce que le découpage dans le traitement du langage naturel ?

Nœud source: 1878431

Chers lecteurs,

Dans ce blog, je discuterai de la fragmentation à la fois théorique et pratique en Python.

Alors, commençons…

REMARQUE: Pour l'implémentation, il est préférable d'utiliser Python IDLE car la sortie est un dessin d'un arbre qui apparaît dans une fenêtre séparée.

Agenda

  • Qu'est-ce que le découpage ?
  • Où le découpage est-il utilisé ?
  • Types de découpage
  • Implémentation du découpage en Python
  • Résultats

Qu'est-ce que le découpage ?

Le découpage est défini comme le processus de traitement du langage naturel utilisé pour identifier les parties du discours et les phrases courtes présentes dans une phrase donnée.

En rappelant nos bons vieux cours de grammaire anglaise à l'école, notez qu'il y a huit parties du discours, à savoir le nom, le verbe, l'adjectif, l'adverbe, la préposition, la conjonction, le pronom et l'interjection. De plus, dans la définition ci-dessus du découpage, les phrases courtes font référence aux phrases formées en incluant l'une de ces parties du discours.

Par exemple, le découpage peut être effectué pour identifier et ainsi regrouper des phrases nominales ou des noms seuls, des adjectifs ou des phrases adjectives, etc. Considérez la phrase ci-dessous :

“J'ai eu des hamburgers et des pâtisseries pour le petit déjeuner.”

Dans ce cas, si nous souhaitons grouper ou fragmenter des phrases nominales, nous obtiendrons « burgers », « pâtisseries » et « déjeuner » qui sont les noms ou les groupes de noms de la phrase.

Où le découpage est-il utilisé ?

Pourquoi voudrions-nous apprendre quelque chose sans savoir où il est largement utilisé ?! Regarder les applications discutées dans cette section du blog vous aidera à rester curieux jusqu'à la fin !

Le fractionnement est utilisé pour obtenir les phrases requises à partir d'une phrase donnée. Cependant, le balisage POS ne peut être utilisé que pour repérer les parties du discours auxquelles chaque mot de la phrase appartient.

Lorsque nous avons des tas de descriptions ou de modifications autour d'un mot particulier ou de la phrase qui nous intéresse, nous utilisons le découpage pour saisir la phrase requise seule, en ignorant le reste qui l'entoure. Par conséquent, le découpage ouvre un moyen de regrouper les phrases requises et d'exclure tous les modificateurs qui les entourent et qui ne sont pas nécessaires pour notre analyse. En résumé, le découpage nous aide à extraire uniquement les mots importants de longues descriptions. Ainsi, le découpage est une étape dans l'extraction d'informations.

Fait intéressant, ce processus de découpage en NLP est étendu à diverses autres applications ; par exemple, pour regrouper les fruits d'une catégorie spécifique, disons, les fruits riches en protéines en tant que groupe, les fruits riches en vitamines en tant qu'autre groupe, et ainsi de suite. En outre, le découpage peut également être utilisé pour regrouper des voitures similaires, par exemple, les voitures prenant en charge la transmission automatique dans un groupe et les autres prenant en charge la transmission manuelle dans un autre segment, etc.

Types de découpage

Il existe en gros deux types de découpage :

  • Découper
  • Découper

Découper :

Ici, on ne plonge pas profondément ; au lieu de cela, nous nous contentons d'un simple aperçu des informations. Cela nous aide simplement à avoir une brève idée des données fournies.

Découpage :

Contrairement au type de fractionnement précédent, le fractionnement nous aide à obtenir des informations détaillées.

Donc, si vous voulez juste un aperçu, envisagez de « couper » sinon préférez « couper ».

Implémentation du découpage en Python

Imaginez une situation dans laquelle vous souhaitez extraire tous les verbes du texte donné pour votre analyse. Ainsi, dans ce cas, nous devons considérer le découpage des phrases verbales. C'est parce que notre objectif est d'extraire toutes les phrases verbales du morceau de texte donné. Le découpage se fait à l'aide d'expressions régulières.

Ne vous inquiétez pas si c'est la première fois que vous rencontrez le terme « expressions régulières ». Le tableau ci-dessous est ici, à votre secours :

Symbole

Sens

Exemple

*

Le caractère précédent peut apparaître zéro ou plusieurs fois, ce qui signifie que le caractère précédent peut ou non être présent.

ab* correspond à toutes les entrées commençant par ab puis suivies de zéro ou plusieurs nombres de b. Le modèle correspondra à ab, abb, abbb et ainsi de suite.

+

Le caractère précédent doit apparaître au moins une fois.

a+ correspond à a,aa,aaa et ainsi de suite.

?

Le caractère précédent peut ne pas apparaître du tout ou n'apparaître qu'une seule fois, ce qui signifie que le caractère précédent est facultatif.

un B? correspond à ab, abb mais pas à abbb et ainsi de suite.

Le tableau ci-dessus comprend les expressions régulières les plus couramment utilisées. Les expressions régulières sont très utiles dans la ligne de commande, en particulier lors de la suppression, de la localisation, du renommage ou du déplacement de fichiers.

Quoi qu'il en soit, pour cette implémentation, nous n'utiliserons que *. N'hésitez pas à consulter le tableau ci-dessus pour vous familiariser avec le symbole !

Nous effectuerons le fractionnement à l'aide de nltk, la bibliothèque NLP la plus populaire. Alors, commençons par l'importer.

importer nltk

Considérons l'exemple de texte ci-dessous que j'ai créé moi-même. N'hésitez pas à remplacer le texte ci-dessous par n'importe quel exemple de texte que vous souhaitez implémenter le fractionnement !

sample_text=""" Rama a tué Ravana pour sauver Sita de Lanka. La légende du Ramayan est l'épopée indienne la plus populaire. De nombreux films et séries ont déjà été tournés en plusieurs langues ici en Inde sur la base du Ramayana. """

De toute évidence, les données doivent être segmentées par phrase, puis segmentées par mot avant de continuer. La tokenisation n'est rien d'autre que le processus de décomposition d'un morceau de texte donné en unités plus petites telles que des phrases, dans le cas de la tokenisation des phrases et des mots, dans le cas de la tokenisation des mots.

Suivi de la tokenisation, le marquage POS (partie du discours) est effectué pour chaque mot, dans lequel la partie du discours de chaque mot sera identifiée. Maintenant, nous ne nous intéressons qu'à la partie du discours verbale et souhaitons l'extraire.

Par conséquent, spécifiez la partie du discours qui nous intéresse à l'aide de l'expression régulière requise comme suit :

VB : {}

tokenized=nltk.sent_tokenize(sample_text) pour i dans tokenized : words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}" "" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

L'expression régulière (RE) est entourée de crochets angulaires () qui à leur tour sont entourés d'accolades ({ et }).

REMARQUE: Spécifiez le RE selon le POS requis

VB signifie le verbe POS. Le point qui suit le VB signifie qu'il correspond à n'importe quel caractère qui suit VB. Le point d'interrogation après le point spécifie que tout caractère après B ne doit apparaître qu'une seule fois ou ne doit pas apparaître du tout. Or, d'après le tableau que nous avons vu précédemment, ce caractère est facultatif. Nous avons encadré l'expression régulière de cette manière car, en NLTK, les expressions verbales incluent les balises POS suivantes :

POS

Sens

VB

Verbe à sa forme de base

VDB

verbe au passé

VBG

verbe au présent

VBN

verbe à sa forme participe passé

VBP

Verbe au présent mais pas à la troisième personne du singulier

VBZ

Verbe au présent et à la troisième personne du singulier

Ainsi, les phrases verbales peuvent appartenir à l'un des POS ci-dessus. C'est pourquoi l'expression régulière est encadrée comme VB.? qui comprend toutes les catégories ci-dessus. Le package RegexpParser est utilisé pour vérifier si un POS satisfait à notre modèle requis que nous avons mentionné précédemment en utilisant le RE.

Le code complet peut être vu comme suit :

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Rama a tué Ravana pour sauver Sita de Lanka. La légende du Ramayan est l'épopée indienne la plus populaire. De nombreux films et séries ont déjà été tournés en plusieurs langues ici en Inde sur la base du Ramayana. """ tokenized=nltk.sent_tokenize(sample_text) for i in tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram =r"""VB: {}""" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

Résultats

résultat de fractionnement
résultat de fractionnement

Enfin, nous obtenons une forme arborescente du POS des mots avec les mots dont le POS correspond au RE donné. L'instantané de la sortie obtenue pour l'échantillon de texte que nous avons passé peut être vu dans les figures ci-dessus.

Observez que les mots qui satisfont notre RE pour les phrases verbales seules sont clairement mis en évidence dans la sortie. Par conséquent, le découpage des phrases verbales a été effectué avec succès.

J'espère que vous avez trouvé mon article utile.

Merci !

Bibliographie

1. Implémentation du découpage en Python

2. Théorie derrière le découpage

3. Liste complète des points de vente disponibles en PNL

A Propos

Je suis Nithyashree V, étudiante en dernière année de BTech en informatique et en ingénierie. J'aime apprendre des technologies aussi cool et les mettre en pratique, en particulier en observant comment elles nous aident à résoudre les problèmes difficiles de la société. Mes domaines d'intérêt incluent l'intelligence artificielle, la science des données et le traitement du langage naturel.

Voici mon profil LinkedIn : Mon LinkedIn

Vous pouvez lire mes autres articles sur Analytics Vidhya à partir de ici.

Les médias présentés dans cet article n'appartiennent pas à Analytics Vidhya et sont utilisés à la discrétion de l'auteur.

Source : https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

Horodatage:

Plus de Analytique Vidhya