如何在数学/逻辑上表示“猫喝牛奶”等句子的意义?

人工智能 逻辑 知识表示
2021-11-06 05:32:31

我是人工智能领域的新手。

我想知道如何在数学上/逻辑上表示句子的含义,例如:

  1. 猫喝牛奶。
  2. 太阳是黄色的。
  3. 我昨天在上班。

因此,它可以转换为计算机可理解的形式并进行算法分析。

有什么线索吗?

2个回答

让我们首先对您提出的短语进行分类:

  1. 猫喝牛奶。=> 行动
  2. 太阳是黄色的。=> 描述性/声明性,不可变
  3. 我昨天在上班。=> 描述性的,与时间相关的

1)最简单的总是描述性和不可变的(在上下文中)短语,如“太阳是黄色的。”。一些常见的表示:

  • 序言:

颜色('太阳',黄色)。

或者简单地说:

黄色(“太阳”)。

  • 面向对象:

Sun.color=黄色

2)当事实与“我昨天上班”中的时间相关时,我们将描述分为时间指示器和不可变事实:

  • 序言:

什么时候(昨天,在(我,工作场所))。

注意 when 有两个部分,时间标识和不可变事实。

另一个序言变体是:

在(我,工作场所,[何时(昨天)])。

其中列表中的内容(括号)表示“可选的相关事实”。

  • 面向对象:

I.at = {

职位=工作场所;

什么时候=昨天

}

3)“猫喝牛奶”的动作。还有一些更难的:

  • 序言:

饮料(猫,牛奶)。

或者

行动(猫,饮料,牛奶)。

  • 面向对象:

cat.drinks=[牛奶]

或者

cat.action = {

行动=饮料

对象=牛奶

}

显然,这些只是主要思想,不同的程序有很多表示,但大多数处理相同类型的结构。

(注意:术语“计算机可理解”是模棱两可的。当前的计算机什么都不理解。我们说这些表达式是可以理解的,因为它的编译器/解释器接受它们,并描述了短语的内容,程序可以转换他们到其他结果)。

人们通常将这样的句子表示为特定长度的向量,通常长度约为 2500。可以做到这一点的算法是sentence2vec。它基本上是 word2vec 的派生词。它允许您训练一个模型,该模型可以将句子转换为向量,然后您可以将其输入神经网络或其他算法。您可以查看论文,您应该可以在 google 学者上找到该论文。如果你需要链接,我可以得到它。另一种可能性是词嵌入,我还没有找到一篇好的论文,但是 cortical.io 有一个免费的 API,可以让你搞乱它们的实现。根据我们目前的研究,词嵌入更好地模仿了真实的人脑,但在实践中更经常使用 sentence2vec/word2vec。