天天看點

人工智能初體驗(一):使用圖靈機器人智能擷取問題回答

一 簡單介紹以及apikey擷取

就我個人而言,目前有兩個API是比較不錯的,一個是百度的接口,另一個是圖靈機器人(http://www.tuling123.com/)的接口。前者調用簡單,而且沒有使用次數限制(PS:據說還是有限制?);後者需要進行一系列身份認證,而且每天次數限制是5000(PS:貌似可以免費增加次數),但是它的優勢是可以進行個性化設定,這點比較好。

<a href="http://s3.51cto.com/wyfs02/M00/78/0B/wKiom1Z0uQuAZTVLAACTxl68oz0253.png" target="_blank"></a>

<a href="http://s1.51cto.com/wyfs02/M01/78/0B/wKiom1Z0uTWgn90DAAE-vFOFEUY082.png" target="_blank"></a>

可以看到,請求參數有三個,分别是:key,info,userid,其中key和userid用預設值就可以了。當然最重要的是要在請求的header裡添加上apikey這一項,點選這裡就可以免費擷取了:

<a href="http://s4.51cto.com/wyfs02/M00/78/0B/wKiom1Z0uVnCbYVkAAB6EI65mFQ786.png" target="_blank"></a>

注:要是對Java網絡程式設計不是很熟悉的話,可以參考下方的Demo

二 一個簡單的Demo

通過HttpURLConnection對指定的API發起GET請求,然後對傳回的JSON資料進行簡單的比對,然後擷取我們需要的回答,測試代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

<code>package</code> <code>action;</code>

<code>import</code> <code>java.io.BufferedReader;</code>

<code>import</code> <code>java.io.IOException;</code>

<code>import</code> <code>java.io.InputStream;</code>

<code>import</code> <code>java.io.InputStreamReader;</code>

<code>import</code> <code>java.net.HttpURLConnection;</code>

<code>import</code> <code>java.net.MalformedURLException;</code>

<code>import</code> <code>java.net.URL;</code>

<code>import</code> <code>java.util.regex.Matcher;</code>

<code>import</code> <code>java.util.regex.Pattern;</code>

<code>public</code> <code>class</code> <code>TuringRobot {</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>

<code>        </code><code>TuringRobot turing = </code><code>new</code> <code>TuringRobot();</code>

<code>        </code><code>String question = </code><code>"北京天氣"</code><code>;</code>

<code>        </code> 

<code>        </code><code>String temp = turing.getResponse(</code><code>"879a6cb3afb84dbf4fc84a1df2ab7319"</code><code>,</code><code>"您自己的apikey"</code><code>, question, </code><code>"eb2edb736"</code><code>);</code>

<code>        </code><code>System.out.println(</code><code>"小圖:"</code> <code>+ temp);</code>

<code>        </code><code>String temp2 = turing.getResponse(</code><code>"879a6cb3afb84dbf4fc84a1df2ab7319"</code><code>,</code><code>"您自己的apikey"</code><code>, </code><code>"你這麼可愛,一定是個男孩子"</code><code>, </code><code>"eb2edb736"</code><code>);</code>

<code>        </code><code>System.out.println(</code><code>"小圖:"</code> <code>+ temp2);</code>

<code>    </code><code>}</code>

<code>    </code> 

<code>    </code><code>/**</code>

<code>     </code><code>* 使用百度圖靈機器人,擷取回答</code>

<code>     </code><code>* </code>

<code>     </code><code>* @param key 預設值:879a6cb3afb84dbf4fc84a1df2ab7319</code>

<code>     </code><code>* @param ApiKey 在APIStore調用服務所需要的API密鑰,申請位址:http://apistore.baidu.com</code>

<code>     </code><code>* @param info 想要請求的問題</code>

<code>     </code><code>* @param userid 使用者id 預設值:eb2edb736</code>

<code>     </code><code>* @return 擷取的回複</code>

<code>     </code><code>* */</code>

<code>    </code><code>public</code> <code>String getResponse(String key,String ApiKey,String info,String userid){</code>

<code>        </code><code>String httpUrl = </code><code>"http://apis.baidu.com/turing/turing/turing?"</code><code>;</code>

<code>//      try {</code>

<code>//          info = URLEncoder.encode(info,"UTF-8");  //URL編碼,可以不加</code>

<code>//      } catch (UnsupportedEncodingException e1) {</code>

<code>//          e1.printStackTrace();</code>

<code>//      }</code>

<code>        </code><code>String httpArg = </code><code>"key="</code> <code>+ key + </code><code>"&amp;info="</code> <code>+ info + </code><code>"&amp;userid="</code> <code>+ userid;</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code><code>URL url = </code><code>new</code> <code>URL(httpUrl + httpArg);</code>

<code>            </code><code>HttpURLConnection connection = (HttpURLConnection) url.openConnection();</code>

<code>            </code><code>connection.setRequestMethod(</code><code>"GET"</code><code>);</code>

<code>            </code><code>connection.setRequestProperty(</code><code>"apikey"</code><code>, ApiKey);</code>

<code>            </code> 

<code>            </code><code>InputStream inputStream = connection.getInputStream();</code>

<code>            </code><code>BufferedReader reader = </code><code>new</code> <code>BufferedReader(</code><code>new</code> <code>InputStreamReader(inputStream,</code><code>"UTF-8"</code><code>));</code>

<code>            </code><code>String line = </code><code>""</code><code>;</code>

<code>            </code><code>String reg = </code><code>"\"text\":\"(.*)?\",\"code\""</code><code>;</code>

<code>            </code><code>Pattern pattern = Pattern.compile(reg);</code>

<code>            </code><code>Matcher matcher;</code>

<code>            </code><code>while</code><code>((line = reader.readLine()) != </code><code>null</code><code>){</code>

<code>                </code><code>matcher = pattern.matcher(line);</code>

<code>                </code><code>if</code><code>(matcher.find())</code>

<code>                    </code><code>return</code> <code>matcher.group(</code><code>1</code><code>);</code>

<code>            </code><code>}      </code>

<code>        </code><code>} </code><code>catch</code> <code>(MalformedURLException e) {</code>

<code>            </code><code>e.printStackTrace();</code>

<code>        </code><code>} </code><code>catch</code> <code>(IOException e) {</code>

<code>        </code><code>}</code>

<code>        </code><code>return</code> <code>""</code><code>;</code>

<code>}</code>

三 測試結果:

<a href="http://s1.51cto.com/wyfs02/M02/78/0B/wKiom1Z0uZbD5HcdAAA1Drdl0WA176.png" target="_blank"></a>

本文轉自 pangfc 51CTO部落格,原文連結:http://blog.51cto.com/983836259/1726260,如需轉載請自行聯系原作者