суботу, 17 жовтня 2009 р.

Визначення середнього значення полісемії

import nltk
from nltk import wordnet as wn
#можна працювати із запропонованою конструкцією
a=wn.synsets('car','n')
>>> a
[Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')]
>>> len(a)
5
#а я вирішив цю задачу трохи інакше (результати порівняємо і обговоримо на заняттях)
#коментарів не даю, кожен аналізує чи вірні будуть в мене результати
>>> d=[]
>>> for i in wn.all_synsets('n'):
for j in i.lemma_names:
d.append(j)
>>> fd=nltk.FreqDist(d)
>>> poly_n=len(fd)/len(fd.keys())

3 коментарі:

  1. В мене виникло одне запитання. Яка різниця між len(fd)і len(fd.keys())?
    Я їх перевірила і виявилось, що вони одинакові:
    >>> len(fd)
    119034
    >>> len(fd.keys())
    119034
    І не дивлячись на те, що, наприклад у 'dog', іменник має 7 значень, дієслово 1 значення, а прислівник - 0, у всіх цих випадках середнє значення полісемії дорівнює 1.
    Скажіть, будь ласка, це так має бути? Чи потрібно використати якусь іншу формулу?

    ВідповістиВидалити
  2. from __future__ import division
    і тоді буде рахувати без заокруглення=)

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