用于分类学/一般词分类的开源预训练模型 [关闭]

Posted

技术标签:

【中文标题】用于分类学/一般词分类的开源预训练模型 [关闭]【英文标题】:Open source pre-trained models for taxonomy/general word classification [closed] 【发布时间】:2021-02-18 14:05:59 【问题描述】:

如果存在某种基于分类/语义字段的关系,我想了解任何两个词。例如,给定单词“Dog”和“Cat”,我希望有一个模型可以返回“Dog”和“Cat”匹配的单词,例如在这种情况下该模型将返回的一些单词可能是“动物”、“哺乳动物”、“宠物”等。

是否有一个开源的预训练模型可以开箱即用地做到这一点,不需要事先训练数据集?

【问题讨论】:

WordNet 是一个词间语义关系的词汇数据库。它不是一种语言模型,但会像您所描述的那样将单词链接到语义关系中。 【参考方案1】:

WordNet 之类的声音非常适合这项任务。 WordNet 是一个词汇数据库,它以分层树结构(如分类法)组织单词,并包含许多单词的附加语义信息。参见例如WordNet for "cat" here 用于基于浏览器的演示。比另一个词高一个层次的词是所谓的“上位词”。 cat 的上位词是例如'猫'。使用WordNet in NLTK,您可以获得两个单词的上位词,直到获得相同的上位词。

对于“猫”和“狗”,常用的上位词是“动物”。在此处查看示例代码:

from nltk.corpus import wordnet as wn

wn.synsets('cat')
# output: [Synset('cat.n.01'), Synset('guy.n.01'), Synset('cat.n.03'), Synset('kat.n.01'),  Synset('cat-o'-nine-tails.n.01'), Synset('caterpillar.n.02'), ...]
wn.synset('cat.n.01').hypernyms()
# output: [Synset('feline.n.01')]
wn.synset('feline.n.01').hypernyms()
wn.synset('carnivore.n.01').hypernyms()
wn.synset('placental.n.01').hypernyms()
wn.synset('mammal.n.01').hypernyms()
wn.synset('vertebrate.n.01').hypernyms()
wn.synset('chordate.n.01').hypernyms()
# output: 'animal'

wn.synsets('dog')
# output: [Synset('dog.n.01'), Synset('frump.n.01'), Synset('dog.n.03'), Synset('cad.n.01'), Synset('pawl.n.01'), Synset('chase.v.01')]
wn.synset('dog.n.01').hypernyms()
wn.synset('domestic_animal.n.01').hypernyms()
# output: 'animal'

您在问题中要求机器学习解决方案。经典的方法是通过Gensim 的词向量,但它们不会根据专家创建的数据库(如 WordNet)为您提供明确的常见类别,而只会为您提供接下来经常出现的词到训练数据中的目标词(“猫”、“狗”)。我认为机器学习不一定是这里最好的工具。 见例子:

import gensim.downloader as api

model_glove = api.load("glove-wiki-gigaword-100")

model_glove.most_similar(positive=["dog", "cat"], negative=None, topn=10)

# output: [('dogs', 0.7998143434524536),
 ('pet', 0.7550237774848938),
 ('puppy', 0.7239114046096802),
 ('rabbit', 0.7165164351463318),
 ('cats', 0.7114559412002563),
 ('monkey', 0.6967265605926514),
 ('horse', 0.6890867948532104),
 ('animal', 0.6713783740997314),
 ('mouse', 0.6644925475120544),
 ('boy', 0.6607726812362671)]

【讨论】:

谢谢你,WordNet 提供了我正在寻找的东西

以上是关于用于分类学/一般词分类的开源预训练模型 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

FastText 使用预训练的词向量进行文本分类

BERT 预训练模型及文本分类

有啥方法可以有效地堆叠/集成用于图像分类的预训练模型?

文本分类分类器

文本分类-06Transformer

文本分类-02textCNN