在词性之间转换单词,当 wordnet 不这样做时

Convert words between part of speech, when wordnet doesn't do it

关于词性转换的Q&A很多,几乎都指向WordNetderivationally_related_forms()(比如Convert words between verb/noun/adjective forms

但是,我发现关于此的 WordNet 数据存在重大差距。例如,我发现 'succeed'、'success'、'successful' 之间没有任何关系,它们看起来应该是同一概念的 V/N/A 变体。同样,我尝试过的词形还原器中的 none 似乎认为这些是相关的,尽管我可以让雪球词干分析器将 'failure' 变成 'failur' 这并没有多大帮助。

所以我的问题是:

  1. 是否有任何其他(程序化的,最好是 python)工具可以进行这种 POS 转换,我应该检查一下? (WordNet 的命中率掩盖了我对 google 替代方案所做的每一次尝试。)
  2. 如果做不到这一点,是否有办法向 WordNet 提交添加内容,尽管他们目前处于“由于缺乏资金”的情况? (或者,我们可以发起众筹活动吗?)
  3. 如果做不到这一点,是否有直接的方法可以将补充语料库分发给 nltk 用户,从而在需要的地方扩充 WordNet 数据?

(要求 software/data 建议对于 Whosebug 来说是题外话;但我已尝试给出更通用的“方法”答案。)

  1. 另一种查找相关词的方法是机器学习方法之一。如果您单独处理单词,请查看单词嵌入,例如 GloVe 或 Word2Vec。 Spacy 和 gensim 有与它们一起工作的库,尽管我也得到了一些关于在 nltk 中与它们一起工作的教程的搜索结果。

2/3。 Princeton WordNet 成功的(在我看来)核心原因之一是他们使用的自由许可证。这意味着您可以对项目进行分支、添加额外数据并重新分发。

您可能还会在 http://globalwordnet.org/resources/global-wordnet-grid/ 找到有用的东西,显然其中大部分不是英语,但那里有一些多语言的,可能值得评估?

另一种方法是创建包装函数。它首先搜索您认为应该在其中的修复和添加的查找列表。如果没有找到,那么它会像往常一样搜索 WordNet。这允许您添加 'succeed', 'success', 'successful',然后当最终用户指出缺少的内容时添加其他词组。