词语特征标签

我正在为我的 AI 课程做一个谜语 AI 聊天机器人。所以我想聊天机器人的输入可能是:

类似这样的:“它是蓝色的,它在上方,但它不是天花板”

翻译:

<Object X>    <blue>    <up>    <!ceiling></Object X>

(答案:天空?)

因此,输入是一组特征(对象中存在/不存在的特征),输出是一个匹配的、最可能的对象。

领域将限定为一定数量的对象,我可以自己输入所有属性,但我在想:

我如何以编程方式构建一个词语特征的数据库?是否存在这样的数据库?我如何标记一个词语,如何以编程方式找到它的所有属性?我正在考虑抓取维基百科或一些论坛,但我看不到它建立任何可靠的词语标签数据库。

关于我如何实现这一目标的任何想法?关于这个主题的一些文献的任何想法?

谢谢


回答:

这听起来像是一个基本的分类问题。 你本质上是在问:给定 N 个特征(color=blue,location=up 等),M 个分类中哪一个最有可能? 有许多算法可以完成这项任务(朴素贝叶斯、最大熵、支持向量机),但您必须研究哪一个最准确且最容易实现。 最大的挑战通常是获取准确的训练数据,但如果您愿意将其限制为手动输入的示例列表,那么这应该可以简化您的实施。

您的示例表明,您选择的任何算法都必须支持稀疏数据。 换句话说,如果您在 300 个特征上训练了系统,它不会要求您输入所有 300 个特征才能获得答案。 它还会使您的训练和测试文件更小,因为您将省略与某些对象无关的特征。 例如

sky | color:blue,location:uptree | has_bark:true,has_leaves:true,is_an_organism=truecat | has_fur:true,eats_mice:true,is_an_animal=true,is_an_organism=true

它可能不是很有帮助,因为它具有专有性,但是一个类似于您尝试完成的商业应用程序是网站 20q.net,尽管该系统会问问题而不是用户。 有趣的是,它是基于用户输入“在线”训练的。

维基百科肯定有很多数据,但您可能会发现为您的程序提取该数据非常困难。 Cyc 的数据更加规范化,但其 API 具有巨大的学习曲线。 另一种选择是语义词典项目 Wordnet。 它为几乎每种编程语言都提供了相当直观的 API,以及数千个单词的广泛的上位词/下位词模型(例如,cat 是一种猫科动物/哺乳动物/动物/生物/事物)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注