百度云知识图谱的应用

1.注册百度云账号,创建知识图谱应用获取API Key和Secret Key

2.获取token

/**
     * 获取API访问token
     * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
     * @param ak - 百度云官网获取的 API Key
     * @param sk - 百度云官网获取的 Securet Key
     * @return assess_token 示例:
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public static String getAuth(String ak, String sk) {
        // 获取token地址
        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
        String getAccessTokenUrl = authHost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 API Key
                + "&client_id=" + ak
                // 3. 官网获取的 Secret Key
                + "&client_secret=" + sk;
        try {
            URL realUrl = new URL(getAccessTokenUrl);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.err.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String result = "";
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            /**
             * 返回结果示例
             */
            System.err.println("result:" + result);
            JSONObject jsonObject =JSONObject.fromObject(result);
            String access_token = jsonObject.getString("access_token");
            return access_token;
        } catch (Exception e) {
            System.err.printf("获取token失败!");
            e.printStackTrace(System.err);
        }
        return null;
    }

3.提交json参数

public static void annotation(String words) {
    	String token=AuthService.getAuth("xxxxxx", "xxxxxxx");
    	String url="https://aip.baidubce.com/rpc/2.0/kg/v1/cognitive/entity_annotation?access_token="+token;
    	CloseableHttpResponse response=sendJson("{\"data\": \""+words+"\"}",url);
    	try {
			System.out.println(JsonFormUtils.format(EntityUtils.toString(response.getEntity(), "UTF-8")));
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
    
    public static CloseableHttpResponse sendJson(String jsonparam,String url){
		CloseableHttpClient client = HttpClients.createDefault();
		HttpPost httpPost = new HttpPost(url);
		httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");

		StringEntity se;
		try {
			se = new StringEntity(jsonparam,"utf-8");
			se.setContentType("text/json");
			httpPost.setEntity(se);
			CloseableHttpResponse response = client.execute(httpPost);
			return response;
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
		
	}

4.测试

public static void main( String[] args ) 
    {
    	annotation("Java");
    }

5.测试结果

{
	"log_id": 5029522252196755383,
	 "entity_annotation": [
		{
			"status": "LINKED_MAINREQ",
			 "confidence": "0.980646",
			 "concept": {
				"level1": "",
				 "level2": ""
			},
			 "_bdbkKgId": "85979",
			 "mainReqRankList": [
				{
					"confidence": "0.980646",
					 "concept": {
						"level1": "",
						 "level2": ""
					},
					 "_bdbkKgId": "85979",
					 "mention": "Java",
					 "_bdbkUrl": "http://baike.baidu.com/item/Java/85979",
					 "annoType": "Instance",
					 "desc": "计算机编程语言"
				},
				 {
					"confidence": "0.019354",
					 "concept": {
						"level1": "",
						 "level2": ""
					},
					 "_bdbkKgId": "13130360",
					 "mention": "Java",
					 "_bdbkUrl": "http://baike.baidu.com/item/java/13130360",
					 "annoType": "Instance",
					 "desc": "意大利自行车品牌"
				}
			],
			 "mention": "Java",
			 "_bdbkUrl": "http://baike.baidu.com/item/Java/85979",
			 "offset": "0",
			 "desc": "计算机编程语言"
		}
	]
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值