【问题标题】:Get WordNet's domain name for the specified word获取指定单词的 WordNet 域名
【发布时间】:2012-12-02 14:47:55
【问题描述】:

我知道 WordNet 有域层次结构:例如运动->足球。

1) 是否可以列出所有相关的词,例如,与“sport->football”子域相关的词?

  Response: goalkeeper, forward, penalty, ball, field, stadium, referee and so on.

2) 获取给定单词的域名,例如“守门员”?

 Need something like [sport->football; sport->hockey] or [football;hockey] or just 'football'.

用于文档分类任务。

【问题讨论】:

    标签: nlp cluster-analysis semantic-web wordnet document-classification


    【解决方案1】:

    WordNet 有一个上位词/下位词层次结构,但这不是你想要的,因为你 守门员可以看到:

    from nltk.corpus import wordnet
    s = wordnet.synsets('goalkeeper')[0]
    s.hypernym_paths()
    

    其中一个结果是:

    [Synset('entity.n.01'),
    Synset('physical_entity.n.01'),
    Synset('causal_agent.n.01'),
    Synset('person.n.01'),
    Synset('contestant.n.01'),
    Synset('athlete.n.01'),
    Synset('soccer_player.n.01'),
    Synset('goalkeeper.n.01')]
    

    有两种方法称为usage_domains()topic_domains(),但它们对于大多数单词返回一个空列表:

    s = wordnet.synsets('football')[0]
    s.topic_domains()
    >>> []
    s.usage_domains()
    >>> []
    

    The WordNet Domains project 但是可能是您正在寻找的。它提供了一个文本文件,其中包含普林斯顿 WordNet 2.0 同义词集与其相应域之间的映射。您必须注册您的电子邮件地址才能访问数据。 然后您可以读取与您的 WordNet 版本相对应的文件(它们提供 2.0 和 3.2),例如使用 anydbm 模块:

    import anydbm
    fh = open('wn-domains-2.0-20050210', 'r')
    dbdomains = anydbm.open('dbdomains', 'c')
    for line in fh:
        offset, domain = line.split('\t')
        dbdomains[offset[:-2]] = domain
    fh.close()
    

    然后您可以使用同义词集的偏移属性来找出它的域。也许您必须在开头添加一个零:

    dbdomains.get('0' + str(wordnet.synsets('travel_guidebook')[0].offset))
    >>> 'linguistics\n'
    

    【讨论】:

    • 谢谢你,苏珊娜!我已经下载了 WordNet Domains,但我不清楚如何将它与 WordNet 集成..(((
    • 我为我的 WordNet 2.0 获得了这个版本的 WordNet Domains 并完全复制了您的代码,但 dbdomains.get(whatever) 为我尝试过的每个whatever 返回None 是给定形式的。 dbdomains 确实有看起来像犹太洁食的键/域对(准确地说是 99330 个),但似乎没有带前导 0 的 WordNet 偏移量对应于这些键中的任何一个。有什么见解吗?
    • 亲爱的@Suzana_K,您似乎真的掌握了这个主题,您有想法回答我的question吗?我将尝试在一个查询中获取每个重要单词的域,并检测在一个给定的查询集群中是否存在一个占主导地位的公共域,但是这种方法没有考虑通过在某些查询中使用多个单词推断出的语义上下文查询。你怎么看 ?非常感谢您提前
    • @James 您找到问题的答案了吗?我有完全相同的问题...我的集合中没有任何单词似乎与域相关...
    • 也许联系 WordNet Domains 项目的作者会有所帮助。可能是该项目不再继续了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多