4711

Вивчення методів роботи з файлами на локальних дисках та з інтернету. Використання Юнікоду при обробці текстів

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

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

Мета роботи: Вивчення основ програмування на мові Python. Вивчення методів роботи з файлами на локальних дисках та з Інтернету. Використання Юнікоду при обробці текстів. Нормалізація текстів, стемінг, лематизація та сегментац...

Украинкский

2012-11-25

178.5 KB

7 чел.

Мета роботи:

  •  Вивчення основ програмування на мові Python.
  •  Вивчення методів роботи з файлами на локальних дисках та з Інтернету.
  •  Використання Юнікоду при обробці текстів.
  •  Нормалізація текстів, стемінг, лематизація та сегментація.

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

Більшість текстів в Інтернеті є у вигляді HTML документів (файлів). Інтернет сторінки можна зберігати на диску у вигляді файлів і доступатися до них. Python також дозволяє працювати з Інтернет сторінками безпосередньо використовуючи функцію urlopen.

Текст, який вивели на екран містить HTML розмітку (мета теги, JavaScript, форми , таблиці). Вилучення тексту з HTML файлу доволі розповсюджена задача, яка в NLTK вирішується за допомогою функції nltk.clean_html(). Ця функція обробляє HTML стрічку і повертає текст у вигляді зручному для подальшої обробки (токенізації).

Блогосфера важливе джерело текстів, як формальних так і не формальних. З допомогою бібліотеки Python Universal Feed Parser, http://feedparser.org/, можна отримати доступ до вмісту блогів.

Для читання локальних файлів необхідно використовувати вбудовану функцію Python open() та read() метод. Якщо існує файл  document.txt, то змінній raw  можна присвоїти його вміст:

Для вводу тексту з клавіатури (при взаємодії користувача з програмою) потрібно використати функцію raw_input(). Після збереження введеного тексту у змінній з ним можна працювати як зі звичайною стрічкою.

Програми обробки природної мови повинні працювати з різними мовами та з різними наборами символів. Твердження «1 байт = 1 символ» є застарілим і в переважній більшості практичних випадків є хибним. В англомовному світі переважно використовується ASCII кодування символів. В Європі використовується  розширений Latin набір символів, який містить такі символи датської та норвежської, як "ø", угорської - "ő", іспанської та бретонської -"ñ" та "ň" чеської та словацької мов.

Юніко́д, (англ. Unicode) — це промисловий стандарт розроблений, щоб зробити можливим для текстів і символів (графічних знаків) всіх писемних систем світу узгоджене представлення (репрезентацію) і обробку комп’ютерами. Юнікод підтримує більш ніж мільйон символів. Кожному символу ставиться у відповідність число, яке називають кодовою точкою. В Python кодові точки записуються у вигляді \uXXXX  , де XXXX  - чотири символи шістнадцяткового числа.

from __future__ import division

Імпортування модуля для роботи з числами з плаваючою крапкою

urlopen(url).read()

Функція відкривання та читання файла за адресою url

nltk.word_tokenize(raw)

токенізація тексту raw

nltk.Text(tokens)

Перетворення тексту tokens в NLTK текст

raw.find

Знайти стрічку в raw

raw.rfind

Знайти стрічку в raw. Пошук здійснювати з кінця.

nltk.clean_html(html)

Очистити текст від html розмітки.

open('document.txt')

Відкрити файл

f.read()

Прочитати файл

os.listdir('.')

Встановити вміст директорії

line.strip()

Обрізати стрічку по останньому символу

nltk.data.find('corpora/gutenberg/melville-moby_dick.txt')

Знайти місцезнаходження файлу

open(path, 'rU').read()

Відкрити файл за вказаним шляхом для читання і прочитати його. Різні способи маркування нового рядка ігноруються

raw_input("Enter some text: ")

Ввести текст з клавіатури

codecs.open(path1, encoding='latin2')

ord('a')

line.encode('unicode_escape')

nltk.PorterStemmer()

Модуль Porter стемера

nltk.LancasterStemmer()

Модуль Lancaster стемера

nltk.WordNetLemmatizer()

Модуль WordNet лематизатора

nltk.data.load('tokenizers/punkt/english.pickle')

sent_tokenizer.tokenize(text)

Сегментувати текст на окремі речення

open('output.txt', 'w')

Відкрити файл для запису

output_file.write(word + "\n")

Записати у файл word та символ початку нового рядка


Хід роботи

