4710

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

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

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

Мета роботи: Вивчення основ програмування на мові Python. Вивчення методів доступу та роботи з лексичним ресурсами. Семантичний словник англійської мови WordNet. Короткі теоретичні відомості При програмуванні часто необхідно частин...

Украинкский

2012-11-25

261 KB

19 чел.

Мета роботи:

  •  Вивчення основ програмування на мові Python.
  •  Вивчення методів доступу та роботи з лексичним ресурсами.
  •  Семантичний словник англійської мови WordNet.

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

При програмуванні часто необхідно частину програми виконати (використати) декілька разів. Наприклад, потрібно написати програму, яка здійснює утворення множини з однини іменників і вона буде виконуватись в різних місцях програми. Швидше ніж повторювати той самий код декілька разів і більш ефективно і надійно організувати цю роботу через функцію. Функція - це програмна конструкція, яку можна викликати з одним або більше вхідними параметрами, і отримувати результат на виході. Визначаємо функцію, використовуючи ключове слово def далі потрібно дати назву функції і визначити вхідні параметри, після двокрапки записується тіло функції. Ключове слово return використовується для відображення значення, яке ми хочемо отримати на виході функції.

Лексичний ресурс або просто словник це набір слів тa/або словосполучень, які асоціюються з такою інформацією, як частина мови та опис значення. Лексичні ресурси є вторинними по відношенню до текстів і зазвичай створюються і вдосконалюються з використанням текстів. Наприклад, якщо визначити текст my_text тоді vocab = sorted(set(my_text)) побудує словник тексту  my_text,  word_freq = FreqDist(my_text)  визначить частоту кожного слова в тексті. vocab та word_freq – приклад простих лексичних ресурсів. Так само конкорданс дає інформацію про використання слів і ця інформація може бути використана при побудові словників.

WordNet, це семантично орієнтований словник англійської мови, подібний до традиційних тезаурусів але з більш багатою структурою. У WordNet слова групуються у набори синонімів – синсети, кожен із своїм визначенням і зв’язками з іншими синсетами. WordNet 3.0 розповсюджується разом з NLTK  і містить 155287 слів та 117659 синсетів. Хоча WordNet розроблявся для психолінгвістики - цей словник широко використовується в NLP та в задачах інформаційного пошуку.


                                                   
Хід роботи

1. Дослідити зв’язки голонім-меронім для іменників. Знайти іменники для демонстрації наступних зв’язків: member_meronyms(), part_meronyms(), substance_meronyms(), member_holonyms(), part_holonyms(), та substance_holonyms().

>>> from nltk.corpus import wordnet as wn

>>> wn.synset('university.n.01').member_meronyms()

[Synset('graduate_school.n.01')]

>>> wn.synset('nose.n.01').part_meronyms()

[Synset('nostril.n.01'), Synset('internasal_suture.n.01'), Synset('bridge.n.04'), Synset('nasal_cavity.n.01'), Synset('turbinate_bone.n.01'), Synset('ethmoidal_artery.n.01')]

>>> wn.synset('tree.n.01').substance_meronyms()

[Synset('heartwood.n.01'), Synset('sapwood.n.01')]

>>> wn.synset('student.n.01').member_holonyms()

[Synset('teacher-student_relation.n.01')]

>>> wn.synset('limb.n.01').part_holonyms()

[Synset('appendicular_skeleton.n.01')]

>>> wn.synset('iron.n.01').substance_holonyms()

[Synset('iron_ore.n.01'), Synset('steel.n.01')]

4. Здійснити аналіз словника вимов. Знайти скільки різних слів він містить. Який відсоток слів з цього словника можуть мати різну вимову?

5. Який відсоток синсетів іменників не мають гіпонімів? До всіх синсетів можна доступитися за допомогою wn.all_synsets('n').  

7. Модифікувати програму генерації випадкового тексту для виконання наступного: зберігати можливі наступні слова у списку та вибирати їх за допомогою random.choice() попередньо виконавши import random.

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

16. Використовуючи один з методів визначення подібності слів побудуйте відсортований по спаданню список значень подібності для наступних пар слів: monk-oracle, cemetery-woodland, food-rooster, coast-hill, forest-graveyard, shore-woodland, monk-slave, coast-forest, lad-wizard, chord-smile, glass-magician, rooster-voyage, noon-string.

>>> monk = wn.synset('monk.n.01')

>>> oracle = wn.synset('oracle.n.01')

>>> oracle.path_similarity(monk)

0.125

>>> cemetery = wn.synset('cemetery.n.01')

>>> woodland = wn.synset('woodland.n.01')

>>> cemetery.path_similarity(woodland)

0.1111111111111111

>>> food = wn.synset('food.n.01')

>>> rooster = wn.synset('rooster.n.01')

>>> food.path_similarity(rooster)

0.0625

>>> coast = wn.synset('coast.n.01')

>>> hill = wn.synset('hill.n.01')

>>> hill.path_similarity(coast)

0.20000000000000001

>>> forest = wn.synset('forest.n.01')

>>> graveyard = wn.synset('graveyard.n.01')

>>> forest.path_similarity(graveyard)

0.071428571428571425

>>> shore = wn.synset('shore.n.01')

>>> woodland = wn.synset('woodland.n.01')

