我已经多次在网上看过这个问题:
如何提取页面的含义。
而且我知道我没有足够的经验来尝试提出任何解决方案。对我而言,这是网络编程或整个计算机技术的圣杯。
但是,通过想象力,让我们假设我已经编写了完全正确的最终脚本。例如,我输入以下文字:
想象力使人类度过了黑暗时代,走向了现在的文明状态。想象力导致哥伦布发现美国。想象力导致富兰克林发现电力。
我的强大脚本提取了意思,并说:
人类思考的能力促使他们发现新事物。
出于本示例的目的,我使用“String”来解释文本的含义。但是,如果我必须将其存储在数据库,数组或任何类型的存储中,那么我将使用的数据类型是什么?
请注意,我可以使用另一个使用不同类比的文本,但仍然具有相同的含义,例如:
想象力有助于人类的进步。
现在,我可以输入关于想象力重要性的搜索查询,并显示这两个结果。但他们将如何匹配?它会是一个字符串比较吗?有些整数,浮点数?也许甚至二进制?
保存下的意义是什么?我想听听你的意见。
更新:让我简单地重述一下这个问题。
您如何在数据中表示意义?
答案 0 :(得分:6)
假设我们的大脑无法访问形而上学的云服务器,意义表示为神经元连接,荷尔蒙水平,电活动 - 甚至是量子波动 - 以及所有这些以及外部世界和其他大脑。所以这是个好消息:至少我们知道你的问题至少有一个答案(意思是在某处,某种程度上表示)。坏消息是,我们大多数人都不知道这是如何运作的,那些认为他们理解的人无法说服其他人或彼此。作为一个无能为力的人,我无法给出你的问题的答案,但提供了我遇到的问题的清单,这些答案是我对这个大问题的较小和堕落版本所遇到的。
如果要表示词法实体(例如,概念,动作)的含义,可以使用分布式模型,例如vector space models。在这些模型中,通常意义具有几何分量。每个概念都表示为一个向量,您可以将概念放在一个空间中,使类似的概念彼此更接近。构造这样一个空间的一种非常常见的方法是选择一组常用词(基础词)作为空间的维度,并简单地计算目标概念在语音/文本中与这些基础词一起被观察的次数。类似的概念将用于类似的背景;因此,他们的向量将指向相似的方向。最重要的是,您可以执行一系列加权,归一化,降维和重组技术(例如,tf-idf,http://en.wikipedia.org/wiki/Pointwise_mutual_information,SVD)。一个稍微相关但概率 - 而不是几何 - 的方法是latent Dirichlet allocation和其他生成/贝叶斯模型已经在另一个答案中提到过。
向量空间模型方法有利于判别目的。您可以决定两个给定短语是否在语义上相关(例如,将查询与文档匹配或查找类似的搜索查询对以帮助用户扩展其查询)。但是在这些模型中合并语法并不是非常简单。我无法清楚地看到你如何通过向量来表示句子的含义。
Grammar formalisms可以帮助整合语法并将结构带入意义和概念之间的关系(例如head-driven phrase structure grammar)。如果您构建两个共享词汇和语法的代理并通过这些机制进行通信(即,将信息从一个传递到另一个),您可以说它们代表了意义。当一个机器人告诉另一个人通过内置或出现的语法和词汇选择“黑盒子上面的红色圆圈”而另一个人成功地挑选出预期的物体时,这意味着在何处以及如何表示意义。(见这个关于词汇基础的非常有趣的实验:Talking Heads)。
捕获意义的另一种方法是使用网络。例如,通过将每个概念表示为图中的节点以及概念之间的关系作为节点之间的边缘,可以提出实际的意义表示。 Concept Net是一个旨在表达常识的项目,可以将其视为常识概念的语义网络。在某种程度上,某个概念的含义通过其相对于网络中其他概念的位置来表示。
说到常识,Cyc是一个试图捕捉常识知识的项目的另一个雄心勃勃的例子,但它以与Concept Net截然不同的方式实现。 Cyc使用定义明确的符号语言以非模糊的方式表示对象的属性和对象之间的关系。通过使用一套非常大的规则和概念以及推理引擎,人们可以得出关于世界的推论,回答诸如“马可生病吗?”,“给我一张悲伤的人的照片”等问题。
答案 1 :(得分:1)
我曾在一家试图在以前的公司做过这个的系统上工作过。我们更关注“非结构化文档与这种非结构化文档最相似的内容”,但相关部分是我们如何确定文档的“含义”。
我们使用了两种不同的算法:PLSA(概率潜在语义分析)和PSVM(概率支持向量机)。两者都提取的主题在被分析的文档中比在集合中的其他文档中更为普遍。
主题本身具有数字ID,并且从文档到主题有一个外部参照表。为了确定两个文档的接近程度,我们将查看文档共有的主题百分比。
假设您的超级脚本可以根据输入的查询生成主题,您可以使用类似的结构。它具有仅包含整数的外部参照表的附加优点,因此您只需查看整数而不是字符串操作。
答案 2 :(得分:0)
语义是一个广泛而深刻的领域,并且有许多模型,从AI实现的角度来看,它们都具有优势和问题。有了这么少的背景,人们很难提出建议,除了“研究文献,选择一个与你的直觉产生共鸣的理论(如果你在这方面取得了成功,用你自己更好的理论取代它,并获得学分)“。话虽如此,我可以模糊地回忆起的新生课程材料曾经有过关于称为“框架”的递归结构的好话,但这必定是在15年前。
答案 3 :(得分:0)
含义通常是一个抽象概念,它是一个内部黑匣子数据结构,它取决于所选择的算法。但这不是有趣的部分。如果你做一些语义分析,一般问题涉及意义上的差异,例如,如果两个文档谈论相同的主题,或者某些文档有多么不同,或者对具有相似含义的文档进行分组。
如果使用向量空间模型,则意义/语义可以由表示特定主题的向量集合表示。提取此类模式的一种方法是http://en.wikipedia.org/wiki/Latent_semantic_analysis或http://en.wikipedia.org/wiki/Nonnegative_matrix_factorization。但是有更复杂的统计模型,它们通过某些概率分布的参数来表示语义。最近的方法是http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation。
答案 4 :(得分:0)
我将谈论Semantic Web,因为我认为它提供了有关该主题的最先进的研究和语言实施。
Resource Description Framework是可用于描述信息的语义Web固有的众多数据模型之一。
RDF是一种抽象模型,具有多种序列化格式(即 文件格式),以及资源或三元组的特定方式 编码因格式而异
和
但是,实际上,RDF数据通常是关系型的 数据库或本机表示也称为Triplestores或Quad 如果上下文(即命名图)也为每个都保留 RDF三重。
可以使用RDF Queries检索RDF内容。
Topic Maps另一种知识数据存储和表示模型。
主题地图是表示和交换的标准 知识,重点是信息的可查找性。
和
在2000年,Topic Maps是用XML语法XTM定义的。这是 现在通常被称为“XTM 1.0”,并且仍然相当普遍。
ISO / IEC13250本部分中定义的唯一原子基本类型 (在4.3中)是字符串并且为null。通过数据类型,数据的概念 任何类型的任何类型都可以在此模型中表示。所有使用的数据类型都应该 有一个字符串表示其值空间和此字符串 表示是存储在主题图中的内容。信息 关于值属于哪种数据类型,将分别存储在 标识数据类型的定位器的形式。
还提出了许多其他格式,您可以查看this article了解更多信息。
我还想链接一个recent answer我写了一篇关于类似主题的文章以及许多有用的链接。
在阅读各篇文章之后,我认为每种方法都采用的共同方向是将数据存储为文本格式。相关信息可以直接作为文本存储在数据库中。
以可理解的文本格式提供数据有几个好处,可能不仅仅是缺点。
其他语义方法(如Notation 3 (N3)或Turtle Syntax)使用略有不同的格式,但仍然是纯文本。
N3示例
@prefix dc: <http://purl.org/dc/elements/1.1/>.
<http://en.wikipedia.org/wiki/Tony_Benn>
dc:title "Tony Benn";
dc:publisher "Wikipedia".
最后,我想为您链接一篇您应阅读的有用文章: Standardization of Unstructured Textual Data into Semantic Web Format 。
答案 5 :(得分:0)
让我们假设您找到了可以提供文本含义的终极算法。特别是您选择了一个字符串表示,但考虑到您的算法正确找到了含义,那么它可以由算法唯一标识。正确?
因此,为简单起见,我们假设该特定文本只有一个含义。在这种情况下,它在算法输出描述它的短语之前被唯一标识。
所以,基本上,为了存储意义,我们首先需要一个唯一的标识符。
意思只能存在于与主题的关系中。这是一个主题的意义。为了使该主题具有意义,我们必须对其有所了解。为了使主体具有独特的意义,必须明确地向观察者表示(即算法)。例如,由于数学符号的标准化,语句“2 = 3”将具有假的含义。但用外语写的文字对我们没有任何意义。没有任何我们无法理解的东西。例如“生命的意义是什么?”
总之,为了构建一个可以从任何随机文本中提取绝对意义的算法,我们作为人类必须首先知道任何事物的绝对意义。 :)
实际上,您只能以已知格式提取已知语言的已知文本的含义。为此,在神经网络,自然语言处理等领域有工具和研究......
答案 6 :(得分:-2)
尝试将其变成char *(字符串c样式),它很容易存储在数据库中并且易于使用,使其长度为50(10个字)或75个(15个字)
编辑:将两者放在相同的单词(想象力)上,然后检查相似的索引并将它们分配给相同的单词
使用
SELECT * FROM Dictionary WHERE Index = "Imagination"
抱歉,我对SQL不太熟悉