середа, 6 березня 2019 р.

Задача №8 Лаб. робота №9

Умова задачі: Напишіть програму, яка обробить Brown Corpus і допоможе відповісти на наступне запитання: які іменники частіше зустрічаються у множині ніж в однині (розглядати тільки регулярні форми множини).

Аналіз задачі. Потрібно знайти слова, які промарковані "NN" або "NNS" і порівняти їх частоту. Якщо dog - NN - зустрічається 5 разів а dogs - NNS - зустрічається 7 разів то "dog" частіше зустрічається у множині ніж в однині.


Один з варіантів рішення.
Подаю без коментарів і сподіваюсь на обговорення.

import nltk
from nltk.corpus import brown
wnl = nltk.WordNetLemmatizer()
noun_list=[(wnl.lemmatize(w),t,w)
for w,t in brown.tagged_words() if t=="NN" or t=="NNS"]
cfd=nltk.ConditionalFreqDist([(wl,t) for wl,t,w in noun_list])
list1=[set([w for wl,t,w in noun_list if wl==i and w[-1]=='s'])
for i in cfd.conditions()
if len(cfd[i].keys())==2 and cfd[i].keys()[0]=="NNS"]
>>> len(list1)
852
>>> list1[:10]
[set([]), set([]), set([]), set([]), set([]), set(['Headquarters']), set([]), set(['aberrations']), set(['abolitionists']), set(['aborigines'])]
view raw f.py hosted with ❤ by GitHub


Трохи страшненько але може спонукає студентів до акуратного аналізу і розбору рішення