4707

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

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

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

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

Украинкский

2012-11-25

256.5 KB

18 чел.

  •  Вивчення основ програмування на мові 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, а також навчилась використовувати регулярні вирази для опрацювання текстів.


 

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

45219. Современные политические ПР-технологии России: опыт, тенденции и проблемы развития 48 KB
  Задачи: формирование и продвижение имиджа доведение до избирателя правдивой информации о кандидатах донесение до кандидата реальных проблем и ожиданий групп населения. Особенность воздействия на массовое сознание состоит в том что с помощью него можно усилить роль тех черт кандидата его способностей внешности которые могут привлечь симпатии избирателей. Для персонального консультирования специалист должен уметь: провести адекватную диагностику ситуации видеть явные и скрытые проблемы и ресурсы; выстроить стратегию наращивания...
45220. Интегрированные коммуникации в деятельности современных бизнес-структур: опыт, проблемы, перспективы развития 36.5 KB
  ИМК - это новая организационная технология способная решить многие проблемы связанные с ростом всех типов коммуникаций. Это новая форма организации маркетинга это новая философия и стратегия бизнес-коммуникаций следуя которой можно вывести на новый качественный уровень все виды взаимодействия с потребителем. ИМК практика унификации всех средств маркетинговых коммуникаций начиная с рекламы и заканчивая упаковкой для передачи целевой аудитории последовательного убедительного сообщения способствующего наиболее полной реализации целей...
45221. Российский опыт использования ПР-технологий в деятельности государственных структур 25 KB
  Российский опыт использования ПР-технологий в деятельности государственных структур. В случае государственных структур объектом воздействия становится налогоплательщик гражданин который хочет и имеет право знать обо всех действиях государственных органов разного уровня. Эта технология используется в российских государственных ПР для корректировки проблемы после того как коммуникация начала развертываться в нежелательном направлении и события приняли нежелательный оборот. Основная задача государственных ПР создание образа компетентного и...
45222. Специфика ПР деятельности общественных объединений 29 KB
  Цель ПР в третьем некоммерческом секторе помощь в реализации различных социальных проектов привлечение внимания общественности к важным социальным проблемам формирование общественного мнения относительно необходимости решения данных проблем. Взаимоотношения социальных служб и СМИ также является одной из сложных задач. Ведь несмотря на то что в любой газете есть отдел социальных проблем журналисты не часто пишут об НКО поскольку плохо знают их работу. Деятельность по связям с общественностью в социальных службах включает в себя: 1.
45223. Подготовка РК специалистов в России: специфика, проблемы, перспективы развития ПР образования 26.5 KB
  Подготовка РК специалистов в России: специфика проблемы перспективы развития ПР образования. Российская подготовка ПРспециалистов учитывает опыт их подготовки в других странах что позволило избежать ряда крупных ошибок. Например данная специальность на была помещена на факультеты журналистики как в США 2 3 всех специалистов против этого выступает Э. Но мы стоим в преддверии такой проблемы как перепроизводство специалистов которые вопервых могут быть просто не нужны потому что столько не нужно и вовторых которые могут быть не...
45224. Миссия, идеология и направления деятельности профессиональных международных объединений ПР-специалистов: IРRА,СЕRР,IАВС,IРR,РRSА 44.5 KB
  Рост числа профессиональных ассоциаций отражает серьезность усилий предпринимаемых многими специалистами в области ПР в целях придания этой функции должного статуса и дальнейшей ее профессионализации. IРRА пропагандирует престиж профессий специалиста в области РR высокие стандарты и соблюдение этических норм среди специалистов которым приходится иметь дело с международными аспектами РR. IPR издает так называемые Золотые страницы по важнейшим проблемам представляющим интерес для мирового сообщества специалистов в области PR. Это...
45225. Миссия, идеология и направления деятельности российских профессиональных организаций ПР-специалистов: РАСО 33.5 KB
  Миссия идеология и направления деятельности российских профессиональных организаций ПРспециалистов: РАСО РАСО была создана в июле 1991. Декларация профессиональных и этических принципов в области связей с общественностью РАСО. В основу поведений членов РАСО легли общечеловеческие ценности и универсальные права личности: свобода слова свобода печати и собраний на свободный доступ к информации; ответственность перед обществом в том числе за достоверность точность и честность распространяемой информации. Члены РАСО руководствуются...
45226. Кодексы профессионального поведения профессиональных зарубежных сообществ: этическая основа, ценностно-нормативная специфика 61.5 KB
  Положения кодекса приняты с целью пропаганды и активного внедрения высоких стандартов общественной деятельности и этики поведения членов РRSА. Член обязан сохранять в тайне конфиденциальную информацию доверенную ему нынешними или бывшими клиентами или служащими. Член не должен представлять интересы одной из конфликтующих сторон без согласия на то всех заинтересованных сторон. Член не должен заниматься никакой деятельностью которая имеет тенденцию к нанесению ущерба репутации СМИ.
45227. Кодекс профессионального поведения российского корпоративного сообщества ПР-специалистов: этическая основа, ценностно-нормативная специфика 31 KB
  Декларация профессиональных и этических принципов в области связей с общественностью РАСО. В основу поведений членов РАСО легли общечеловеческие ценности и универсальные права личности: свобода слова свобода печати и собраний на свободный доступ к информации; ответственность перед обществом в том числе за достоверность точность и честность распространяемой информации. Члены РАСО руководствуются пониманием важности формирования и внедрения этических ориентиров и профессиональных стандартов деятельности. Для контроля за соблюдением членами...