NLP (обробка натуральної мови)
Ця робота є посібником з обробки текстів французькою мовою,

Ця стаття познайомить вас з основним словниковим запасом та запропонованим робочим процесом для побудови програм NLP, щоб допомогти вам розпочати найпоширеніші завдання, такі як аналіз настроїв, розпізнавання сутності, вбудовування слів та переклад. Автоматичне ... тощо.
Загалом він складається з 4 статей
Класифікація NLP (обробка природних мов) - машинне навчання 2
У попередній статті,
medium.com
NLP (обробка натуральної мови) Робочий процес класифікації тексту (візьміть n-грами як введення)
__ЧАСТИНА 3
medium.com
Сучасний аналіз тексту тепер дуже доступний за допомогою Python та інструментів з відкритим кодом, які дозволяють вам навчитися аналізувати текстові дані. Ця стаття пояснює поняття обробки природної мови (NLP) та аналізу тексту. Ми коротко розглянемо різні етапи попередньої обробки.
Текстові дані, формати яких переважно неструктуровані. Неструктуровані дані не можуть бути представлені у вигляді таблиці. Тому дуже важливо перетворити його на числову функціональність, оскільки більшість алгоритмів машинного навчання здатні обробляти лише числа. Більший акцент буде зроблено на таких кроках, як токенізація, стемінг, лематизація та припинення видалення слів. Ви також дізнаєтесь два популярні методи вилучення функцій: мішок слів та TFIDF, а також різні методи створення нових функцій із існуючих функцій.
Перш ніж розпочати цю статтю, ми встановимо scikit-learn та інші (просторі) бібліотеки, використані в цій статті. Ви знайдете кроки для їх встановлення тут:
- pip install -U spacy
- pip встановити scikit-learn
Здебільшого текстові дані не можна використовувати як є. Це пов’язано з тим, що наявність різних невідомих символів або посилань робить його непридатним для використання. Очищення даних - це мистецтво витягувати значущі частини даних, видаляючи непотрібні деталі. Різні символи, такі як “_/\ _” та “:),”. Ці символи, наприклад, вони мало сприяють його значенню. Нам потрібно видалити ці небажані деталі. Це робиться не лише для того, щоб більше зосередитись на фактичному змісті, а й для зменшення розрахунків. Для досягнення цього використовуються такі методи, як токенізація та стемінг. .Ми детально обговоримо різні завдання попередньої обробки та продемонструємо їх на прикладах.
Отримавши речення, розбиття його на символи або слова називається токенізацією. Існують бібліотеки, такі як spaCy, які пропонують комплексні рішення для токенізації.
Токенізація тексту реченнями.
[Це 1 перше речення. ', „Тоді я пишу друге.“, Нарешті, ось третє, без великих літер “]]
Токенізація тексту лексемами.
['Це', 'є', '1', 'перший', 'речення', '.', 'Потім', 'j' ',' у ',' написати ',' один ',' другий ', '.', 'for', 'finish', 'in', 'here', 'one', 'third', 'without', 'put', 'of', 'velika літера']
Перетворення тексту в символи
Функція списку в Python приймає рядок і перетворює його в список окремих символів. Це перетворює текст у символи. Наступний блок коду показує використаний код.
Обробка великих обсягів тексту
Якщо вам потрібно обробити велику кількість текстів і створити кілька об’єктів Doc поспіль, метод nlp.pipe може значно пришвидшити цю операцію. Він обробляє тексти як потік і генерує об'єкти Doc. Це набагато швидше, ніж виклик nlp для кожного тексту.
[['Це', 'є', '1', 'перший', 'речення', '.'], ['Потім', 'j' ',' en ',' write ',' a ',' другий ','. '], [' для ',' закінчити ',' у ',' вуаля ',' один ',' третій ',' без ',' поставити ',' з ',' верхній регістр ']]
Стоп-слова - це загальновживані слова, які просто використовуються для полегшення побудови речень. Оскільки вони трапляються дуже часто, і їх наявність не має великого впливу на зміст речення, їх слід видалити. "Стоп-слова" встановлюються як списки слів. Ці списки зазвичай доступні в книгарні, яка називається spacy, і багатьма різними мовами.
Не існує універсального списку термінів для кожної мови, більша частина цього залежить від варіанту використання та типу результатів, які ви очікуєте. Загалом, це список найпоширеніших слів у мові. За допомогою зупинних слів spaCy дуже легко ідентифікувати кожен маркер має атрибут IS_STOP, що дозволяє нам знати, чи є це слово порожнім чи ні. Ми також можемо додати власні слова зупинки до списку слова зупинки.
Таким чином ми отримуємо доступ до списків французькою мовою.
Кількість стоп-слів: 600
Перші десять слів із зупинкою: [п'ятдесятий ',' тести ', накладає', відтворює ', різні', 'n' ',' звичайно ', зараз', після ',' les ']
Видалити слова зупинки
Оригінальний текст: [„Це 1 перше речення.“, „Тоді я пишу друге.“, „Нарешті ось третє, без великих літер“]]
текст без стоп-слів: [[1, речення,], [написати, друге,.], [закінчити, поставити, велика літера]]
Додайте власні слова зупинки
Оригінальний текст: [„Це 1 перше речення.“, „Тоді я пишу друге.“, „Нарешті ось третє, без великих літер“]]
текст без слів зупинки: [[‘речення’], [запис ’,‘ друге ’], [закінчення’, покласти ’, великі літери’]]
Деякі слова пишуться, вимовляються та подаються по-різному, наприклад, Мумбаї та Бомбей, а також США та США. Хоча вони різні, вони означають одне і те ж. Існують також різні форми слів, які потрібно перетворити на основні форми. Наприклад, такі слова, як «зроблено» та «fesait», перетворюючись у свою основну форму, стають «робити». Потім, нормалізація тексту - це процес, при якому різні варіанти тексту перетворюються у стандартну форму. Нам потрібно зробити нормалізацію тексту, оскільки деякі слова можуть означати одне і те ж. Існують різні способи нормалізації тексту, такі як перевірка орфографії, стемінг та лематизація. Для кращого розуміння цієї теми ми розглянемо практичне впровадження.
[['this', 'is', '1', 'first', 'пропозиція', '.'], ['then', “j '”,' en ',' write ',' a ',' другий ','. '], [' для ',' закінчити ',' у ',' вуаля ',' один ',' третій ',' без ',' поставити ',' з ',' верхній регістр ']]
Ми хочемо замінити "США" на "США", а "18" на "2018". Для цього ми використовуємо функцію replace
Якщо вам потрібно зіставити великі списки термінології, ви також можете використовувати об’єкти PhraseMatcher просторість для перетворення загальних багатослівних виразів у прості елементи
"Нью-Йорк" ==> “Нью-Йорк” що набагато ефективніше.
['', 'Ангела Меркель', 'та', 'the', 'президент', 'Американець', 'Барак Обама', 'є', 'до', 'the', 'всередині', 'of', 'the', 'House', 'White', 'at', 'Washington, DC']
Оскільки spaCy використовується для обробки шаблонів та відповідності тексту, вам не доведеться турбуватися про конкретну токенізацію
Стеммінг та лематизація
У таких мовах, як французька та англійська, слова трансформуються у різні форми, коли вживаються у реченні. Наприклад, слово "продукт" може перетворитися на "виробництво", коли йдеться про виробничий процес, або перетворитися на "продукція" у множині.
Наприклад, слова “сказати”, “сказати” та “сказати” - це все приблизно однакова інформація для нас, крім граматичних відмінностей. наші результати не призводять до єдиного подання цих слів.
Для досягнення цього існують дві популярні методики: стем і лематизація.
Штампування зазвичай передбачає розрив кінця слова, дотримуючись кількох основних правил. Наприклад, слова сказати, сказати, і сказав, все стане "сказати".
Стемінг без контексту і не покладається на частину мови, щоб приймати рішення.
лематизація, натомість виконує морфологічний аналіз для пошуку кореневого слова. Що стосується нас, нам не потрібно турбуватися про те, де ми щойно взяли наші ключові слова, а просто отримати їх у SpaCy, лематизована форма слова доступна з атрибутом. лема_.
Тепер, маючи те, що ми знаємо, ми можемо виконати базову попередню обробку.
Давайте очистимо наші дані: ми хотіли б позбутися стоп-слів, цифр і перетворити наш рядок у список, щоб ми могли використовувати його пізніше
Використання атрибутів. is_stop, is_punct та w. like_num, ми могли б видалити частини речення, які нам не потрібні. Обов’язково зауважте, що ми додали до речення матризовану форму слова, через яке ми отримали доступ. лема_. Крім того, ми можемо чи не видаляти слова залежно від нашого випадку використання. У нашому прикладі цифри вважаються не важливою інформацією, але в деяких випадках це може бути. Наприклад, ми можемо захотіти видалити з речення всі дієслова, і в цьому випадку ми можемо просто перевірити POS-тег цього конкретного маркера.
Ми бачили, як текст можна зобразити символами та словами. Іноді допомагає поглянути на два, три або більше слів разом. N-грами - це групи слів, вилучених із заданого тексту.
Наприклад, розгляньте фразу: "Я не ненавиджу тебе, але ненавиджу твою поведінку".
Тут, якщо ми розглянемо кожен з лексем, таких як "ненависть" та "поведінка", окремо, тоді справжнє значення речення не буде зрозуміле. У цьому випадку важливим стає контекст, у якому присутні ці лексеми.
Таким чином, ми розглядаємо n послідовних лексем одночасно. У n-грамі n означає кількість слів, які можна використовувати разом. Давайте розглянемо приклад того, як виглядає біграма (n = 2). Ми використали пакет Python nltk для створення біграми.
Давайте розберемося у видобуванні особливостей на реальних прикладах. Особливості представляють характеристики людини або речі. Ці характеристики можуть або не можуть однозначно представляти людину чи річ. Наприклад, загальних характеристик людини, таких як кількість вух, рук і ніг, як правило, недостатньо для однозначної ідентифікації людини. Але такі функції, як відбитки пальців та послідовності ДНК, можуть бути використані для чіткого розпізнавання цієї людини. Подібним чином, під час вилучення функцій ми намагаємось витягти атрибути з текстів, які однозначно представляють ці тексти. Алгоритми машинного навчання беруть лише цифрові характеристики як вхідні дані, тому ви повинні представляти текст у цифровому поданні.
Процес перетворення цифрового подання тексту називається векторизацією і може здійснюватися різними способами, як показано тут:
- Перетворіть текст у слова і подайте кожне слово як вектор
- Перетворіть текст у символи і представіть кожен символ як вектор
- Створіть n-грам слів і представіть їх як вектори
Модель Bag of Word - це, мабуть, найпростіша форма представлення речення як вектора. Почнемо з прикладу:
- S1: “Собака сидів біля килима”.
- S2: «Кішка любить собаку. “
Якщо ми виконаємо ті самі кроки попередньої обробки, що й у розділі Попередня обробка, ми отримаємо такі речення.
Якщо ми хочемо представити це як вектор, спочатку ми повинні створити свій словниковий запас, який буде унікальними словами, які ми знаходимо у реченнях. Наш словниковий вектор тепер такий:
Це означає, що наше подання наших речень також буде векторами довжиною 5, ми також можемо сказати, що наші вектори будуть мати 5 вимірів. Ми також можемо думати про узгодження кожного слова в нашому словниковому запасі з номером (або покажчиком), на який ми можемо посилатись у своєму словниковому запасі як словник.
Мішок моделі слів передбачає використання частот слів для побудови наших векторів. Як будуть виглядати наші речення зараз?
S1: [1, 0, 1, 1, 0]
S2: [0, 1, 1, 0, 1]
Зрозуміти це досить просто: у обох реченнях є 1 поява собаки, а в першому реченні - 0 випадків слова „подобається”, тому відповідні індекси отримують значення на основі частоти слова. Якщо у першому реченні є два входження слова собака, це буде представлено наступним чином .
Важливою характеристикою мішка моделі слів, яку ми повинні пам’ятати, є те, що це менш упорядковане подання, воно не враховує порядок слів. Ми не знаємо, які слова були першими. Це призводить до втрати просторової інформації, а отже, і семантичної інформації. Однак у багатьох алгоритмах порядок слів не важливий, і достатньо лише входження слів.
Для початку, спам-фільтр є прикладом використання моделі "мішок слів": електронні листи, які вважаються спамом, можуть містити слова, пов'язані зі спамом, такі як покупка, гроші та дії. Ми можемо використовувати байєсівську ймовірність, щоб визначити, чи вірогідніше, що пошта є спамом чи ні. Це працює, оскільки, як ми вже бачили раніше, у цьому випадку порядок слів не має значення. .
Раніше ми розглядали модель "мішок слів". У цієї моделі є серйозний недолік. Частота появи маркера не повністю відображає кількість інформації, яку він містить про документ. Це пов’язано з тим, що термін, який з’являється кілька разів у багатьох реченнях, не передає багато інформації. Рідкісні терміни можуть містити значно більше інформації про речення, в яких вони знайдені.
TF-IDF дозволяє виділити відносну важливість кожного слова 𝑚 (або пар послідовних слів) у тексті 𝑑. Функція 𝑇𝐹 (𝑚, 𝑑) підраховує кількість повторень слова 𝑚 в описі 𝑑. Функція 𝐼𝐷𝐹 (𝑚) вимірює важливість терміна в цілому документі, надаючи більшої ваги менш рідкісним термінам, оскільки вони вважаються найбільш дискримінаційними (мотивація подібна до мотивації метрики chi2 в аналізі відповідності). 𝐼𝐷𝐹 (𝑚, 𝑙) = журнал (𝐷/𝑓 (𝑚)), де 𝐷 - кількість документів, розмір навчальної вибірки та 𝑓 (𝑚) кількість документів або описів, що містять слово 𝑚. Нова змінна або функції - 𝑉𝑚 (𝑙) = 𝑇𝐹 (𝑚, 𝑙) × 𝐼𝐷𝐹 (𝑚, 𝑙).
Існує два популярних підходи до зіставлення згенерованих токенів до цифрових векторів, які називаються одноразовим кодуванням. та вкладання слів. Про ці методи я розповім у наступній статті. Ми також обговоримо різні переваги та недоліки кожного методу.
Технологія проектування - це метод вилучення нових функціональних можливостей із існуючих функціональних можливостей. Ці нові функції витягуються, оскільки вони, як правило, ефективно пояснюють мінливість даних. Застосування Feature Engineering може бути для обчислення подібності різних фрагментів тексту. Існують різні способи обчислення подібності між двома текстами. Найпопулярнішими методами є подібність косинусів та подібність Жаккарда.
Подібність косинуса між двома текстами - це косинус кута між їх векторними поданнями. Матриці BoW та TF-IDF можна розглядати як векторні подання текстів
це співвідношення між кількістю загальних термінів між двома текстовими документами та загальною кількістю унікальних термінів, присутніх у цих текстах.
У цій статті ми вивчили різні кроки для обробки неструктурованих текстових даних. Текстові дані, як правило, брудні, їх потрібно очистити та попередньо обробити. Етапи попередньої обробки в основному складаються з: токенізації, стемінгу, лематизації та зупинки видалення слів. Після попередньої обробки функції витягуються з текстів за допомогою різних методів, таких як Bog of word та TF-IDF. Цей крок перетворює неструктуровані текстові дані у структуровані числові дані. Нові функції створюються з існуючих функцій за допомогою техніки, яка називається Feature Engineering.
У наступній статті ви ознайомитеся з деякими основними практичними прийомами машинного навчання для вирішення проблем класифікації тексту. Ось що ви дізнаєтесь: