为了不被wordnet的API所限制,为了不用每次都拿着文档一个一个单位的比对,为了某某某的相似度计算不再计算的头昏眼花,为了我自己之后可能会用到wordnet。In a word,在如此强大的需求之下,我终于决定把wordnet的数据库文件解析出来,按照自己定义的模式保存在数据库中。——在这个过程中,第一次真实得感受到了传统关系数据库的局限性,不知道被热捧的XML数据库发展到什么程度了。
废话一堆,言归正传。接下来,首先将分别说一下总体的思路和wordnet数据库数据表模式的结构和关系,接着依照数据库生成的过程简单解析各张表格的结构,最后部分大概说说目前的使用以及可能的使用,包括一些纯属个人兴趣,和研究或项目没有任何关系的古怪想法。
1、总体思路和数据表模式
wordnet的数据文件分为两类:索引文件*.index和数据文件*.data。其中索引文件主要指定了某一个(字符串)单词所属的同义词集的集合,而数据文件其实是对每一个同义词集的详细解析,包括该同义词集包含的(字符串)单词,对应的周边关系和该同义词集的概念解析。
很自然的,考虑到了直接将一个数据文件映射到一个或者多个数据表上去。就是说数据文件和数据库表之间维护着单映射关系。由此,基于wordnet数据文件的结构分析,数据库的总体模式由四张表组成。分别为:索引文件*.index解析成index_term表,数据文件*.data由三张表组成,这里称之为一张主表加两张附表,主表synset主要保留了同义词集包含的词语和它自身的解析,另外两个表项relation_cnt和verb_frame_cnt分别标记该同义词集的关系数和动词组合结构数。为了最简化数据表的关系,主表和附表都是使用同义词集标记synset_id进行关联。
最终,数据表之间的模式关系可以参见下图一所示:
图一、数据库表模式关系图
2、数据库表格解析
index_term表保存了每一个(字符串)词语,以及所有所属同义词集的标记号。这里出现了刚才提到的问题,也就是关系数据库无法有效的表示这种大小可扩展的表项,在程序中synset表项可以使用一个不定长数组来表示,但是在数据库中就比较麻烦了。当然,设置好分割标记,将数组转换成字符串然后建立全文索引也是可以的,理论上来说是这样,但是这样保存的东西使用起来非常麻烦,而且也不直观。
synset表保存了一个同义词集的固有属性,表项中的index_word也是这么个问题。注意其中的relation_cnt项和verb_frame_cnt项,分别标记关系数量和动词组合结构数量。
这里假设分别要了解一个(字符串)词语和一个同义词集的相关信息,应该如何利用数据库最快的获取。
a)、(字符串)词语:首先以该词语w为查询条件在index_term表中获取它对应的所有同义词集的标记号,设为{id},——如果所属同义词集不只一个,那么根据具体情况决定是否要将w绑定到某一个id上。这样,这个问题就转化成获取某一个同义词集的相关信息,具体见a)部分;
b)、同义词集:给定一个同义词集,用它的标记号id作为查询条件在synset表中获取属于该同义词集的所有(字符串)词语。——(字符串)词语和同义词集之间是多对多的关系。如果relation_cnt项和verb_frame_cnt项不为0,说明该同义词集具有相关同义词集和动词组合结构(只有动词的这一项才可能不为0),分别以标记号id到relation表和verb_frame表查找出对应的关系对和组合结构。
注:verb_frame表,目前想不到会有什么用,只是为了边面以后重复解析,所以解析出来了,里面有些内容没有仔细去研究。先忽略之,等以后要用到的时候再去完善。
3、一些应用,包括但不限于,未完待续…
a)、概念相似度的计算:应该说,这个是最无聊,最笨蛋,最缺乏创意的应用,不得不承认,也是用的最多的,——我们都是笨蛋。这个就不说了,或者让某某来解释一下。下文是我们最终讨论的大致算法,和最后编程实现有一些偏差,供参考。
WORDNET相似度计算算法
1、使用关系:
同义关系,is-a关系,part-of关系
2、概念之间以同义集关系进行跳转。
如果两概念之间为同义集关系,则直接计算,
否则同义集之间的关系跳转使用is-a关系和part-of关系
3、概念深度的计算考虑三种选择:
一是单关系单向从根结点开始扫描;
二是两关系(is-a关系和part-of关系)单向从根结点开始扫描;
注意事项:
1、待测试的概念对可以指定所属同义集,也可不指定,此时用所有包含该概念的同义集集合作为待测概念;
2、深度计算是从根节点单向扫描,知道获得待测的两个概念为止;
——之后的想法都比较简单,大都还停留在思考阶段
b)、如果两个概念之间有多条路径,会发生什么?
c)、不同的路径模式之间有什么关系,比如单关系路径,混合关系路径?
d)、我们是不是可以开发一套单词记忆软件,基于同义词集的单词记忆,基于关系的联想记忆?
……
分享到:
相关推荐
WordNet 是一个包含大量英语词汇的词典数据库。名词、动词、形容词和副词被分组为认知同义词集(synsets),每个synset表示一个独特的概念。通过概念-语义和词汇关系,这些同义词集之间形成了一个相关词汇和概念的...
wordnet1.2的安装文件,有时候在网上不易下载到,以前用的2.1的版本都能下到,现在只能下到这个的,留着吧。
WordNet是著名的英语词汇数据库,它以网络的形式组织了大量的词汇信息,其中的每个词汇(称为“词元”或“synset”)都与其他词元通过特定的关系连接。WordNet 1.1(wn11)是这个知识库的一个早期版本,包含了大量的...
在Java环境中,WordNet通常通过特定的API库,如JWI (Java WordNet Interface) 或WNDB.jar,提供对这些数据的访问。 标题“wordnet-database:WordNet数据库文件”表明这个压缩包包含的是与WordNet相关的数据库文件,...
1. `WORDN.CAB`:这是一个 Cabinet 文件,通常包含安装程序所需的组件和资源,可能包括WordNet的特定库或数据文件。 2. `InstMsiW.Exe` 和 `InstMsiA.Exe`:这两个文件是Windows Installer的执行程序,分别用于32位...
3. **配置文件**:这些文件用于设置和定制WordNet-InfoContent的行为,如选择不同的信息内容计算方法、设置阈值等。 4. **文档**:可能包括用户手册、API参考、示例代码等,帮助开发者理解如何使用这个库。 5. **...
WordNet.owl文件则是WordNet的本体化表示,采用了Web本体语言(OWL)进行编写。OWL是一种强大的本体描述语言,允许精确地定义概念、属性以及概念之间的关系,从而实现对知识的机器可理解表达。 在WordNet.owl中,...
在实际使用中,开发者和研究人员通常会使用专门的库或API来访问和操作WordNet数据,比如Python的NLTK(Natural Language Toolkit)库就提供了对WordNet的接口。通过这些工具,可以轻松地查找同义词、构建语义网络,...
5. **数据接口**:JWordNet封装了WordNet的数据文件格式,使得开发者无需关心底层的存储细节,只需通过简单的API调用即可访问数据。 6. **词汇索引**:JWordNet提供了高效的词汇索引,能快速定位到WordNet中的特定...
5. **互操作性**:OWL格式的WordNet使得数据能够与其他基于OWL的本体进行融合和互操作,这对于跨领域知识整合和多源信息聚合至关重要。 6. **工具支持**:有许多工具支持OWL的处理,如Protégé(一个流行的本体...
在这个压缩包内部,你将找到“WordNet-2.1”这一主要目录,该目录下包含了所有相关的源代码、数据文件以及可能的文档和示例。 WordNet的核心概念是“synset”(同义词集),它将具有相同或相近意义的单词分组在一起...
在"wordnet_ic"这个文件中,可能包含了预计算的IC值,这些值可以用于快速计算两个词之间的信息内容平均距离(average information content, AIC),或者是信息内容最小距离(minimum information content, MIC),...
数据集WN18是WordNet的子集,包含18种关系和40k种实体。训练集中包含141,442条三元组,验证集中包含2,500条三元组,测试集中包含2,500条三元组。
在这个案例中,JWNL API提供了各种方法,如打开WordNet数据文件、查询词汇信息、获取词汇的同义词集(synsets)等。 基于标签"jwnl"、"wordnet_java"和"wordnet",我们可以推断出这个压缩包可能包含了JWNL库的源...
1. **初始化配置**:设置WordNet的数据文件路径,JWNL会读取这些文件来获取所需信息。 2. **创建Dictionary对象**:这是访问WordNet的入口,通过它调用各种操作方法。 3. **词汇查找**:使用`Dictionary`对象的`...
id: wordnet; size: 10775600; author: ; copyright: WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved.; license: Permission to use, copy, modify and distribute this software and ...
"wn.cow"文件很可能是这个中文WordNet版本的核心数据,包含了词汇的定义、关系和元数据。这个文件可能采用特定的格式,如XML或JSON,用于存储和检索词汇信息。 知识图谱,作为一种结构化的知识表示形式,近年来在...
WordNet是一个广泛使用的英语...总的来说,JWordNet是Java开发者处理WordNet数据的强大工具,通过这个库,开发者可以轻松地在Java项目中利用WordNet的丰富词汇资源和语义信息,提升自然语言处理任务的效率和准确性。
WordNet® is a large lexical database of English, developed under the direction of George A. Miller (Emeritus). Nouns, verbs, adjectives and adverbs are grouped into sets of cognitive synonyms ...
WordNet® is a large lexical database of English, developed under the direction of George A. Miller (Emeritus). Nouns, verbs, adjectives and adverbs are grouped into sets of cognitive synonyms ...