вівторок, 8 грудня 2009 р.

Задача №15 Лабораторна робота №5

Перепишіть наступний цикл як list comprehension :
>>> words = ['attribution', 'confabulation', 'elocution','sequoia', 'tenacious', 'unidirectional']
>>> vsequences = set()
>>> for word in words:
vowels = []
for char in word:
if char in 'aeiou':
vowels.append(char)
vsequences.add(''.join(vowels))


>>> sorted(vsequences)
['aiuio', 'eaiou', 'eouio', 'euoia', 'oauaio', 'uiieioa']

неділя, 29 листопада 2009 р.

Задача № 10 лабораторна робота №5

Модуль random включає функцію choice(), яка випадковим чином вибирає елементи послідовності. Наприклад, choice("aehh ") буде вибирати один з чотирьох символів. Напишіть програму генерації стрічки з 500 випадково вибраних символів "aehh ". Для поєднання елементів в стрічку використовуйте ''.join() . Нормалізуйте отриманий результат використовуючи split() та join().


import random
aa=[]
for i in range(500):
aa.append(random.choice("aehh "))
ss=''.join(aa)

Лабораторна робота №5

Доброго вечора! Підкажіть, будь ласка, як закінчити отаке завдання:

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

1. Початок, думаю, мав би бути приблизно такий:
from __future__ import division
import nltk, re, pprint
f = open('f.txt')
p=f.readlines()
print p
['word 34\n', 'day 13\n', 'read 45\n', 'free 15']
p=''word 34\n day 13\n read 45\n free 15'
words=p.split()
words
['word', '34', 'day', '13', 'read', '45', 'free', '15']
2. А перетворити число в ціле значення мені не вдається.
Пробувала робити цикл, в якому перевіряла чи стрічка складається з цифр, і
їх записати окремо, але то не то...

Лабораторна робота №5

