Exploitez des données textuelles

Brought by: OpenClassrooms

Overview

Bienvenue dans ce cours de traitement du langage naturel ! L’objectif de ce cours est de comprendre les méthodes qui permettent de transformer le texte en features exploitables par des algorithmes de machine learning classiques, et les architectures et modèles qui correspondent le mieux à ce type de données. En l’occurence un ensemble de documents texte non-structurés.

Ce cours est donc divisé en 3 parties : une première qui traite de l'exploration, du nettoyage et de la normalisation du texte. Une seconde partie est dédiée au différents types de transformations qui vont nous permettre de mieux comprendre nos données textuelles et de créer des features que nous pourrons utiliser dans les algorithmes classiques de machine learning. La dernière partie sera consacrée à la classification du texte à l'aide de l'apprentissage automatique.

Prérequis :

Ce cours fait partie du parcours Data Scientist. Il se situe au croisement des mathématiques et de l'informatique. Pour en profiter pleinement, n'hésitez pas à vous rafraîchir la mémoire, avant ou pendant le cours, sur :

  • Python pour le calcul numérique (numpy) et la création de graphiques (pyplot), que nous utiliserons dans les parties TP du cours,
  • Quelques notions d'algèbre linéaire : manipulation de vecteurs, multiplications de matrices, normes, et valeurs/vecteurs propres,
  • Quelques notions de probabilités et statistiques, telles que distribution de loi de probabilité et variance
  • Les modèles non-supervisées permettront de modéliser des features automatiquement à partir du texte
  • Les modèles supervisées non-linéaires sont indispensables au traitement du texte, notamment les réseaux de neurones séquentiels

Syllabus

Part #1 - Traitez des données textuelles
1. Explorez des données texte
2. Nettoyez et normalisez des données texte
Activity: Effectuez un nettoyage et une analyse exploratoire de données texte

Part #2 - Transformez des données textuelles
1. Représentez votre corpus en "bag of words"
2. Effectuez des plongements de mots (word embeddings)
3. Modélisez des sujets avec des méthodes non superviséesQuiz: Partie 2

Part #3 - Effectuez une classification de données textuelles
1. Opérez une première classification naïve de sentiments
2. Allez plus loin dans la classification de mots
3. Traitez le langage à l'aide de réseaux de neurones
Activity: Classifiez du texte

Taught by

Yannis Chaouche

Exploitez des données textuelles
Go to course

Exploitez des données textuelles

Brought by: OpenClassrooms

  • OpenClassrooms
  • Free
  • French
  • Certificate Available
  • Available at any time
  • All
  • N/A
