在開始今天的講解前,小編先來帶大家回顧一下介紹分詞的相關推文:在聽不懂人話?stata分詞幫你搞定(一)中,我們介紹了如何使用stata的ustrwordcount()和ustrword()函數(shù)進行簡單的分詞,為了解決stata分詞無法顯示詞性與添加詞典的問題,聽不懂人話?stata分詞幫你搞定(二)、聽不懂人話?stata分詞幫你搞定(三)中我們又介紹了如何使用stata與Python交互調(diào)用pynlpir、jieba進行分詞。今天我們介紹如何用stata調(diào)用curl使用BosonNLP的API進行分詞。 BosonNLP是玻森中文語義開放平臺推出的一款產(chǎn)品,采用將分詞和詞性標注聯(lián)合枚舉的方法,實現(xiàn)了這一套分詞和詞性標注系統(tǒng),并通過開放API接口的形式提供給其他開發(fā)者使用。 官網(wǎng)是http:///。 在上一篇推文爬蟲神器'curl'中,我們介紹了命令行工具“curl”,包括-o的用法。除了-o,今天的推文中還會涉及到curl的如下常見用法: -X:指定命令。HTTP協(xié)議的請求主要使用“GET”和“POST”兩種方法,BosonNLP需要用到“POST”。 -H:自定義頭信息傳遞給服務器,就整個網(wǎng)絡資源傳輸而言,包括message-header和message-body兩部分,首先傳遞message-header,即http header消息。 -d:以HTTP POST方式傳送數(shù)據(jù)。 在正式開始前,我們首先需要注冊Boson賬號: 完成后,我們可以在控制臺的底部看到自己的API Token(密鑰),該密鑰將用于身份驗證: 接下來我們就可以開始分詞工作啦。 clear cap mkdir E:/分詞與情感分析 cd E:/分詞與情感分析 local text = '爬蟲俱樂部將于2017年10月5-7日在武漢舉行一期Stata編程技術定制培訓。這次課程我們專門增加了Stata15新增功能以及我們團隊編寫的自動輸出實證結果的多個命令的介紹!' //這是我們要進行分詞的文本 ! curl -X POST ///使用POST方式請求,向Web服務器發(fā)送數(shù)據(jù)讓Web服務器進行處理 -H 'Content-Type: application/json' ///Content-Type表示返回數(shù)據(jù)的類型和字符編碼格式,BosonNLP的返回內(nèi)容為 JSON 格式,因此 Content-Type 是 application/json -H 'Accept: application/json' ///Accept指定客戶端能夠接收的內(nèi)容類型 -H 'X-Token: ZheLiShiMiYao' ///輸入自己注冊時獲得的API Token(密鑰)用于身份驗證,這里的密鑰是我們偽造的,記得換成自己的密鑰哦 --data '\'`=ustrtohex('`text'')'\'' ///以HTTP POST方式傳送數(shù)據(jù),使用ustrtohex()函數(shù)將文本內(nèi)容轉為unicode編碼 'http://api./tag/analysis?space_mode=1&oov_level=3&t2s=0' /// 網(wǎng)址則復制“開發(fā)者”-“分詞與詞性標注”頁面上的URL(如下圖所示) -o 分詞結果.txt //將輸出寫到“分詞結果.txt”文件中 shellout 分詞結果.txt //打開“分詞結果.txt” 分詞結果顯示了詞性標簽和分詞后的每個詞,我們用import delimited將“分詞結果.txt”讀入到stata的第一個單元格中(import delimited的用法詳見推文用infix讀入不完整?用import delimited試試吧) import delimited using 分詞結果.txt, clear encoding('utf8') /// varnames(nonames) delimiter('asdfghjkl', asstring) split v1, p(`','word':'') //以,'word':為分隔符將詞性標簽與詞分開 drop v1 //刪除v1 sxpose, clear //轉置 rename _var1 v //重命名_var1為v replace v = ustrregexra(v, `'(\[\{'tag':\[')|('\]\}\])|('\])|(\[')'', '') //將第一個觀測值開頭的[{'tag':['和第二個觀測值結尾的']}]、第一個觀測值結尾的']和第二個觀測值開頭的['替換為空,\表示轉義 split v, p(`'',''') //以','為分隔符,將每個詞性和每個詞都分開 drop v //刪除v sxpose, clear //轉置 rename _* (詞性 詞) //將變量名重命名為“詞性”和“詞” 這樣,我們用stata調(diào)用curl使用BosonNLP的API所進行的分詞就完成啦。沒看懂記得戳下方視頻學習哦! |
|