问题标签 [conceptnet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nlp - 哪个更好?OpenCyc 还是 ConceptNet?
我正在做一个 NLP 项目,我需要识别句子中的概念以找到其他类似的概念。我这样做是为了从我已经拥有的列表中推断词的价。我开始使用 WordNet,但它给出了许多相互矛盾的结果。我所说的矛盾结果是指具有矛盾价的词扩展。
所以现在我正在研究 ConceptNet 和 OpenCyc。我已经实现了 ConceptNet,这一切都非常简单,我喜欢它。问题是 OpenCyc 似乎有一个更大、逻辑上更严格的数据库,当我在 WordNet 上发现这么多“矛盾”时,这很重要……但我不知道,因为我没有尝试过。
有人可以告诉我是否值得通过(对我来说相当大的)努力来实施 OpenCyc,或者 ConceptNet 是否足以推断词效价?他们有那么不同吗?
如果需要,我很乐意进一步解释自己。现在尽量保持简短!
谢谢!
nlp - 如何消除概念网中的单词歧义
Conceptnet包含两种基本类型的节点,词(例如 /c/en/cat)和词义(例如 /c/en/cat/n/domestic_cat)。不幸的是,绝大多数边使用词节点。这使得推断变得困难,因为我不能确定一个词对词的边缘指的是哪个意义。
例如,Conceptnet 包含 9 种使用单词“cat”的词义,大多数是专有名词(/c/en/cat/n/musical、/c/en/cat/n/magazine、/c/en/cat/n /a_spiteful_woman_gossip 等)。如果边缘显示“/c/en/cat /r/HasA /c/en/tail”,我根据自己的经验知道这可能是指 /c/en/cat/n/domestic_cat 而没有其他感觉。而如果我看到一条边上写着“/c/en/cat /r/IsA /c/en/fun_to_watch”,我知道它可能指的是 /c/en/cat/n/musical,但它也可能是指 /c/en/cat/n/domestic_cat。
我如何自动化这个过程?如何翻译仅使用单词节点的边,以便它们使用意义节点?
java - 使用 Java 的 ConceptNet 数据库连接
有人知道如何将 ConceptNet 数据库与 Java 连接起来。我搜索了不同的教程,查看了不同的论坛,但仍然找不到正确的方法。
另外,我如何使用 Java 获取和发布数据到概念网或从概念网发布数据。
有人告诉我,通过使用 JSON 或 Flat Csv,我将实现查询的回复,但我不熟悉这两种技术,也不熟悉如何将它们与 ConceptNet 数据库和 Java 一起使用。
如果有人知道,请回复我...
python - ConceptNet:本地简单查询
我对 ConceptNet 完全陌生。
如何在本地查询Web API提供的相同数据?Web API 字段后面调用的函数是什么?
word2vec - 使用 ConceptNet5 API 计算文本之间的相似度
我发现 ConceptNet5 API 可用于计算两个术语之间的相似度,例如: http ://api.conceptnet.io/related/c/en/dog?filter=/c/en/cat/ .&limit=1
但是我想知道 API 是否也可以用来计算两个文本之间的相似度。例如,我可以使用 API 来计算以下之间的相似度:
“大海是蓝色的”
“山是白色的”
java - ConceptNet 5.5 和 JSON 格式
之前的ConceptNet 5.4 API版本返回纯文本 JSON 格式 ( http://conceptnet5.media.mit.edu/data/5.4/c/en/library )。
有人熟悉新的ConceptNet 5.5 API吗?为什么查询返回 html 源而不是像以前的版本( http://api.conceptnet.io/related/c/en/library )那样的纯文本?我没有找到选择纯文本 JSON 格式的选项。
因此,此 Java 代码不适用于新版本。
conceptnet - 在概念网中按关联查询
我有一些用于使用以下 URL 查询 Conceptnet 版本 5.4 的代码: http://conceptnet5.media.mit.edu/data/5.4/assoc/c/en/cat?filter=/c/en/dog/。 &limit=10
这种查询用于为您提供这两个概念之间的共享边。在最新的 Conceptnet 文档(https://github.com/commonsense/conceptnet5/wiki/API#overview-of-an-api-response)中,它提到 API 仍然支持通过关联进行查询(它位于链接的最后部分,这是查询assoc
过去所做的)但在示例中仅显示了query
这种查询的用法,例如http://api.conceptnet.io/query?node=/c/en/dog&other=/c/恩/猫
如何更新我的 URL 以使用新版本?我可以在新的 conceptnet.io 主机中使用旧的 API 吗?
conceptnet - 与调优相关的概念网
我正在使用概念网http://conceptnet.io尝试使用它们的相关和边缘/查询端点来获取相关关键字。数据很棒,但是我遇到了一些我无法弄清楚的行为。
如果您在主站点上查询关键字“person”的“relatedto”,限制为 20,您会得到:
http://conceptnet.io/c/en/person?rel=/r/RelatedTo&limit=20
或者这个单词列表:
非常棒对吧?这是超级话题和有用的。
另一方面,如果您使用与 API 格式相同的查询来查询 API:
http://api.conceptnet.io/related/c/en/person?filter=/c/en&limit=20
为清楚起见而缩短(有关完整响应,请参见上面的链接):
嗯。那里发生了什么?那用处要少得多。我们得到的只是名称,而不是非常相关的术语。
所以我的问题是:我如何获得类似的列表?
他们是否使用一些复杂的边缘分析(使用标准,与查询无关)来获取网站上的相关术语?
或者
我错过了一些我无法弄清楚的东西吗?
非常感谢任何帮助。
谢谢
nlp - 列出与名词相关的特征
我试图列出与给定名词相关的(物理)特征,即所有可以描述这个名词的词(形容词和名词)。例如:
...应该返回:
我尝试了几种不满意的方法。例如,字典应该提供这样的词,但它们的定义太严格太短。我还尝试了诸如 ConceptNet 之类的语义网络(请参阅此链接)。但据我所知,可用资源(用于我的应用程序)是稀缺的。我永远无法预测道路(通常)是黑色的。
你有更好的想法/方法吗?
如果这个问题太幼稚,请原谅我对该领域的了解不足。
注意:在我的理解中,这个问题很困难,因为它涉及“常识”:我得到的“黑色道路”(180 万条结果)的谷歌搜索结果少于“白色道路”(240 万条结果),因为没有人谈论黑色道路(太明显了!)。结果,机器的训练是有偏差的。
python - Conceptnet Numberbatch(多语言)OOV 词
我正在研究文本分类问题(在法语语料库上),并且正在尝试不同的词嵌入。我对 ConceptNet 提供的东西非常感兴趣,所以我决定试一试。
我无法为我的特定任务找到专门的教程,所以我从他们的博客中获得了建议:
如何使用 ConceptNet Numberbatch?
为了使其尽可能简单:
完成任何使用语义向量的 NLP 机器学习教程。转到他们告诉您使用 word2vec 的部分。(一个特别开明的教程可能会告诉你使用 GloVe 1.2。)
获取 ConceptNet Numberbatch 数据,然后使用它。获得更好的结果,也可以推广到其他语言。
您可能会在下面找到我的方法(请注意,“numberbatch.txt”是包含推荐的多语言版本的文件:ConceptNet Numberbatch 19.08):
我首先测试一个单词是否存在:
令我惊讶的是,没有找到像“ fille ”(法语中的女孩)这样的简单单词。然后我创建了一个函数来打印我的语料库中的所有 OOV 单词。在分析结果时,我更加惊讶:超过 22k 的词没有找到(包括诸如 ' nous '(we)、' être '(to be) 等词)。
我还尝试了GitHub 页面上针对 OOV 单词提出的方法(结果相同):
词外策略
ConceptNet Numberbatch 使用词汇外策略进行评估,该策略有助于其在出现不熟悉单词时的表现。该策略在 ConceptNet 代码库中实现。可以总结如下:
给定一个语言不是英语的未知单词,尝试在英语嵌入中查找等效拼写的单词(因为英语单词往往会出现在所有语言的文本中)。
给定一个未知单词,从末尾删除一个字母,看看它是否是已知单词的前缀。如果是这样,对那些已知单词的嵌入进行平均。
如果前缀仍然未知,则继续从末尾删除字母,直到找到已知前缀。当一个字符剩下时放弃。
我的方法做错了吗?