Я намагаюся зробити 5 лабораторну, але в мене виникли деякі запитання, і я вирішила звернутися до Вас за допомогою.
1. Я коли вписую from _future_ import division то в мене вибиває помилку...:( не знаю з чим це повязано..
2. Я б дуже Вас просила допомогти з третім завданням 5 лаби. Не знаю як зробити цикл list comprehension.

Лабораторна робота №5

добрий вечір!!!! поясніть будь ласка,чому вираз raw_contents =
urllib.urlopen('http://www.nltk.org/').read(), який заданий в умові першого завдання
лабораторної роботи №5 не працює і видає таку помилку:
raw_contents = urllib.urlopen('http://www.nltk.org/').read()
Traceback (most recent call last):
File "", line 1, in
raw_contents = urllib.urlopen('http://www.nltk.org/').read()
NameError: name 'urllib' is not defined
хоча такого не повинно би було бути,бо цей вираз заміняє вираз:
from urllib import urlopen
url = "http://www.gutenberg.org/files/2554/2554.txt";
raw = urlopen(url).read()
моя функція для цієї задачі така:
def net(url):
raw_contents=urllib.urlopen(url).read() raw=nltk.clean_html(raw_contents)
tokens=nltk.word_tokenize(raw)
return tokens
Допоможіть,будьласка.
і ще, якщо можна підскажіть з 12тим завданням тієї ж 5лабораторної роботи!!! Щиро
вдячна!!!

Хіт сезону - полісемія

Полісемія - це явище коли одне слово має декілька значень ( іменник dog має 7 значень, кількість яких визначити можна як len(wn.synsets('dog', 'n'))). Знайдіть середнє значення полісемії...

Полісемія - багатозначність
Як визначити - поділити сумарну кількість значень слів нп кількість слів.
car має 5 значень dog має 7 значень. середня полісемія цих двох слів (5+7)/2=6
Як вирішити задачу. Рішень є багато, яке з них правільне студенти хай самі аналізують. Я
думаю що правільні значення полісемії дає така програма

Для інших частин мови потрібно тільки замінити n на v-дієслова,a-прикметники,r-прислівники

Задача №6 Лабораторна робота №5

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

По пятій беріть будь-який файл *.html який є у вас вказуйте шлях до нього при виконанні
завдань.
Дивно, що навіть шоста задача викликає проблеми (дивіться рисунок1 і повторюйте ).
import nltk
from nltk.corpus import gutenberg
gutenberg.fileids()
['austen-emma.txt', 'austen-persuasion.txt', 'austen-sense.txt', 'bible-kjv.txt', 'blake-poems.txt', 'bryant-stories.txt', 'burgess-busterbrown.txt', 'carroll-alice.txt',
'chesterton-ball.txt', 'chesterton-brown.txt', 'chesterton-thursday.txt',
'edgeworth-parents.txt', 'melville-moby_dick.txt', 'milton-paradise.txt',
'shakespeare-caesar.txt', 'shakespeare-hamlet.txt', 'shakespeare-macbeth.txt',
'whitman-leaves.txt']
raw=gutenberg.raw('chesterton-ball.txt') #стрічка символів з тексту
len(raw)
457450
tokens1 = nltk.word_tokenize(raw) # токенізація тексту (виділені слова)
len(tokens1)
93663
tokens1[:100]
['[', 'The', 'Ball', 'and', 'The', 'Cross', 'by', 'G.K.', 'Chesterton', '1909', ']', 'I.', 'A', 'DISCUSSION', 'SOMEWHAT', 'IN', 'THE', 'AIR', 'The', 'flying', 'ship', 'of',
'Professor', 'Lucifer', 'sang', 'through', 'the', 'skies', 'like', 'a', 'silver',
'arrow', ';', 'the', 'bleak', 'white', 'steel', 'of', 'it', ',', 'gleaming', 'in', 'the',
'bleak', 'blue', 'emptiness', 'of', 'the', 'evening.', 'That', 'it', 'was', 'far',
'above', 'the', 'earth', 'was', 'no', 'expression', 'for', 'it', ';', 'to', 'the', 'two',
'men', 'in', 'it', ',', 'it', 'seemed', 'to', 'be', 'far', 'above', 'the', 'stars.',
'The', 'professor', 'had', 'himself', 'invented', 'the', 'flying', 'machine', ',', 'and',
'had', 'also', 'invented', 'nearly', 'everything', 'in', 'it.', 'Every', 'sort', 'of',
'tool', 'or', 'apparatus']
tokens2 = nltk.wordpunct_tokenize(raw) # токенізація тексту (виділені слова і
розділові знаки)
len(tokens2)
96996
tokens2[:100]
['[', 'The', 'Ball', 'and', 'The', 'Cross', 'by', 'G', '.', 'K', '.', 'Chesterton', '1909', ']', 'I', '.', 'A', 'DISCUSSION', 'SOMEWHAT', 'IN', 'THE', 'AIR', 'The',
'flying', 'ship', 'of', 'Professor', 'Lucifer', 'sang', 'through', 'the', 'skies',
'like', 'a', 'silver', 'arrow', ';', 'the', 'bleak', 'white', 'steel', 'of', 'it', ',',
'gleaming', 'in', 'the', 'bleak', 'blue', 'emptiness', 'of', 'the', 'evening', '.',
'That', 'it', 'was', 'far', 'above', 'the', 'earth', 'was', 'no', 'expression', 'for',
'it', ';', 'to', 'the', 'two', 'men', 'in', 'it', ',', 'it', 'seemed', 'to', 'be', 'far',
'above', 'the', 'stars', '.', 'The', 'professor', 'had', 'himself', 'invented', 'the',
'flying', 'machine', ',', 'and', 'had', 'also', 'invented', 'nearly', 'everything', 'in',
'it']
text1=nltk.Text(tokens1) # перетворили в текст NLTK
text2=nltk.Text(tokens2) # перетворили в текст NLTK
words1=[w.lower() for w in text1]
words2=[w.lower() for w in text2]
len(words1)
93663
len(words2)
96996
wh_words1=[w.lower() for w in text1 if w.startswith('wh')] # список wh - слів
wh_words2=[w.lower() for w in text2 if w.startswith('wh')] # список wh - слів
len(wh_words1) # сподіваємось, що отримали однакові списки
1213
len(wh_words2) # наші сподівання не справдилися
1227
[w for w in wh_words2 if w not in wh_words1] # можна побавитись, щоб знайти причину,
що списки не є однакові
['wheel', 'whirlpool']