用于分类学/一般词分类的开源预训练模型 [关闭]
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 提供了我正在寻找的东西以上是关于用于分类学/一般词分类的开源预训练模型 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章