这看起来像是在寻找有价值的资产,但由于我们有很多免费的选择,我对这个很乐观。
存储两个键值对的数据库,如
键-值
或
key-context-value
对于收集数据并想要标记它们或搜索相关记录的web开发人员来说非常有用。
这样的数据表甚至是他们想要存储的规范化形式。
如果你曾经听说过一个可用的免费复制数据表像这样,请分享。谢谢你。
你可以使用WordNet:它包含(英语)单词之间的一般关系(分为名词、动词、形容词和副词)。这些关系存在于同义词集(同义词集)之间,并描述了这样的关系:"bus"是"vehicle","wheel"是"car"的一部分。
注意:要在WordNet词典中查找单词,你需要使用引理(单词的基本形式),所以如果你想从自由文本(如网站)中查找单词,你必须首先计算单词的引理。你可以通过应用一些自然语言处理(NLP)技术,或者创建你自己的启发式来做到这一点。
除了同义词集关系之外,WordNet还包含同义词集的简短定义(注释),您可以使用它来获得更多上下文。此外,语义消歧技术可以帮助您决定使用多义单词的哪个义,这也是提供上下文的一种形式。
如果你需要比WordNet提供的更多的上下文(英语单词的一般含义之间的一般关系),你应该找到一个合适的本体来描述概念之间的语义关系。你必须将文本映射到它所涉及的概念(同样,NLP技术可以在这方面提供帮助)
示例本体:SUMO, MSO等
您可以使用Lucene(或任何文本搜索引擎)来存储您的文档,并结合自定义词干来根据含义(而不是单词变体)索引文档文本。
通常,词干器用于将一个词的所有变体转换为基词词干。例如,尽管文档是以文本原样存储和检索的,但是任何单词"sing, singing, sang, sung"都会被索引为"sing",所以当使用搜索词"sing"进行搜索时,您会得到包含sing, singing, sang或sung的所有文档。
同样地,搜索词也可以是有词根的,所以搜索"sing, singing, sang or sung"中的任何一个都会像"sing"是搜索词一样进行搜索。
标准词干处理单词的常见英语变体,但是您可以创建一个基于含义的词干。例如,您可以创建一个词干,将"问题,问题或投诉"中的任何一个词干派生为"问题",等等您想要"链接"的所有单词。
使用stemmer的优点是所有与搜索相关的繁重工作都由文本搜索引擎为您完成(此外,文本搜索引擎非常快!)。
在实现时,您可以使链接成为数据驱动的,或者根据数据库中的数据为数据库生成代码,或者使其动态并在完成搜索/索引操作时查找数据库,或者介于两者之间-缓存值并定期刷新它们。
根据您的需求,您可以寻找map-reduce
范式的不同实现。最著名的是Hadoop,特别是Hadoop MapReduce。虽然这是一个框架而不是一个数据库,但它完全满足了您的要求——以key=value
对的方式存储和处理数据。这是一个用于构建大型可扩展系统的产品。如果你需要一些更简单的东西,有一些更小的实现,比如基于php的(在MySQL之上),甚至是一个"简单"的MySQL聚合,它可以在大多数情况下模仿MapReduce,在那里你不需要分布式系统的数据负载。
听起来很像你在谈论本体。参见什么是本体(数据库?)?
在我看来,本体提供了一种非常强大的方式,以自然和有机的方式建立现实世界实体和关系的复杂模型。实体/概念之间的关系可以在模型中捕获,并且随着关系类型数量的增长,可以对越来越复杂的规则进行编码以利用该知识体系。
格式听起来像JSON对象=>所以我看了看维基百科,找到了CouchDB -一个使用JSON存储数据的开源数据库