4707

Вивчення основ програмування на мові Python. Регулярні вирази для обробки текстів

Лабораторная работа

Информатика, кибернетика и программирование

Вивчення основ програмування на мові Python. Використання регулярних виразів для обробки текстів Короткі теоретичні відомості Синтаксис регулярних висловів залежить від інтерпретатора, що використовується для їх обробки. Пошук слів із за...

Украинкский

2012-11-25

256.5 KB

14 чел.

  •  Вивчення основ програмування на мові Python.
  •  Використання регулярних виразів для обробки текстів

Короткі теоретичні відомості

Синтаксис регулярних висловів залежить від інтерпретатора, що використовується для їх обробки. Пошук слів із закінченням ed можна здійснити використовуючи регулярний вираз «ed$». Потрібно використати функцію re.search(p, s), яка перевіряє чи може зразок p бути знайдений у будь-якому місці стрічки s. Потрібно визначити символи, які шукаємо та використати символ долара , який в регулярних виразах позначає кінець слова:

Символ ”.” універсальний символ , якому відповідає будь-який один символ. Нехай потрібно знайти слова з восьми літер, де  j – третя літера та t – шоста літера. При створенні регулярного виразу у місцях де може бути будь-який символ вказується крапка. Символ ”^” вказує на початок стрічки:

Символ “ ? “ вказує на те що попередній символ не є обовязковим. Вираз «^e-?mail$» відповідає двом стрічкам email та e-mail. Можна знайти загальну кількість таких стрічок (врахувавши різні способи їх запису) у будь-якому тексті скориставшись sum(1 for w in text if re.search('^e-?mail$', w)).

Вираз re.search(regexp, w) дозволяє знаходити слова  w , які відповідають регулярному виразу regexp . Регулярні вирази також можна використовувати для виявлення фрагментів слів, або для модифікації слів різними способами.

Метод re.findall() ("знайти всеl") дозволяє знайти всі відповідності даному регулярному виразу. В наступному прикладі показано знаходження та підрахунок всіх голосних:

Тут, re.findall() знаходить тільки суфікс, хоча регулярний вираз відповідає всьому слову. Це сталося тому, що круглі дужки задають не тільки область дії оператора диз’юнкції але і виконують функцію вибору підстрічки яку  потрібно вилучити. Коли потрібно в регулярному виразі використовувати круглі дужки для вказання області дії оператор,а але не потрібно здійснювати вилучення в регулярний вираз потрібно додати ?: , .

