DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Системи автоматизованого проектування

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інформаційні технології
Група:
ПРЛ

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІНСТИТУТ КОМП’ЮТЕРНИХ НАУК ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ Кафедра “Системи автоматизованого проектування” ЗВІТ до лабораторної роботи №5 ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ. АВТОМАТИЧНИЙ МОРФОЛОГІЧНИЙ АНАЛІЗ МЕТА РОБОТА Вивчення основ програмування на мові Python. Ознайомлення з автоматичним морфологічним аналізом в NLTK. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ 1.1 Вступ. Виконуючи попередні лабораторні роботи слова оброблялися, як слова в загальному розумінні. Ми бачили що деякі розбіжності можна зменшити використовуючи нормалізацію, але подальші узагальнення не робилися. Розглядаючи частотний розподіл слова often фіксувалися слова які йдуть після цього слова і визначено що often часто виконує роль «модифікатора» дієслів. Дійсно, це слово належить до класу слів, які модифікують дієслова – adverbs. Для глибшого розуміння термінології розглянемо програму, яка для заданого слова знаходить інші слова які зустрічаються в тому самому контексті (listing1). Наприклад, для слова women будуть знайдені всі контексти в яких це слово зустрічається в корпусі і будуть знайдені інші слова які зустрічаються в такому контексті. Коли запустити на виконання функцію dist_sim() для певного переліку слів то отримаємо інші слова, які мають подібне розповсюдження. Для слова women такими словами будуть переважно іменники, для слова bought –дієслова, для over – прийменники, для the – артиклі. В загальному для назв цих груп слів вживаються терміни – класи слів, лексичні категорії, частини мови. Одною з відомих особливостей Броунівського корпусу є те, що всі слова в ньому промарковані (tagged) за їх частиномовною приналежністю. Тепер замість того щоб розглядати слова які йдуть після often можна аналізувати до якої частини мови вони належать. В таблиці 1 наведені перші вісім таких слів які впорядковані за частотою та з поясненням кожного тега. Бачимо, що більшість слів це дієслова. Таблиця 1.Частини мови слів Броунівського корпусу, які зустрічаються перед often .  1.2 Загальна інформація про автоматичний морфологічний аналіз в NLTK Деякі великі корпуси текстів такі як Броунівський(Brown) і частково Wall Street Journal містять морфологічну розмітку (позначенні частини мови всіх слів) і дозволяють працювати з цими даними. Файл морфологічно розміченого корпусу текстів переважно містить текст в наступному вигляді (Броунівський корпус). 1.2.1 Представлення тегів і читання морфологічно розміченого корпусу текстів. За домовленістю в NLTK промарковані слова (tokens) представляються з використанням типу даних – кортеж. Кортежі подібні до списків, але їх неможна змінювати. До елементів кортежу можна отримати доступ використовуючи їх індекси. 1.3 Класифікація слів. Іменники англійської мови можуть бути морфологічно складними. Наприклад books і women це множина. Слова з –ness суфіксом це іменники утворені з прикметників: happiness, illness. Суфікс –ment з’являється в деяких іменниках, які походять від дієслів: government, establishment. Дієслова англійської мови також можуть бути морфологічно складними. Наприклад теперішній тривалий час в дієсловах характеризується закінченням –ing і описує триваючу незавершену дію (falling, eating). Суфікс –ing також з’являється і у іменників, які походять від дієслів (the falling of the leaves (герундій)). В Броунівському корпусі вони маркуються як VBG. Минулий час в дієсловах часто характеризується закінченням –ed і описує завершену дію, маркується VBD. Загальні набори тегів часто охоплюють деяку морфологічно-синтаксичну інформацію – це є інформація про види морфологічного маркування, які отримують слова в залежності від їх синтаксичної ролі. Розглянемо, наприклад, вибрані різні граматичні форми слова “go” , які ілюструються в наступних реченнях. ТЕКСТ ПРОГРАМИ ***************************************1**************************************** >>> import nltk >>> from nltk import corpus >>> corpus.brown.tagged('b')[4] [('The', 'AT'), ('jury', 'NN'), ('said', 'VBD'), ('it', 'PPS'), ('did', 'DOD'), ('find', 'VB'), ('that', 'CS'), ('many', 'AP'), ('of', 'IN'), ("Georgia's", 'NP$'), ('registration', 'NN'), ('and', 'CC'), ('election', 'NN'), ('laws', 'NNS'), ('``', '``'), ('are', 'BER'), ('outmoded', 'JJ'), ('or', 'CC'), ('inadequate', 'JJ'), ('and', 'CC'), ('often', 'RB'), ('ambiguous', 'JJ'), ("''", "''"), ('.', '.')] >>> corpus.brown.tagged('d')[5] [('It', 'PPS'), ('recommended', 'VBD'), ('that', 'CS'), ('Fulton', 'NP'), ('legislators', 'NNS'), ('act', 'VB'), ('``', '``'), ('to', 'TO'), ('have', 'HV'), ('these', 'DTS'), ('laws', 'NNS'), ('studied', 'VBN'), ('and', 'CC'), ('revised', 'VBN'), ('to', 'IN'), ('the', 'AT'), ('end', 'NN'), ('of', 'IN'), ('modernizing', 'VBG'), ('and', 'CC'), ('improving', 'VBG'), ('them', 'PPO'), ("''", "''"), ('.', '.')] ***************************************2**************************************** >>> import nltk >>> from nltk import corpus >>> fd=nltk.FreqDist() >>> for (wd, tg) in corpus.brown.tagged('b')[3]: fd.inc(tg) >>> fd.max() 'NN' >>>tokens=tokenize.whitespace('I hate studying at school') >>>default_tagger=tag.Default('nn') >>>list(default_tagger.tag(tokens)) [('I' , 'nn'), ('hate', 'nn'), ('studying', 'nn'), ('at', 'nn'), ('school', 'nn')] Tag.accuracy(default_tagger, corpus.brown.tagger) ***************************************3**************************************** from nltk import corpus >>> fd=nltk.FreqDist() >>> for (wd, tg) in corpus.brown.tagged('b')[4]: if tg[:2]=='vb': fd.inc(wd + '/' + tg) >>> fd.sorted()[:15] ['went/vbd' , 'be/vb' , 'tell/vb' , 'done/vbn' , 'finished/vbd' , 'healed/vbd' , 'fakes/vbz' , 'run/vb' , 'goes/vbz' , 'been/vbn' , 'cursed/vbd' , 'fixed/vbd' , 'stridden/vbn' , 'struck/vbd , 'makes/vbz' ] ***************************************4**************************************** >>> import nltk >>> from nltk import tokenize >>> def build_wc_map(): cw_map=nltk.defaultdict(list) for item in corpus.brown.items: for sent in corpus.brown.tokenized(item): sent=[w.lower() for w in sent] for i in range(l, len(sent)-1): cw_map=[(sent[i-1],sent[i+1])], append(sent[i]) return nltk.invert_dict(cw_map) >>> def dist_sim(wc_map, word, num=10): if word in wc_map: contexts=set(wc_map[word]) fd=nltk.FreqDist(w for w in wc_map for c in wc_map[w] if c in contexts) return fd.sorted()[:num] return [] >>> wc_map=build_wc_map() >>>dist_sim(wc_map, 'world') ['time' , 'man' , 'number' , 'estate' , 'power' , 'universe' , 'star' , 'person' , 'jury' , 'future'] >>>dist_sim(wc_map, 'finished') ['thought' , 'meant' , 'used' , 'took' , 'spoilt' , 'paid' , 'lit' , 'met' , 'used' , 'killed'] >>>dist_sim(wc_map, 'in' ) ['for' , 'between', 'for' , 'out' , 'and', 'at' , 'among' , 'to' , 'across' , 'with'] >>>dist_sim(wc_map, 'her') ['his' , 'and' , 'their' , 'this' , 'that' , 'our' , 'no' , 'some', 'your' , 'the'] ***************************************5**************************************** >>>import nltk >>> from nltk import corpus >>> def findtags(tag_prefix, tagged_text): cfd=nltk.ConditionalFreqDist() for (wd, tg) in tagged_text: if tg.startswith(tag_prefix): cfd[tg].inc(wd) tagdict={} for tg in cfd.conditions(): tagdict[tg]=cfd[tg].sorted()[:5] return tagdict >>> tagdict=findtags('nn', corpus.brown.tagged('b')) >>>for tg in sorted(tagdict): print tg, tgdict[tg] nn ['woman' , 'month' , 'duty' , 'child' , 'world'] nn$ ['day’s', 'state’s' , 'world’s' , 'nation’s' , 'child’s'] nn$-hl ['Grove’s', 'Jury’s' ] nn$-tl ['Minister’s' , 'General’s' , 'Admiral’s' , 'President’s'] nns ['women' , 'states' , 'cities' , 'fees'] nns$ ['women’s' , 'men’s' , 'children’s'] nn-tl ['Governor' , 'City' , 'State' , 'President'] ***************************************6**************************************** >>> patterns=[ (r'.*ing$', 'vbg'), # gerunds (r'.*ed$', 'vbd'), # simple past (r'.*es$', 'vbz'), # 3rd singular present (r'.*ould$', 'md'), # modals (r'.*\'s$', 'nn$'), # possessive nouns (r'.*s$', 'nns'), # plural nouns (r'^-?[0-9]+(.[0-9]+)?$', 'cd'), # cardinal numbers (r'.*', 'nn') # nouns (default) ] >>>regexp_tagger = tag.Regexp(patterns) >>>list(regexp_tagger.tag(brown.raw('a')))[3] [('``', '``'), ('Only', 'RB'), ('a', 'AT'), ('relative', 'JJ'), ('handful', 'NN'), ('of', 'IN'), ('such', 'JJ'), ('reports', 'NNS'), ('was', 'BEDZ'), ('received', 'VBN'), ("''", "''"), (',', ','), ('the', 'AT'), ('jury', 'NN'), ('said', 'VBD'), (',', ','), ('``', '``'), ('considering', 'IN'), ('the', 'AT'), ('widespread', 'JJ'), ('interest', 'NN'), ('in', 'IN'), ('the', 'AT'), ('election', 'NN'), (',', ','), ('the', 'AT'), ('number', 'NN'), ('of', 'IN'), ('voters', 'NNS'), ('and', 'CC'), ('the', 'AT'), ('size', 'NN'), ('of', 'IN'), ('this', 'DT'), ('city', 'NN'), ("''", "''"), ('.', '.')] ВИСНОВОК: На даній лабораторній роботі я продовжила знайомство з мовою програмування Python, а також ознайомилась з автоматичним морфологічним аналізом NLTK і працювала з промаркованим корпусом Brown. МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІНСТИТУТ КОМП’ЮТЕРНИХ НАУК ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ Кафедра “Системи автоматизованого проектування” ЗВІТ до лабораторної роботи №5 ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ. АВТОМАТИЧНИЙ МОРФОЛОГІЧНИЙ АНАЛІЗ Виконала: студентка групи ПРЛ-12м Бак Тетяна Прийняв: Тимощук П. В. Львів-2008 МЕТА РОБОТА Вивчення основ програмування на мові Python. Ознайомлення з автоматичним морфологічним аналізом в NLTK. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ 1.1 Вступ. Виконуючи попередні лабораторні роботи слова оброблялися, як слова в загальному розумінні. Ми бачили що деякі розбіжності можна зменшити використовуючи нормалізацію, але подальші узагальнення не робилися. Розглядаючи частотний розподіл слова often фіксувалися слова які йдуть після цього слова і визначено що often часто виконує роль «модифікатора» дієслів. Дійсно, це слово належить до класу слів, які модифікують дієслова – adverbs. Для глибшого розуміння термінології розглянемо програму, яка для заданого слова знаходить інші слова які зустрічаються в тому самому контексті (listing1). Наприклад, для слова women будуть знайдені всі контексти в яких це слово зустрічається в корпусі і будуть знайдені інші слова які зустрічаються в такому контексті. Коли запустити на виконання функцію dist_sim() для певного переліку слів то отримаємо інші слова, які мають подібне розповсюдження. Для слова women такими словами будуть переважно іменники, для слова bought –дієслова, для over – прийменники, для the – артиклі. В загальному для назв цих груп слів вживаються терміни – класи слів, лексичні категорії, частини мови. Одною з відомих особливостей Броунівського корпусу є те, що всі слова в ньому промарковані (tagged) за їх частиномовною приналежністю. Тепер замість того щоб розглядати слова які йдуть після often можна аналізувати до якої частини мови вони належать. В таблиці 1 наведені перші вісім таких слів які впорядковані за частотою та з поясненням кожного тега. Бачимо, що більшість слів це дієслова. Таблиця 1.Частини мови слів Броунівського корпусу, які зустрічаються перед often .  1.2 Загальна інформація про автоматичний морфологічний аналіз в NLTK Деякі великі корпуси текстів такі як Броунівський(Brown) і частково Wall Street Journal містять морфологічну розмітку (позначенні частини мови всіх слів) і дозволяють працювати з цими даними. Файл морфологічно розміченого корпусу текстів переважно містить текст в наступному вигляді (Броунівський корпус). 1.2.1 Представлення тегів і читання морфологічно розміченого корпусу текстів. За домовленістю в NLTK промарковані слова (tokens) представляються з використанням типу даних – кортеж. Кортежі подібні до списків, але їх неможна змінювати. До елементів кортежу можна отримати доступ використовуючи їх індекси. 1.3 Класифікація слів. Іменники англійської мови можуть бути морфологічно складними. Наприклад books і women це множина. Слова з –ness суфіксом це іменники утворені з прикметників: happiness, illness. Суфікс –ment з’являється в деяких іменниках, які походять від дієслів: government, establishment. Дієслова англійської мови також можуть бути морфологічно складними. Наприклад теперішній тривалий час в дієсловах характеризується закінченням –ing і описує триваючу незавершену дію (falling, eating). Суфікс –ing також з’являється і у іменників, які походять від дієслів (the falling of the leaves (герундій)). В Броунівському корпусі вони маркуються як VBG. Минулий час в дієсловах часто характеризується закінченням –ed і описує завершену дію, маркується VBD. Загальні набори тегів часто охоплюють деяку морфологічно-синтаксичну інформацію – це є інформація про види морфологічного маркування, які отримують слова в залежності від їх синтаксичної ролі. Розглянемо, наприклад, вибрані різні граматичні форми слова “go” , які ілюструються в наступних реченнях. ТЕКСТ ПРОГРАМИ ***************************************1**************************************** >>> import nltk >>> from nltk import corpus >>> corpus.brown.tagged('b')[4] [('The', 'AT'), ('jury', 'NN'), ('said', 'VBD'), ('it', 'PPS'), ('did', 'DOD'), ('find', 'VB'), ('that', 'CS'), ('many', 'AP'), ('of', 'IN'), ("Georgia's", 'NP$'), ('registration', 'NN'), ('and', 'CC'), ('election', 'NN'), ('laws', 'NNS'), ('``', '``'), ('are', 'BER'), ('outmoded', 'JJ'), ('or', 'CC'), ('inadequate', 'JJ'), ('and', 'CC'), ('often', 'RB'), ('ambiguous', 'JJ'), ("''", "''"), ('.', '.')] >>> corpus.brown.tagged('d')[5] [('It', 'PPS'), ('recommended', 'VBD'), ('that', 'CS'), ('Fulton', 'NP'), ('legislators', 'NNS'), ('act', 'VB'), ('``', '``'), ('to', 'TO'), ('have', 'HV'), ('these', 'DTS'), ('laws', 'NNS'), ('studied', 'VBN'), ('and', 'CC'), ('revised', 'VBN'), ('to', 'IN'), ('the', 'AT'), ('end', 'NN'), ('of', 'IN'), ('modernizing', 'VBG'), ('and', 'CC'), ('improving', 'VBG'), ('them', 'PPO'), ("''", "''"), ('.', '.')] ***************************************2**************************************** >>> import nltk >>> from nltk import corpus >>> fd=nltk.FreqDist() >>> for (wd, tg) in corpus.brown.tagged('b')[3]: fd.inc(tg) >>> fd.max() 'NN' >>>tokens=tokenize.whitespace('I hate studying at school') >>>default_tagger=tag.Default('nn') >>>list(default_tagger.tag(tokens)) [('I' , 'nn'), ('hate', 'nn'), ('studying', 'nn'), ('at', 'nn'), ('school', 'nn')] Tag.accuracy(default_tagger, corpus.brown.tagger) ***************************************3**************************************** from nltk import corpus >>> fd=nltk.FreqDist() >>> for (wd, tg) in corpus.brown.tagged('b')[4]: if tg[:2]=='vb': fd.inc(wd + '/' + tg) >>> fd.sorted()[:15] ['went/vbd' , 'be/vb' , 'tell/vb' , 'done/vbn' , 'finished/vbd' , 'healed/vbd' , 'fakes/vbz' , 'run/vb' , 'goes/vbz' , 'been/vbn' , 'cursed/vbd' , 'fixed/vbd' , 'stridden/vbn' , 'struck/vbd , 'makes/vbz' ] ***************************************4**************************************** >>> import nltk >>> from nltk import tokenize >>> def build_wc_map(): cw_map=nltk.defaultdict(list) for item in corpus.brown.items: for sent in corpus.brown.tokenized(item): sent=[w.lower() for w in sent] for i in range(l, len(sent)-1): cw_map=[(sent[i-1],sent[i+1])], append(sent[i]) return nltk.invert_dict(cw_map) >>> def dist_sim(wc_map, word, num=10): if word in wc_map: contexts=set(wc_map[word]) fd=nltk.FreqDist(w for w in wc_map for c in wc_map[w] if c in contexts) return fd.sorted()[:num] return [] >>> wc_map=build_wc_map() >>>dist_sim(wc_map, 'world') ['time' , 'man' , 'number' , 'estate' , 'power' , 'universe' , 'star' , 'person' , 'jury' , 'future'] >>>dist_sim(wc_map, 'finished') ['thought' , 'meant' , 'used' , 'took' , 'spoilt' , 'paid' , 'lit' , 'met' , 'used' , 'killed'] >>>dist_sim(wc_map, 'in' ) ['for' , 'between', 'for' , 'out' , 'and', 'at' , 'among' , 'to' , 'across' , 'with'] >>>dist_sim(wc_map, 'her') ['his' , 'and' , 'their' , 'this' , 'that' , 'our' , 'no' , 'some', 'your' , 'the'] ***************************************5**************************************** >>>import nltk >>> from nltk import corpus >>> def findtags(tag_prefix, tagged_text): cfd=nltk.ConditionalFreqDist() for (wd, tg) in tagged_text: if tg.startswith(tag_prefix): cfd[tg].inc(wd) tagdict={} for tg in cfd.conditions(): tagdict[tg]=cfd[tg].sorted()[:5] return tagdict >>> tagdict=findtags('nn', corpus.brown.tagged('b')) >>>for tg in sorted(tagdict): print tg, tgdict[tg] nn ['woman' , 'month' , 'duty' , 'child' , 'world'] nn$ ['day’s', 'state’s' , 'world’s' , 'nation’s' , 'child’s'] nn$-hl ['Grove’s', 'Jury’s' ] nn$-tl ['Minister’s' , 'General’s' , 'Admiral’s' , 'President’s'] nns ['women' , 'states' , 'cities' , 'fees'] nns$ ['women’s' , 'men’s' , 'children’s'] nn-tl ['Governor' , 'City' , 'State' , 'President'] ***************************************6**************************************** >>> patterns=[ (r'.*ing$', 'vbg'), # gerunds (r'.*ed$', 'vbd'), # simple past (r'.*es$', 'vbz'), # 3rd singular present (r'.*ould$', 'md'), # modals (r'.*\'s$', 'nn$'), # possessive nouns (r'.*s$', 'nns'), # plural nouns (r'^-?[0-9]+(.[0-9]+)?$', 'cd'), # cardinal numbers (r'.*', 'nn') # nouns (default) ] >>>regexp_tagger = tag.Regexp(patterns) >>>list(regexp_tagger.tag(brown.raw('a')))[3] [('``', '``'), ('Only', 'RB'), ('a', 'AT'), ('relative', 'JJ'), ('handful', 'NN'), ('of', 'IN'), ('such', 'JJ'), ('reports', 'NNS'), ('was', 'BEDZ'), ('received', 'VBN'), ("''", "''"), (',', ','), ('the', 'AT'), ('jury', 'NN'), ('said', 'VBD'), (',', ','), ('``', '``'), ('considering', 'IN'), ('the', 'AT'), ('widespread', 'JJ'), ('interest', 'NN'), ('in', 'IN'), ('the', 'AT'), ('election', 'NN'), (',', ','), ('the', 'AT'), ('number', 'NN'), ('of', 'IN'), ('voters', 'NNS'), ('and', 'CC'), ('the', 'AT'), ('size', 'NN'), ('of', 'IN'), ('this', 'DT'), ('city', 'NN'), ("''", "''"), ('.', '.')] ВИСНОВОК: На даній лабораторній роботі я продовжив знайомство з мовою програмування Python, а також ознайомився з автоматичним морфологічним аналізом NLTK і працював з промаркованим корпусом Brown.
Антиботан аватар за замовчуванням

31.03.2013 13:31

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!