首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开放源码预训练的分类学/一般词分类模型

开放源码预训练的分类学/一般词分类模型
EN

Stack Overflow用户
提问于 2020-11-05 19:57:18
回答 1查看 71关注 0票数 0

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

是否有一个开放源码的预先培训的模型,可以做到这一点,不需要事先培训数据集?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-05 22:10:42

听起来,WordNet很适合这个任务。WordNet是一个词汇数据库,它像分类法一样将单词组织在层次树结构中,并包含许多单词的附加语义信息。参见这里是“猫”的WordNet,以获得基于浏览器的演示。一个单词在另一个单词之上的一个层次级别就是所谓的“hypernym”。猫的超自然现象是“猫”。使用NLTK中的WordNet,您可以得到两个单词的超限,直到得到相同的超级词为止。

对于“猫”和“狗”,常见的超自然现象是“动物”。参见这里的示例代码:

代码语言:javascript
复制
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'

在您的问题中,您需要一个机器学习解决方案。一种经典的方法是通过 根西姆实现单词向量,但它们不会根据专家创建的数据库(如WordNet)给出一个明确的公共类别,而只是给出训练数据中目标单词(“猫”、“狗”)旁边经常出现的单词。我认为机器学习不一定是这里最好的工具。见示例:

代码语言:javascript
复制
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)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64704461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档