- •Мета робота
- •Короткі теоретичні відомості
- •Використання регулярних виразів для виявлення слів за заданими шаблонами.
- •Використання основних метасимволів (операторів повтору).
- •Застосування регулярних виразів
- •Виявлення фрагментів слів
- •Обробка фрагментів слів
- •Встановлення основ слів (стемінг)
- •Пошук у токенізованому тексті
- •Використання регулярних виразів для токенізації тексту
- •Найпростіший токенізатор
- •Токенізатор на основі регулярних виразів в nltk
- •Проблеми токенізації тексту
- •Порядок виконання роботи
- •Інтернет посилання
- •Методичні вказівки
Встановлення основ слів (стемінг)
Для обробки мови часто буває необхідно опустити закінчення слів і працювати тільки з їх основами. Існують різні способи встановлення основи слова. Найпростіший спосіб, це відкидання будь-яких послідовностей, які нагадують суфікс.
|
В попередній лабораторній роботі були розглянуті програми для здійснення стемінгу. Подібну програму можна розробити використовуючи регулярні вирази. Спочатку потрібно розробити вираз з диз’юнкцією де записати всі суфікси і використати круглі дужки для вказання області дії операції диз’юнкції.
|
Тут, re.findall() знаходить тільки суфікс, хоча регулярний вираз відповідає всьому слову. Це сталося тому, що круглі дужки задають не тільки область дії оператора диз’юнкції але і виконують функцію вибору підстрічки яку потрібно вилучити. Коли потрібно в регулярному виразі використовувати круглі дужки для вказання області дії оператор,а але не потрібно здійснювати вилучення в регулярний вираз потрібно додати ?: , так як у наступному прикладі.
|
Оскільки, потрібно поділити слово на основу і суфікс та показати ці частини, то доцільно їх виділити в регулярному виразі за допомогою круглих дужок:
|
Спробуємо аналогічно обробити інше слово, наприклад , processes:
|
Регулярний вираз помилково знайшов суфікс -s замість суфікса -es . Оператор * в частині виразу «.*» приводить до поглинання максимальної кількості символів. Доцільно використати вираз *?, який дозволяє уникнути цього ефекту:
|
Даний регулярний вираз працює навіть зі словами з відсутнім суфіксом:
|
Звичайно цей підхід має ще багато інших проблем. Для їх виявлення розроблена функція для здійснення операції стемінгу. Використовуючи цю функцію можна опрацьовувати довільний текст:
|
Потрібно зазначити, що регулярний вираз видалив s не тільки зі слова ponds а також зі слів is та basis. Також утворені слова невластиві мові distribut та deriv, хоча ці основи прийнятні для певного застосування .