1. Напишіть функцію, яка приймає адресу URL, як аргумент, і повертає те що міститься за цією адресою з видаленням HTML розмітки. Використовувати urllib.urlopen для доступу до контенту наступним чином raw_contents = urllib.urlopen(‘http://www.nltk.org/’).read().

def Converter(url):

   raw = urlopen(url).read()

   raw1 = nltk.clean_html(raw)

   tokens = nltk.word_tokenize(raw1)

   return tokens

2. Збережіть деякий текст у файлі corpus.txt. Визначити функцію load(f) для читання файлу, назва якого є її аргументом і повертає стрічку, яка містить текст з файлу.

def MyLoad(f,text):

   sl=''

   fl = open(f, 'rU')

   for line in fl:

       ls = line.strip()

       if text in ls:

           sl=ls

   return sl

3. Перепишіть наступний цикл як list comprehension:

 

>>> sent = [‘The’, ‘dog’, ‘gave’, ‘John’, ‘the’, ‘newspaper’]

>>> result = []

>>> for word in sent:

   word_len = (word, len(word))

   result.append(word_len)

>>> result

[(‘The’, 3), (‘dog’, 3), (‘gave’, 4), (‘John’, 4), (‘the’, 3), (‘newspaper’, 9)]

4. Перевірити різницю між стрічками і цілим виконавши наступні дії: «3» * 7 та 3 * 7. Спробуйте здійснити конвертування між стрічками і цілими використавши int(«3») та str(3).

>>> '3'* 7

'3333333'

>>> 3 * 7

21

>>> int('3') * 7

21

>>> str(3) * 7

'3333333'

5. Що станеться, коли стрічки форматування %6s та %-6s використовується для відображення стрічки довшої ніж 6 символів?

7. Створіть файл, який буде містити слова та їх частоту записані в окремих рядках через пробіл ( fuzzy 53). Прочитайте цей файл використовуючи open(filename).readlines().  Розділіть кожну стрічку на дві частини використовуючи split(), і перетворіть число в ціле значення використовуючи int(). Результат повинен бути у вигляді списку: [['fuzzy', 53], ...].

         

13. Використовуючи Porter стемер нормалізуйте будь-який токенізований текст . До того самого тексту застосуйте Lancaster стемер. Результати порівняйте та поясніть.

>>> text = ['CHAPTER', 'I', 'On', 'an', 'exceptionally', 'hot', 'evening', 'early', 'in', 'July', 'a', 'young', 'man', 'came', 'out', 'of', 'the', 'garret', 'in', 'which', 'he', 'lodged', 'in', 'S', '.', 'Place', 'and', 'walked', 'slowly', ',', 'as', 'though', 'in', 'hesitation', ',', 'towards', 'K', '.', 'bridge', '.']

>>> porter = nltk.PorterStemmer()

>>> lancaster = nltk.LancasterStemmer()

>>> [porter.stem(t) for t in text]

['CHAPTER', 'I', 'On', 'an', 'except', 'hot', 'even', 'earli', 'in', 'Juli', 'a', 'young', 'man', 'came', 'out', 'of', 'the', 'garret', 'in', 'which', 'he', 'lodg', 'in', 'S', '.', 'Place', 'and', 'walk', 'slowli', ',', 'as', 'though', 'in', 'hesit', ',', 'toward', 'K', '.', 'bridg', '.']

>>> [lancaster.stem(t) for t in text]

['chapt', 'i', 'on', 'an', 'exceiv', 'hot', 'ev', 'ear', 'in', 'july', 'a', 'young', 'man', 'cam', 'out', 'of', 'the', 'garret', 'in', 'which', 'he', 'lodg', 'in', 's', '.', 'plac', 'and', 'walk', 'slow', ',', 'as', 'though', 'in', 'hesit', ',', 'toward', 'k', '.', 'bridg', '.']

>>>

14. Доступіться до текстів ABC Rural News та ABC Science News з корпуса (nltk.corpus.abc). Знайдіть значення для оцінки читабельності текстів (аналогічно до задачі №12). Використовуйте Punkt для поділу тексту на окремі речення.

>>> from __future__ import division

>>> import nltk, re, pprint

>>> from nltk.corpus import abc

>>> abc.items

['rural.txt', 'science.txt']

>>> l=0

>>> n=0

>>> for w in nltk.corpus.abc.words():

l+=len(w)

n+=1

 

>>> m1 = l/n

>>> m1

4.3911944633176541

>>> m2 = len(nltk.corpus.abc.words()) / len(nltk.corpus.abc.sents())

>>> m2

26.081187714703582

>>> legible = 4.71*m1+0.5*m2-21.43

>>> legible

12.293119779577943

>>> sent_tokenizer=nltk.data.load('tokenizers/punkt/english.pickle')

>>> text = nltk.corpus.abc.raw('rural.txt')

>>> sents = sent_tokenizer.tokenize(text)

>>> pprint.pprint(sents[11:13])

['Support\nAWB still has plenty of support among grain growers in central western New South Wales despite the revelations of the Cole inquiry.',

"Producers say they broadly support AWB's attempts to get the best prices for their products."]

>>> sent_tokenizer=nltk.data.load('tokenizers/punkt/english.pickle')

>>> text = nltk.corpus.abc.raw('science.txt')

>>> sents = sent_tokenizer.tokenize(text)

>>> pprint.pprint(sents[11:13])

['He added that in the study by Elkins and team, patients may not have received the best long-term antibiotic treatment.',

'That would make the inhaled salt water mist appear more effective than it would have been if people were getting a better drug, says Ratjen.']

>>>

 

Висновок:

 на даній лабораторній роботі я ознайомилася з вивченням методів роботи з файлами на локальних дисках та з Інтернету, використанням Юнікоду при обробці текстів, нормалізацією текстів, стемінгом, лематизацією та сегментацією.


 

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

40009. Управление комплексом маркетинга (инструментальные стратегии) 902.5 KB
  Управление каналами распределения товаров и услуг. В процессе формирования товарной стратегии предусматривается решение следующих задач: определение позиции предлагаемых товаров специфический товар ассортиментная группа товаров совокупность товаров для обслуживания целевых рынков; установление стратегических целей для предлагаемых выпускаемых товаров; выбор марочной стратегии; разработка и внедрение стратегии для новых и существующих товаров. Товарная стратегия определяет позицию каждого вида товара или комбинации товаров по...
40010. Оценка и анализ потенциала рынков предприятия 156 KB
  Оценка и анализ потенциала рынков предприятия Содержание занятия: 1. Предварительная оценка рынка предприятия. Прогнозирование динамики потребительского спроса на выпускаемую продукцию предприятия. Количественное определение спроса и доли рынка предприятия.
40011. Оценка конкурентного окружения предприятия 319 KB
  Оценка конкурентного окружения предприятия Содержание занятия: 1. Микросреда предприятия – это система отношений предприятия с ее непосредственным окружением: поставщиками посредниками конкурентами прессой властными структурами общественными организациями деловыми кругами стратегическими партнерами в первую очередь инвесторами потребителями. Возможности предприятия по выбору поставщиков по работе со средствами массовой информации по формированию связей с властными структурами по взаимодействию с общественными организациями по...
40012. Оценка конкурентных преимуществ предприятия 266 KB
  Оценка конкурентных преимуществ предприятия Содержание занятия: 1. Анализ конкурентных преимуществ предприятия. Все эти преимущества сводятся к тому чтобы убедить покупателя в получении им больших выгод от приобретения продукции предприятия по сравнению с аналогичной продукцией конкурентов. Стратегия дифференциации – это стремление предприятия к уникальности в какомлибо аспекте существенном для большинства сегментов рынка или потребителей целевого рынка.
40013. Анализ целей и стратегий предприятия 232.5 KB
  Стратегия существования продукции. Проведение SWOTанализа в промышленном маркетинге связаны с прогнозированием и получением информации касающейся условий совершения покупки и характеристик покупаемой продукции. Маркетинговые исследования потребительских рынков охватывают широкие области особенно для производителей продукции с широким и сложным ассортиментом. Если руководство предприятия оценив текущее положение приходит к выводу о достаточности ресурсов для дальнейшего развития то встает проблема выбора наилучшего способа с большей...
40014. Современные информационные системы менеджмента и маркетинга в Российской Федерации 30.5 KB
  б Примерное содержание разрабатываемого материала: название информационной системы; назначение сфера применения информационной системы; состав и структура информационной системы; год выхода на рынок IPтехнологий Российской Федерации; разработчик информационной системы; решаемые информационной системой задачи; возможности информационной системы; достоинства информационной системы перед аналогами; недостатки информационной системы по сравнению с другими; занимаемый информационной системой сегмент рынка; перспективы...
40015. Оценка текущего состояния предприятия 311.5 KB
  Общие сведения о продукции предприятия. Расчет структуры выпуска продукции предприятия. Анализ выпуска товарной продукции. Факторный анализ выпуска товарной продукции.
40016. Анализ финансовых результатов деятельности предприятия 626 KB
  Выводы по финансовому состоянию ориентируют предприятие на выбор определенной стратегии: рост удержание положения или сворачивание производства.1 – Расчет основных показателей и их нормативные значения Показатели Формулы расчета Нормативные значение Показатели ликвидности предприятия Коэффициент покрытия коэффициент текущей ликвидности – показывает не обеспеченность обязательств предприятия оборотными средствами стр.290 баланса – стр.220 баланса – стр.
40017. Анализ маркетинговой среды предприятия 150.5 KB
  Анализ финансовых результатов от реализации продукции. Высоким темпам роста российской автомобильной промышленности будет способствовать сочетание развитого внутреннего рынка и значительного экспортного потенциала продукции с высокой добавленной стоимостью. Предполагаются следующие тенденции развития автомобильной промышленности: рост товарной продукции; рост инвестиций; рост экспорта автомобильной продукции; сохранение достаточно высокого уровня рентабельности производства; стабильный рост средней заработной платы; глобализация...