
- •Міністерство освіти і науки україни
- •Укладачі: Романюк а. Б., канд. Техн. Наук, ст. Викладач
- •Використання основних метасимволів (операторів повтору).
- •Застосування регулярних виразів
- •Виявлення фрагментів слів
- •Обробка фрагментів слів
- •Встановлення основ слів (стемінг)
- •Пошук у токенізованому тексті
- •Використання регулярних виразів для токенізації тексту
- •Найпростіший токенізатор
- •Токенізатор на основі регулярних виразів в nltk
- •Проблеми токенізації тексту
- •Порядок виконання роботи
- •Зміст звіту
- •Інтернет посилання
- •Методичні вказівки
- •Укладачі: Романюк Андрій Богданович
Застосування регулярних виразів
Вираз re.search(regexp, w) дозволяє знаходити слова w , які відповідають регулярному виразу regexp . Регулярні вирази також можна використовувати для виявлення фрагментів слів, або для модифікації слів різними способами.
Виявлення фрагментів слів
Метод re.findall() ("знайти всеl") дозволяє знайти всі відповідності даному регулярному виразу. В наступному прикладі показано знаходження та підрахунок всіх голосних:
|
Подібним способом можна знайти та побудувати частотний розподіл для послідовностей з двох і більше голосних в довільному тексті:
|
Виконати самостійно. Замініть символ ? у регулярному вразі у виразі [int(n) for n in re.findall(?, '2009-12-31')] для представлення стрічки з датою '2009-12-31' у вигляді списку [2009, 12, 31].
Обробка фрагментів слів
Використавши re.findall() для виявлення фрагментів слів, можна спробувати обробляти ці фрагменти різними способами.
Існує думка що англійска мова є надлишкова, оскільки текст зручно читати навіть опустивши у словах всі внутрішні голосні. Наприклад у словах, declaration - dclrtn, та inalienable - inlnble, залишились голосні тільки на початку та у кінці слова. Регулярний вираз у наступному виразі встановлю відповідність до початкових послідовностей голосних, кінцевих послідовностей голосних та всіх приголосних всі інші символи ігноруються. Метод re.findall() використовується для виявлення фрагментів слів а метод ''.join() для їх поєднання.
|
В наступному прикладі показано спільне використання регулярного виразу та умовного частотного розподілу. В програмі зі слів мовою Rotokas вилучаються всі послідовності приголосна – голосна. Оскільки вилучаються пари то на їх основі можна побудувати умовний частотний розподіл і представити його у вигляді таблиці:
|
Переглянувши рядки s та t, бачимо що ці приголосні утворюють цілком окремі фонеми в цій мові. Літеру s можна видалити з абетки Rotokas і записати правило що літера t вимовляється як s перед i. (Тільки одне слово kasuari містить su, оскільки це запозичення з англійської, 'cassowary' ).
Для перегляду слів , які відповідають тим чи іншим послідовностям приголосна – голосна зручно побудувати структуру де слова згруповані за тими послідовностями, які в них зустрічаються. Цього можна досягнути наступним чином:
|
В цій програмі обробляється кожне слово, для якого здійснюється пошук підстрічок, які відповідають регулярному виразу «[ptksvr][aeiou]». У випадку слова kasuari, будуть знайдені ka, su та ri і список cv_word_pairs буде містити ('ka', 'kasuari'), ('su', 'kasuari') та ('ri', 'kasuari'). Наступний крок це за допомогою nltk.Index(), перетворення цього списку до вигляду: defaultdict(<type 'list'>, {'va': ['kaaova', 'Kaareva', 'kaava', 'kaavaaua', 'kakuva', 'kapaava', 'karaava', 'karaova',…...