知网基本知识(知网HowNet知识库的简单调用指南)

机器之心整理参与:蒋思源,今天小编就来聊一聊关于知网基本知识?接下来我们就一起去研究一下吧!

知网基本知识(知网HowNet知识库的简单调用指南)

知网基本知识

机器之心整理

参与:蒋思源

机器之心曾采访过语知科技的董强先生,在那一篇文章中,我们详细讨论了基于知网知识库的 NLP 解决方案。虽然我们已经了解了这种方法的潜力,但只有真正实现了调用过程,并明确体会到知网知识库的强大之处,我们才真正对这种方法有一个直观的理解。

基于知网(HowNet)知识库的方法在实践和研究中确实大大提升了 NLP 的性能。在最近的 ACL 2017 会议中,清华大学牛艺霖、谢若冰、刘知远和孙茂松等人发表了一篇名为《Improved Word Representation Learning with Sememes》的论文。该论文首次将义原信息考虑到词向量的学习任务中,在很大程度上提升了词向量的表示能力。该论文是以经典的 skip-gram 模型为基础提出来的改进模型,相对于 skip-gram 模型只考虑了上下文信息,该论文提出的模型同时考虑词的义原信息以及义原信息与词义之间的关系。

除此之外,清华大学袁星驰,谢若冰,刘知远,孙茂松等人还在 IJCAIL 2017 上发表了一篇名为《Lexical Sememe Prediction via Word Embeddings and Matrix Factorization》的论文。该论文介绍了义原信息(sememe)在提高词向量表示能力方面的作用,并且首次提出从已有的人工标注数据集学习词汇与义原的通用的关系,借助协同过滤和矩阵分解的方法,自动构造出新词的义原。

  • 论文:Improved Word Representation Learning with Sememes

  • 地址:http://www.thunlp.org/~lzy/publications/acl2017_sememe.pdf

  • 论文:Lexical Sememe Prediction via Word Embeddings and Matrix Factorization

  • 地址:http://www.thunlp.org/~lzy/publications/ijcai2017_sememe.pdf

由此可见,知网知识库确实为 NLP 提供了一个强大的平台。下面在详细解释调用 API 之前,我们先简要了解知网知识库的结构与概念。之后我们再详细说明整个 API 的参数与调用过程。

参数名

说明

备注

api_key

注册用户的认证唯一标识,用户注册登录后即可看到

接口调用必传参数

text

需要分析的文本,适用于中、英文语义分析接口

UTF-8编码格式,语义解析必传参数

word1

相似性/相关性接口的传入词语一

中、英文词语均可,必传参数

word2

相似性/相关性接口的传入词语二

中、英文词语均可,必传参数

unitId

词语在知网词典中的义项ID号,语义解析接口的衍生接口,从语义解析接口返回的结果中即可提取出“unitId”

每个字(词)拥有唯一unitId,详情参考【调用示例】

pattern

pos:词性标注;st:语义标注;sd:语义判定;all:全文解析

用以指定所需提供的分析结果

二、调用方式

  • 注册成为知网用户,获得知网用户唯一标识apiKey

  • 按照样例调用接口获取相应服务

  • 注意:当日调用接口的次数不得超过5000次

  • 参数传递建议使用post提交

三、调用示例

调用示例中为目前网站免费提供的接口,鉴于中、英文分析接口相对复杂,如有疑问请参考【接口调用流程演示】或联系管理员

接口功能

示例URL

返回值

Method

中文分析

http://yuzhinlp.com/api/call_chn.do

&apiKey=xxxxxxxx

&input="我爱中国,我爱世界。"

Json字符串,详情查看【接口调用流程演示】

post

英文分析

http://yuzhinlp.com/api/call_eng.do

&apiKey=xxxxxxxx

&input="I love China, I love this world!"

Json字符串,详情查看【接口调用流程演示】

post

词语相似度检测

http://yuzhinlp.com/api/call_similarity.do

&apiKey=xxxxxxxx

&word1=doctor

&word2=护士

Json字符串,例:{"similarity":"0.018605"},其中"similarity"为key,"0.018605"代表相似度结果

post

词语相关性检测

http://yuzhinlp.com/api/call_relevance.do

&apiKey=xxxxxxxx

&word1=doctor

&word2=护士

Json字符串,例:{"relevance":"1"},其中"relevance"为key,"1"为值,1代表相关,0代表不相关

post

根据UNITID查询详细词性

http://yuzhinlp.com/api/call_UnitIdApi.do

&unitId=202591

Json字符串,详情查看【接口调用流程演示】

post

四、接口调用流程演示

1、编写接口调用工具类

该流程是建立于【调用方式】的基础上,以中文语义解析接口为例,请务必设定为post提交,并设置参数编码为UTF-8