>>> shore.path_similarity(woodland)

0.20000000000000001

>>> slave = wn.synset('slave.n.01')

>>> monk.path_similarity(slave)

0.20000000000000001

>>> coast.path_similarity(forest)

0.090909090909090912

>>> lad = wn.synset('lad.n.01')

>>> wizard = wn.synset('wizard.n.01')

>>> lad.path_similarity(wizard)

0.20000000000000001

>>> chord = wn.synset('chord.n.01')

>>> smile = wn.synset('smile.n.01')

>>> chord.path_similarity(smile)

0.090909090909090912

>>> glass = wn.synset('glass.n.01')

>>> magician = wn.synset('magician.n.01')

>>> glass.path_similarity(magician)

0.1111111111111111

>>> voyage = wn.synset('voyage.n.01')

>>> rooster.path_similarity(voyage)

0.041666666666666664

>>> noon = wn.synset('noon.n.01')

>>> string = wn.synset('string.n.01')

>>> noon.path_similarity(string)

0.058823529411764705

>>>

Висновок:

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


 

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

30807. Уход за бетоном в процессе твердения. Распалубливание конструкций 16.32 KB
  Открытую поверхность бетона прежде всего предохраняют от вредного воздействия прямых солнечных лучей ветра и дождя. Если поверхность бетона предварительно была укрыта влагоемкими материалами брезентом матами песком и др. В жарком сухом климате если не обеспечить благоприятных температурновлажностных условий твердения прочность бетона снижается на 15. В начальный период ухода за бетоном не следует обильной поливкой сразу после укладки нарушать структуру твердеющего бетона.
30808. Бетонирование массивов и фундаментов 14.03 KB
  В фундаменты и массивы в зависимости от объема заглубления высоты и других особенностей бетонную смесь укладывают по следующим технологическим схемам: с разгрузкой смеси из транспортного прибора непосредственно в опалубку с передвижного моста или эстакады с помощью вибропитателей и виброжелобов бетоноукладчиков бетононасосов бадьями с помощью кранов. В ступенчатые фундаменты с общей высотой до 3 м и площадью нижней ступени до 6 м2 смесь подают через верхний край опалубки предусматривая меры против смещения анкерных болтов и закладных...
30809. Бетонирование полов 15.33 KB
  Для осуществления процесса укладки плиты разбивают на карты. Если толщина плит меньше 05 м то разбивку на карты и укладку бетона ведут в таком порядке: Площадь делят на картыполосы по 34м Устанавливают по краям полос маячные доски. При большей толщине плиты разбивают на параллельные карты шириной 5. Карты бетонируют подряд т.
30810. Сетевые и локальные СУБД 12.74 KB
  Существенной проблемой СУБД такого типа является синхронизация копий данных именно поэтому для решения задач требующих совместной работы нескольких пользователей локальные СУБД фактически не используются. К сетевым относятся файлсерверные клиентсерверные и распределенные СУБД. В файлсерверных СУБД все данные обычно размещаются в одном или нескольких каталогах достаточно мощной машины специально выделенной для этих целей и постоянно подключенной к сети.
30811. Процес нормализации баз данных 16.04 KB
  Например задано следующее отношение: ПРЕДМЕТ Код предмета. Переведем атрибут с повторяющимися значениями в новую сущность назначим ей первичный ключ Код преподавателя и свяжем с исходной сущностью ссылкой на ее первичный ключ Код предмета. В результате получим две сущности причем во вторую сущность добавятся характеризующие ее атрибуты: ПРЕДМЕТ Код предмета. Название Цикл Объем часов; ПРЕПОДАВАТЕЛЬ Код преподавателя ФИО Должность Оклад Адрес Код предмета.
30812. ПОТОКИ И ПРОЦЕССЫ 13.25 KB
  Процесс обеспечивает программу всем что ей нужно для работы включая один поток. Этот стандартный поток основной поток используется для выполнения кода программы. Основной поток типичного процесса начинает работу с точки входа и продолжает выполняться в соответствии со всеми циклами условными операторами и вызовами функций. Основной поток завершается вместе с завершением процесса.
30813. Гонки и тупики 11.15 KB
  Пусть Поток 1 получил доступ к ресурсу и изменил его в своих интересах; затем активизировался Поток 2 и модифицировал этот же ресурс до завершения Потока 1. Поток 1 полагает что ресурс остался в том же состоянии что и был до переключения. Тупики имеют место тогда когда поток ожидает ресурс который в данный момент принадлежит другому потоку.
30814. Создание таблиц для базы 18.26 KB
  Создание таблиц для базы Важным моментом при создании базы данных является распределение информации между полями записи. Очевидно что информация может быть распределена между полями различным образом. После того как определены поля записи необходимо выполнить распределение полей по таблицам. В простой базе данных все поля можно разместить в одной таблице.
30815. Создание модуля данных 23.7 KB
  Создание модуля данных Для размещения компонентов доступа к данным в приложении баз данных желательно использовать специальную форму модуль данных класс TDtModule. Обратите внимание что модуль данных не имеет ничего общего с обычной формой приложения ведь его непосредственным предком является класс TComponent. В модуле данных можно размещать только невизуальные компоненты. Модуль данных доступен разработчику как и любой другой модуль проекта на этапе разработки.