4707

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

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

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

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

Украинкский

2012-11-25

256.5 KB

12 чел.

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


 

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

78663. Корпоративное управление как важнейший фактор экономического роста 39 KB
  Надлежащий режим корпоративного управления способствует эффективному использованию корпорацией своего капитала подотчетности органов ее управления как самой компании так и ее акционерам. В результате формирования такой структуры акционерного капитала утвердилась ориентация крупных акционеров не на повышение доходов по акциям компании не на рост ее капитализации а на сохранение существующих взаимоотношений с предприятием. В самом общем виде общепризнанные международные принципы корпоративного управления сводятся к следующему: структура...
78664. Анализ кадрового потенциала организации 29 KB
  Анализ кадрового потенциала организации. Для комплексной оценки кадрового потенциала используются три группы взаимодополняющих оценок: стоимостные; количественные; качественные. Стоимостные оценки базируются на возникшей в 60е годы нашего столетия теории кадрового капитала одним из ярких представителей которой является американский ученый Р. Для всесторонней оценки кадрового потенциала на кризисном предприятии проводится так называемый кадровый аудит.
78665. Тенденции и перспективы развития венчурного бизнеса в России и за рубежом 62.5 KB
  Тенденции и перспективы развития венчурного бизнеса в России и за рубежом. Сущность венчурного финансирования заключается в финансировании предложений по развитию производственной коммерческой или иной деятельности необходимой региону и ориентированной на получение прибыли на основе существующих или вновь для этого создаваемых малых предприятий путем вложения определенной части финансовых или иных ресурсов их деятельности без гарантии возвратности с учетом возможности потери вложенных средств если финансируемый проект не принесет после...
78666. Научно-технический и инновационный потенциал организации :сущность, структура и основные показатели оценки 41.5 KB
  Научнотехнический потенциалстрана регион организация – общественная форма совокупности живого и общественного труда обеспечивающая производство новых знаний создание освоение нововведений в т. Межотраслевые технологические прогнозы кривые появления и развития новых технологий формирование компетенций поддерживающих прогрессивные технологии на уровне фирмы. Принципы финансирования незапланированных инициатив выявление новых идей сотрудников поощрение их нововведенческого поведения. Оценивать важность новых инициатив и их...
78667. Основные направления инновационной политики государства 53.5 KB
  Одним из важнейших показателей состояния и развития научной деятельности является численность исследователей техников и вспомогательного персонала занятых в инновационной сфере. Россия направляющая в научнотехническую сферу менее 1 ВВП все больше отстает от группы промышленно развитых и некоторых развивающихся стран. Недостаток капитала выступает сегодня в России в качестве одного из основных ограничителей научнотехнического развития. Устойчивой гарантией динамичного развития научнотехнической сферы в условиях рынка является только...
78668. Инновация: сущность, источники, жизненный цикл 31.5 KB
  Эти различия затрагивают прежде всего общую продолжительность цикла продолжительность каждой стадии внутри цикла особенности развития самого цикла разное количество стадий. Виды и количество стадий жизненного цикла определяются особенностями той или иной инновации. Однако у каждой инновации можно определить стержневую то есть базовую основу жизненного цикла с четко выделенными стадиями. Схемы жизненного цикла различны у инновационного продукта и у инновационной операции процедуры.
78669. Программно-целевой метод управления 28 KB
  Программноцелевой метод управления. Программноцелевой метод научнопрограммный и временной способ увязки планируемых целей с ресурсами. Программноцелевой метод в управлении ориентирован на достижение конечного результата в логике поэтапного действия: формирование дерева целей разработка адекватной исполняющей программы реализация управляющей программы. Ключевой идеей программноцелевого метода выступает матрица цель средство иерархическая структура строго сформулированных целей программных элементов каждый из которых служит...
78670. Инновационная стратегия фирмы 33.5 KB
  Инновационная стратегия фирмы. Обычно к таким стратегиям относят. Стратегия непрерывного совершенствования кайзен продукции. Инновационная стратегия целенаправленная деятельность по определению приоритетов перспективного развития организации и их достижению в результате которой обеспечивается новое качество производства и управления.
78671. Прогрессивные формы организации инновационной деятельности :бизнес-инкубаторы, технопарки, технополисы 31 KB
  Инновационная деятельность это процесс направленный на реализацию результатов законченных научных исследований и разработку иных научно технических достижений интеллектуального продукта. Отличительные черты: комплексность по научнопроизводственному циклу научные учреждения вузы промышленные предприятия компактность расположения ограниченность площади расположение в экологически чистых районах. Технополис – научнотехнический комплекс соединяющий научнотехническую деятельность с наукоемким производством с хорошо развитой...