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

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

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

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

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

6 коментарів:

  1. Перевірити чи правильно рахує програма можна тут
    http://wordnet.princeton.edu/wordnet/man/wnstats.7WN.html

    ВідповістиВидалити
  2. q=q+len(wn.synsets(i,'n'))
    Traceback (most recent call last):
    File "", line 2, in
    q=q+len(wn.synsets(i,'n'))
    TypeError: 'Synset' object is not callable

    ВідповістиВидалити
  3. Все працює. Можна ще й так переписати
    from __future__ import division
    import nltk
    from nltk.corpus import wordnet as wn
    all_nouns=[j for i in wn.all_synsets('n') for j in i.lemma_names]
    quantity_of_sens=sum([len(wn.synsets(i,'n')) for i in set(all_nouns)])
    print 'nouns_poly=',quantity_of_sens/len(set(all_nouns))

    ВідповістиВидалити