【问题标题】:Python: Adjective Synsets in NLTKPython:NLTK 中的形容词同义词集
【发布时间】:2012-11-12 21:51:11
【问题描述】:

NLTK 中是否有一种方法可以找到描述单词的某些形容词属性?例如,如果我输入“摩天大楼”这个词,就会出现“高”、“结构化”等属性。我对反过来更感兴趣,如果我输入“高”这个词,那么它会列出与其他词的语义关系。

我相信 NLTK 上的属性方法是为此而设计的,但它并不像我上面描述的那样特别有效,这是我正在使用的代码:

from nltk.corpus import wordnet as wn
synsets = wn.synsets('skyscraper')
print[str(syns.attributes()) for syns in synsets]

我尝试过使用 part_meronyms 和 attributes 方法,但这并不总是导致单词的形容词属性。我知道其他 Python 工具可以让我这样做,但我现在更愿意只使用 NLTK。

【问题讨论】:

    标签: python nlp nltk


    【解决方案1】:

    使用纯粹的 NLTK,您可以通过自己的函数分两步实现这一目标。

    基本理念

    • 第 1 步。为您的目标词(“skyscraper”或“tall”)找到所有有意义的搭配
    • 第 2 步。对于您感兴趣的搭配中识别的形容词,解析词性以获得语义关系。

    对于第 1 步。这个SO question on Scoring bigrams 具有非常相关的定义。您必须针对您的问题调整BigramAssocMeasures。 (它使用棕色语料库,但您可以使用许多其他语料库。)

    对于第 2 步,您可以使用 pos_tag() 甚至 Tree.parse() 之类的东西来获得您正在寻找的目标形容词的关联。 p>

    对于(更简单的)替代方法,this link 提供了应该相关的 text.similar() 示例。

    希望对您有所帮助。

    【讨论】:

    • 谢谢。我希望 NLTK 能够通过 WordNet 建立某种形式的语义关系,例如上位词/下位词的工作原理,但我绝对可以看到这将如何适用于我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多