Спеціальний тип регулярних виразів може використовуватися  для пошуку серед слів у тексті (текст – послідовність окремих слів). Наприклад, за допомогою виразу "<a> <man>" можна знайти всі випадки вживання  a man в тексті. Кутові дужки використовуються для позначення меж і всі пробіли мід цими дужками ігноруються (індивідуальна особливість  NLTK's findall() методу для тексту). В наступному прикладі включено  <.*> #1 для виявлення всіх окремих слів, а круглі дужки дозволять вибрати ці слова окремо від словосполучень ( a monied man). Інший приклад дозволяє знайти всі словосполучення з трьох слів де останнє слово  bro #2.

Хід роботи

  1.  Описати, які класи стрічок відповідають наступному регулярному виразу. [a-zA-Z]+. Результати перевірити використовуючи nltk.re_show()

              import nltk, re, pprint 

             f = open('Corpus.txt')

raw = f.read()

            nltk.re_show('[a-zA-Z]+', raw) 

шукаємо всі слова, які складаються з малих та великих літер англійського алфавіту

Слова, в яких є повторення будь-якої літери один або більше разів.

  1.  Описати, які класи стрічок відповідають наступному регулярному виразу. [A-Z][a-z]*. Результати перевірити використовуючи   nltk.re_show()

import nltk, re, pprint

f = open('Corpus.txt')

raw = f.read()

nltk.re_show('[a-zA-Z]*', raw)

шукаємо послідовності символів, що починаються з великої літери англійського алфавіту

  1.  Описати, які класи стрічок відповідають наступному регулярному виразу. \d+(\.\d+)?. Результати перевірити використовуючи nltk.re_show()

import nltk, re, pprint

f = open('Corpus.txt')

raw = f.read()

nltk.re_show('\d+(\.\d+)?', raw)

шукаємо послідовності символів, що складаються з цифр, які пвторюються з 1 і більше разів; (\.\d+)? – послідовність цифр після крапки не є обов’язковою

  1.  Описати, які класи стрічок відповідають наступному регулярному виразу. ([^aeiou][aeiou][^aeiou])*. Результати перевірити використовуючи nltk.re_show()

import nltk, re, pprint

f = open('Corpus.txt')

raw = f.read()

nltk.re_show('([^aeiou][aeiou][^aeiou])*', raw)

шукаємо послідовності символів, що складаються з трьох символів, перший і третій з яких не є голосною, а другий – будь-яка голосна з набору [aeiou] і зустрічаються 0 і більше разів. Якщо послідовність не знайдено – виводиться {}

  1.  Описати, які класи стрічок відповідають наступному регулярному виразу. \w+|[^\w\s]+.. Результати перевірити використовуючи nltk.re_show()

import nltk, re, pprint

f = open('Corpus.txt')

raw = f.read()

nltk.re_show('\w+|[^\w\s]+.', raw)

шукаємо послідовності, що складаються з літер чи цифр, які повторюються 1 і більше разів

  1.  Описати, які класи стрічок відповідають наступному регулярному виразу. p[aeiou]{,2}t  Результати перевірити використовуючи nltk.re_show()

import nltk, re, pprint

f = open('Corpus.txt')

raw = f.read()

nltk.re_show('p[aeiou]{,2}t', raw)

шукаємо стрічки, які складаються з букви “p”, жодної, одної або двох голосних з набору і літери “t”.

  1.  Написати регулярний вираз, який встановлює відповідність наступному класу стрічок: всі артиклі (a, an, the).

import nltk, re

words = sorted(set(nltk.corpus.nps_chat.words()))

rez = [w for w in words if re.search('^(an?|the)$', w)]

print rez

['a', 'an', 'the']

  1.  Написати регулярний вираз, який встановлює відповідність наступному класу стрічок:арифметичний вираз з цілими значеннями і, який містить операції множення та додавання (2*3+8).

import nltk, re

f = open('Corpus.txt')

raw = f.read()

print 'TEXT:'

print

print raw

print 'RESULT:'

print re.findall(r"\d+[+|*]\d+[+|*]\d+", raw)

  1.  Зберегти довільний текст у файлі corpus.txt. Визначити функцію  для читання з цього файлу (назва файлу аргумент функції) і повертає стрічку, яка містить текст з файлу. Використовуючи nltk.regexp_tokenize() розробити токенізатор для токенізації різних типів пунктуації в цьому тексті. Використовувати багаторядковий запис регулярного виразу з коментарями та «verbose flag» 

import nltk,re

def MyLoad(fl,text):

   sl=''

   for line in fl:

       ls = line.strip()

       if text in ls:

           sl=ls

   print sl

f = open('Corpus.txt')

MyLoad(f,'and')

f = open('Corpus.txt')

raw = f.read()

print 'TEXT:'

print raw

print 'TOKENIZED TEXT'

     pattern = r'''(?x)    # set flag to allow verbose regexps

    ([A-Z]\.)+        # abbreviations, e.g. U.S.A.

  | \w+(-\w+)*        # words with optional internal hyphens

  | \$?\d+(\.\d+)?%?  # currency and percentages, e.g. $12.40, 82%

  | \.\.\.            # ellipsis

  | [][.,;"'?():-_`]  # these are separate tokens

'''

print nltk.regexp_tokenize(raw, pattern)

  1.  Написати функцію unknown(), яка приймає інтернет адресу як аргумент і повертає невідомі слова, які зустрічаються в тексті. При розробці функції використовувати re.findall() для виявлення всіх підстрічок та корпус Words Corpus (nltk.corpus.words) для виявлення не відомих слів.

import nltk, re

def unknown(text):

   wordlist = [w for w in nltk.corpus.words.words('en')]

   f = open(text)

   raw = f.read()

   print 'TEXT:'

   print raw

   print 'WORDS OF THE TEXT:'

   new_text = re.findall(r"[A-Za-z]+", raw)

   print new_text

   print

   print 'UNKNOWN WORDS:'

   for w in new_text:

       if w not in wordlist:

           print w

text='Corpus.txt'

unknown(text)

           

15. Прочитати Додаток А. Дослідити явища описані у Додатку А використовуючи корпуси текстів та метод findall()для пошуку в токенізованому тексті.

ВИСНОВКИ

   Під час виконання даної лабораторної роботи я вивчила основи програмування на мові Python, а також навчилась використовувати регулярні вирази для опрацювання текстів.


 

А также другие работы, которые могут Вас заинтересовать

74471. Методи педагогічних досліджень та можливості їх використання на практиці 125.5 KB
  Особливості проведення методу спостереження: сутність види методика. Основні поняття до теми: документ метод аналізу контентаналіз спостереження експеримент опитування; анкетування; інтерв’ю; тестування; графічні методи; статистичні методи. Метод аналізу документів на думку фахівців за популярністю поступається хіба що методам опитування чи спостереження. Часто він є основою для формування гіпотез які потім перевіряють методами опитування спостереження або експерименту.
74472. Вибірка у педагогічному дослідженні, її значення для дослідження 53.5 KB
  Значення методу вибірки у педагогічних дослідженнях. Вимоги до забезпечення якості та надійності вибірки. Основні поняття до теми: метод вибірки генеральна сукупність одиниця вибору репрезентативність ймовірність метод снігової кулі гніздова вибірка метод серійної вибірки серія стратифікована вибірка. Значення методу вибірки у педагогічних дослідженнях Метод вибірки – науково обґрунтований підхід що дає змогу робити висновки про об’єкт як ціле спираючись на дані аналізу лише окремих його ознак.
74473. ПЛАНИРОВАНИЕ СОЦИАЛЬНОГО РАЗВИТИЯ ПРЕДПРИЯТИЯ 55.5 KB
  ПЛАНИРОВАНИЕ СОЦИАЛЬНОГО РАЗВИТИЯ ПРЕДПРИЯТИЯ Во всех экономических системах главной производительной силой является человек персонал организаций. Чем выше человеческий капитал и потенциал его развития тем лучше он работает на благо своего предприятия. План социального развития современного предприятия содержит такие человеческие показатели и факторы как повышение доходов и качества жизни работников совершенствование трудового потенциала и социальной структуры персонала улучшение социальнотрудовых и жилищнобытовых условий работников...
74474. ОПЕРАТИВНО-ПРОИЗВОДСТВЕННОЕ ПЛАНИРОВАНИЕ 163.5 KB
  В процессе ОПП разрабатываются календарноплановые нормативы план выпуска продукции предприятия по месяцам года; оперативнокалендарные планы выпуска и графики производства узлов и деталей цехами участками по месяцам неделям суткам сменам иногда часам. Выполняются объемные расчеты загрузки оборудования и площадей; организуется сменносуточное планирование оперативный учет хода производства контроль и регулирование его диспетчирование. ОПП слагается из календарного планирования и оперативного регулирования хода производства –...
74475. ЭКОНОМИЧЕСКАЯ ОЦЕНКА ПЛАНОВ 54 KB
  Основными оценочными показателями эффективности плановой деятельности являются как абсолютные так и относительные значения затрат и результатов доходов и расчетов издержек и прибыли и других общеэкономических или внутрипроизводственных стандартов и нормативов. Наиболее важными планово-экономическими показателями являются эффект и эффективность стоимость и доходность. Эффект показывает степень достижения некоторого заданного результата и в общем виде представляет собой разность между...
74476. ИСПОЛЬЗОВАНИЕ В ПЛАНИРОВАНИИ ПРОГРАММНЫХ ПРОДУКТОВ 42 KB
  Современные персональные компьютеры способные поддерживать сложное графическое программное обеспечение и обрабатывать большие массивы планово-экономических данных могут применяться как для многопользовательских систем с несколькими рабочими станциями так и для обеспечения отдельных видов плановой деятельности. В системе автоматизированного планирования важнейшее значение имеет база данных представляющая собой пакет программ которые обеспечивают запоминание сортировку поиск объединение структуризацию информации на основе использования...
74477. СУЩНОСТЬ И ФУНКЦИИ ПЛАНИРОВАНИЯ В УПРАВЛЕНИИ 98.5 KB
  Предмет метод и задачи планирования В условиях рыночной экономики устойчивость и успех любого хозяйствующего субъекта может обеспечить только эффективное планирование его экономической деятельности. Сущность планирования в условиях рыночной экономики заключается в научном обосновании на предприятиях предстоящих экономических целей их развития и форм хозяйственной деятельности выбора наилучших способов их осуществления на основе наиболее полного выявления требуемых рынком видов объемов и...
74478. ПЛАНОВЫЕ РАСЧЕТЫ И ПОКАЗАТЕЛИ 86.5 KB
  Расчетные нормы и нормативы одновременно могут быть как абсолютными так и относительными величинами. Так при планировании трудовых затрат исходными чаще всего служат нормативы времени а производными – расчетные нормы времени. Нормы в отличие от нормативов имеют конкретное отраслевое или внутрипроизводственное назначение. Нормы разрабатываются обычно на краткосрочный заранее установленный период их применения в заданных производственных условиях с учетом различных производственно-хозяйственных факторов.
74479. СТРАТЕГИЧЕСКОЕ ПЛАНИРОВАНИЕ 70 KB
  Выбор стратегии предприятия Стратегическое планирование задает перспективные направления развития предприятия определяет основные виды его деятельности позволяет увязать в единую систему маркетинговую проектную производственную и финансовую деятельность. Стратегический план обеспечивает адаптацию предприятия к внешней среде к распределению ресурсов и внутреннюю координацию деятельности с целью выявления сильных и слабых сторон. Стратегический план на крупных предприятиях как правило долгосрочный. Но временной период стратегического...