8.1.2PHP Version235msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (149ms)
    • Application (85.4ms)
    • 1 x Booting (63.34%)
      148.58ms
      1 x Application (36.41%)
      85.40ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed5.21ms
      • select * from `courses` where `slug_en` = 'exploitez-des-données-textuelles' limit 1
        4.07ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. exploitez-des-données-textuelles
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-04-09 11:55:13' where `id` = 1934
        310μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-09 11:55:13
        • 1. 1934
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (36)
        260μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        170μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (36) and `providers`.`deleted_at` is null
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 1925 limit 1
        210μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 1925
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        cKOVnryS4MOKcuAAO8hSSRnVvJO7VWd3I9abqUrB
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/exploitez-des-donn%C3%A9es-textuelles" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/exploitez-des-donn%C3%A9es-textuelles
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "3.16.109.195" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "92d9d06e5c5d233b-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "x-forwarded-for" => array:1 [ 0 => "3.16.109.195" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "3.16.109.195" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "92d9d06e5c5d233b-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "3.16.109.195" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "33594" "REMOTE_ADDR" => "172.71.255.135" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/exploitez-des-donn%C3%A9es-textuelles" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1744199713.2707 "REQUEST_TIME" => 1744199713 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Wed, 09 Apr 2025 11:55:13 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImlhUHpuK0cwMGRLRkNwbTFPV1Fka3c9PSIsInZhbHVlIjoiRlFhUWxhNFRyczBjUEFXK1VDQXEvU3VDWGVlREgzM3hMNnc5YUsxYkFxSjdKSHpzaDZSejNBSk5kYjhyTHRUd0o0MCtFcnZpbytMbEZ1UHA1MDd6UzJYVTFjN2ljR2V1YStNb2dTVjFwSTkySHk3NTBTa014YUx6WENteVMrbm4iLCJtYWMiOiI1MWQwN2ZiODhmOWM2MDczYjY4YWI2MjYwOGM2NzNhNDlhNDkxMGFlNWZmZTMyM2E0NmE2YzBhNGEzZjc1ZTBlIiwidGFnIjoiIn0%3D; expires=Wed, 09 Apr 2025 13:55:13 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImlhUHpuK0cwMGRLRkNwbTFPV1Fka3c9PSIsInZhbHVlIjoiRlFhUWxhNFRyczBjUEFXK1VDQXEvU3VDWGVlREgzM3hMNnc5YUsxYkFxSjdKSHpzaDZSejNBSk5kYjhyTHRUd0o0MCtFc" 1 => "laravel_session=eyJpdiI6IlpSaWM4dHZIbnoyLzhVU0tLQ1hyQUE9PSIsInZhbHVlIjoiT3Z5dWFGNlk4M1c4UUxPUElLbHRDdGRxbk5rSjAzanNVejE3aFN2cE5WVjNjSzlRcmJWTFRyUG0xRVl1K3V6WmJBN0ZjSkExeHl2eEhtUFVmUGEwQWJRN0pYYnJGY0MzckQxSU03MUJSdkNmQlU0eHhmcjB1MHdUaDZab3pDeWoiLCJtYWMiOiJiOWQ5MWVkMjAwZjlhOWU2NzY3MDdjMDlmZGEzMjIyYTAwNGIyNWRmMDVjMDgwYWNhYTEyOGExZDVlYzIyMmY3IiwidGFnIjoiIn0%3D; expires=Wed, 09 Apr 2025 13:55:13 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IlpSaWM4dHZIbnoyLzhVU0tLQ1hyQUE9PSIsInZhbHVlIjoiT3Z5dWFGNlk4M1c4UUxPUElLbHRDdGRxbk5rSjAzanNVejE3aFN2cE5WVjNjSzlRcmJWTFRyUG0xRVl1K3V6WmJB" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImlhUHpuK0cwMGRLRkNwbTFPV1Fka3c9PSIsInZhbHVlIjoiRlFhUWxhNFRyczBjUEFXK1VDQXEvU3VDWGVlREgzM3hMNnc5YUsxYkFxSjdKSHpzaDZSejNBSk5kYjhyTHRUd0o0MCtFcnZpbytMbEZ1UHA1MDd6UzJYVTFjN2ljR2V1YStNb2dTVjFwSTkySHk3NTBTa014YUx6WENteVMrbm4iLCJtYWMiOiI1MWQwN2ZiODhmOWM2MDczYjY4YWI2MjYwOGM2NzNhNDlhNDkxMGFlNWZmZTMyM2E0NmE2YzBhNGEzZjc1ZTBlIiwidGFnIjoiIn0%3D; expires=Wed, 09-Apr-2025 13:55:13 GMT; path=/XSRF-TOKEN=eyJpdiI6ImlhUHpuK0cwMGRLRkNwbTFPV1Fka3c9PSIsInZhbHVlIjoiRlFhUWxhNFRyczBjUEFXK1VDQXEvU3VDWGVlREgzM3hMNnc5YUsxYkFxSjdKSHpzaDZSejNBSk5kYjhyTHRUd0o0MCtFc" 1 => "laravel_session=eyJpdiI6IlpSaWM4dHZIbnoyLzhVU0tLQ1hyQUE9PSIsInZhbHVlIjoiT3Z5dWFGNlk4M1c4UUxPUElLbHRDdGRxbk5rSjAzanNVejE3aFN2cE5WVjNjSzlRcmJWTFRyUG0xRVl1K3V6WmJBN0ZjSkExeHl2eEhtUFVmUGEwQWJRN0pYYnJGY0MzckQxSU03MUJSdkNmQlU0eHhmcjB1MHdUaDZab3pDeWoiLCJtYWMiOiJiOWQ5MWVkMjAwZjlhOWU2NzY3MDdjMDlmZGEzMjIyYTAwNGIyNWRmMDVjMDgwYWNhYTEyOGExZDVlYzIyMmY3IiwidGFnIjoiIn0%3D; expires=Wed, 09-Apr-2025 13:55:13 GMT; path=/; httponlylaravel_session=eyJpdiI6IlpSaWM4dHZIbnoyLzhVU0tLQ1hyQUE9PSIsInZhbHVlIjoiT3Z5dWFGNlk4M1c4UUxPUElLbHRDdGRxbk5rSjAzanNVejE3aFN2cE5WVjNjSzlRcmJWTFRyUG0xRVl1K3V6WmJB" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "cKOVnryS4MOKcuAAO8hSSRnVvJO7VWd3I9abqUrB" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/exploitez-des-donn%C3%A9es-textuelles" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]