【问题标题】:WordNet: how to determine the top two most related synonymesWordNet:如何确定前两个最相关的同义词
【发布时间】:2014-04-16 13:13:44
【问题描述】:

是否有使用 WordNet 同义词集确定最相关同义词的快速方法?以下是我的尝试: ...为一些人工作,但对另一些人没有。如果第一个同义词集仅包含原始单词,那么您不能得到多个单词,例如在下面使用朋友的示例中。

>>> [synset.lemma_names for synset in wn.synsets('car')][0][:2]
['car', 'auto']

>>>[synset.lemma_names for synset in wn.synsets('friend')][0]
['friend']

朋友的实际系统:

>>>[synset.lemma_names for synset in wn.synsets('friend')]
[['friend'], ['ally', 'friend'], ['acquaintance', 'friend'], ['supporter', 'protagonist', 'champion', 'admirer', 'booster', 'friend'], ['Friend', 'Quaker']]

有什么想法吗?

【问题讨论】:

    标签: python similarity wordnet


    【解决方案1】:

    Wordnet 映射和关联感官而不是单词。因此在 WordNet 中可能无法查找相关的同义词。你也陷入了多义词的问题;没有上下文,任何词的意义都不清楚:

    >>> wn.synsets('car')
    [Synset('car.n.01'), Synset('car.n.02'), Synset('car.n.03'), Synset('car.n.04'), Synset('cable_car.n.01')]
    >>> wn.synsets('auto')
    [Synset('car.n.01')]
    >>> wn.synsets('friend')
    [Synset('friend.n.01'), Synset('ally.n.02'), Synset('acquaintance.n.03'), Synset('supporter.n.01'), Synset('friend.n.05')]
    

    当您查看每个 lemma_name 包含的不同含义时,您会得到一个递归链的 lemmas of lemmas of synsets ...:

    from itertools import chain
    >>> set(chain(*[j.lemma_names() for j in wn.synsets('friend')]))set([u'acquaintance', u'champion', u'Quaker', u'protagonist', u'friend', u'admirer', u'Friend', u'supporter', u'ally', u'booster'])
    >>> [wn.synsets(i) for i in set(chain(*[j.lemma_names() for j in wn.synsets('friend')]))]
    [[Synset('acquaintance.n.01'), Synset('acquaintance.n.02'), Synset('acquaintance.n.03')], [Synset('champion.n.01'), Synset('champion.n.02'), Synset('supporter.n.01'), Synset('ace.n.03'), Synset('champion.v.01'), Synset('champion.s.01')], [Synset('friend.n.05'), Synset('quaker.n.02')], [Synset('supporter.n.01'), Synset('protagonist.n.02')], [Synset('friend.n.01'), Synset('ally.n.02'), Synset('acquaintance.n.03'), Synset('supporter.n.01'), Synset('friend.n.05')], [Synset('supporter.n.01'), Synset('admirer.n.02'), Synset('admirer.n.03')], [Synset('friend.n.01'), Synset('ally.n.02'), Synset('acquaintance.n.03'), Synset('supporter.n.01'), Synset('friend.n.05')], [Synset('supporter.n.01'), Synset('patron.n.03'), Synset('assistant.n.01'), Synset('garter.n.01'), Synset('athletic_supporter.n.01')], [Synset('ally.n.01'), Synset('ally.n.02'), Synset('ally.v.01')], [Synset('supporter.n.01'), Synset('promoter.n.01'), Synset('booster.n.03'), Synset('booster.n.04'), Synset('booster.n.05'), Synset('booster.n.06')]]
    >>> [k.lemma_names() for k in chain(*[wn.synsets(i) for i in set(chain(*[j.lemma_names() for j in wn.synsets('friend')]))])]
    [[u'acquaintance', u'familiarity', u'conversance', u'conversancy'], [u'acquaintance', u'acquaintanceship'], [u'acquaintance', u'friend'], [u'champion', u'champ', u'title-holder'], [u'champion', u'fighter', u'hero', u'paladin'], [u'supporter', u'protagonist', u'champion', u'admirer', u'booster', u'friend'], [u'ace', u'adept', u'champion', u'sensation', u'maven', u'mavin', u'virtuoso', u'genius', u'hotshot', u'star', u'superstar', u'whiz', u'whizz', u'wizard', u'wiz'], [u'champion', u'defend'], [u'champion', u'prizewinning'], [u'Friend', u'Quaker'], [u'quaker', u'trembler'], [u'supporter', u'protagonist', u'champion', u'admirer', u'booster', u'friend'], [u'protagonist', u'agonist'], [u'friend'], [u'ally', u'friend'], [u'acquaintance', u'friend'], [u'supporter', u'protagonist', u'champion', u'admirer', u'booster', u'friend'], [u'Friend', u'Quaker'], [u'supporter', u'protagonist', u'champion', u'admirer', u'booster', u'friend'], [u'admirer'], [u'admirer', u'adorer'], [u'friend'], [u'ally', u'friend'], [u'acquaintance', u'friend'], [u'supporter', u'protagonist', u'champion', u'admirer', u'booster', u'friend'], [u'Friend', u'Quaker'], [u'supporter', u'protagonist', u'champion', u'admirer', u'booster', u'friend'], [u'patron', u'sponsor', u'supporter'], [u'assistant', u'helper', u'help', u'supporter'], [u'garter', u'supporter'], [u'athletic_supporter', u'supporter', u'suspensor', u'jockstrap', u'jock'], [u'ally'], [u'ally', u'friend'], [u'ally'], [u'supporter', u'protagonist', u'champion', u'admirer', u'booster', u'friend'], [u'promoter', u'booster', u'plugger'], [u'booster', u'shoplifter', u'lifter'], [u'booster', u'booster_amplifier', u'booster_station', u'relay_link', u'relay_station', u'relay_transmitter'], [u'booster', u'booster_rocket', u'booster_unit', u'takeoff_booster', u'takeoff_rocket'], [u'booster', u'booster_dose', u'booster_shot', u'recall_dose']]
    

    简而言之,在 WordNet 中可能无法找到相关的同义词,很可能您需要寻找其他资源。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2017-09-25
      • 2014-05-26
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      相关资源
      最近更新 更多