import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import com.alibaba.fastjson.JSONObject; public class ApiTest { public static void main(String[] args){ //创建post请求 CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://yuzhinlp.com/api/call_chn.do"); //post请求传入参数 List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("apiKey", "YourApiKey")); parameters.add(new BasicNameValuePair("input", "它好你也好")); CloseableHttpResponse response = null; try { UrlEncodedFormEntity formEntity; //设置参数编码 formEntity = new UrlEncodedFormEntity(parameters, "UTF-8"); httpPost.setEntity(formEntity); // 执行请求 response = httpclient.execute(httpPost); // 判断返回状态是否为200 if (response.getStatusLine().getStatusCode() == 200) { //调用结果 String content = EntityUtils.toString(response.getEntity(), "UTF-8"); JSONObject object = JSONObject.parseObject(content); String result = object.get("success").toString(); //打印到控制台 System.out.println(result); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (response != null) { response.close(); } httpclient.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

2、接口运行返回结果

运行后返回Json格式数据结果,其中包含连个父节点分别为"sentence"(您输入的文本内容)和"nodes"(分析结果),"nodes"节点下包含另一个Json格式的数据,即为您所输入的每一个字/词的详细分析结果,其中子节点中的参数含义请参照【参数节点描述】

[{ "sentence": "你来跑,我来追,追上你我就嘿嘿嘿。", "nodes": [{ "NoID_1": "000", "MaskID": "", "NoID_2": "000", "expression": "ROOT", "FH": "", "Son": "", "ES": "", "YS": "", "DP": "", "DeepSon": "", "log": "", "DeepLog": "", "POS": "", "UnitID": "" }, ..., { "NoID_1": " 18", "MaskID": " ", "NoID_2": " 18", "expression": "嘿嘿", "FH": "000", "Son": " ", "ES": " ", "YS": " ", "DP": " ", "DeepSon": " ", "log": "", "DeepLog": "", "POS": "echo", "UnitID": "074279" },{ "NoID_1": " 21", "MaskID": " ", "NoID_2": " 21", "expression": "。", "FH": "000", "Son": " ", "ES": " ", "YS": " ", "DP": " ", "DeepSon": " ", "log": "", "DeepLog": "", "POS": "pun", "UnitID": "010349" }] }]

3、返回结果参数含义明细表

名称

描述

NoID_1

输入文本经过词法处理后各定形词语在文本中排列的序号

MaskID

加工过程中,为了简化句子复杂度暂时屏蔽的标记

NoID_2

输入文本经过命名体识别和语义判定后在文本中排列的序号

expression

各个定形后的词语

FH

词语的父节点的序号

Son

词语的子节点的序号

ES

词语的姐姐节点的序号

YS

词语的妹妹节点的序号

DP

词语的深层父节点的序号

DeepSon

词语的深层子节点的序号

log

词语的逻辑语义关系

DeepLog

词语的深层逻辑语义关系

POS

词语的词性

UnitID

词语在知网词典中的义项ID号

4、关于UNITID详细词性的查询

在中、英文语义解析的基础上,调用“call_UnitIdApi.do”接口,并传入参数apiKey和UnitID。其中apiKey为您的凭证,UnitID参数则从刚才中、英文语义解析接口返回的数据中提取。返回结果如下:

UnitID 详细数据: NO.=074279 W_C=嘿嘿 G_C=echo [2] [hei1 hei1] S_C= E_C= W_E=hey G_E=noun [3 heynoun-0static声 ] S_E= E_E= DEF={sound|声:{MakeSound|发声:content={~},time={laugh|笑}}} RMK=

5、UntiID属性参数对照表

名称

描述

NO.

记录编号

W_C

中文词语

G_C

中文信息

S_C

中文情感标识

E_C

中文样例

W_E

英文词语

G_E

英文信息

S_E

英文情感标识

E_E

英文样例

DEF

概念定义

RMK

备注

五、信息提取服务

六、技术优势

  • 完善的多语种的知识系统

  • 独有的义原分类体系

  • 独有的概念描述方式(KDML)

  • 完善的事件关系与角色框架

  • 事件关系与角色转换规则,赋予系统推理能力

  • 可使深度学习直接在语义层面进行计算

  • 无需为每种语言分别建立学习模型

七、应用场景

  • 语音指令解析:以分词和词性标注为基础,分析语音命令中的关键名词、动词、数量、时间等,准确理解命令的含义,提高用户体验

  • 多轮交互式搜索:通过专名识别定位多轮对话中的核心实体,自动判断后续对话中对该实体的进一步信息需求

  • 实体数据库构建:通过挖掘实体之间、实体与关键词之间的关联,构建实体信息(如人物、机构)数据库

  • 语言理解:通过分析用户Query的依存句法结构信息,抽取其中的语义主干及相关语义成分,帮助智能产品实现对用户意图的精准理解

  • 知识发掘:对大规模非结构化文本数据进行句法结构分析,从中抽取实体、概念、语义关系等信息,帮助构建领域知识或世界知识

  • 语言结构匹配:基于语言对(Query-WebTitle)之间的句法结构信息进行语言的匹配计算,帮助提升语义匹配计算的准确率

  • 搜索query改写:通过寻找搜索query中词语的相似词,进行合理的替换,从而达到改写query的目的,提高搜索结果的多样性

  • 专有名词挖掘:通过词语间语义相关性计算寻找人名、地名、机构名等词的相关词,扩大专有名词的词典,更好的辅助应用

  • 深度学习训练(技术结合):集合DNN深度学习大量样本训练模型,完成词语的向量化,建立高精度的词向量表示体系

  • 信息检索:在很多应用中都需要根据文本来检索其相似文本,需求场景非常普遍。不仅适用于纯文本检索,还可以利用标签等来检索图片、视频

  • 新闻推荐:通过用户刚刚浏览的新闻标题,检索出其他的相似新闻推荐给用户

  • 智能客服:用户输入一个问题时,自动为用户寻找相似的问题和答案

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页