哈工大語言雲(語言技術平台雲)是以哈工大社會計算與資訊檢索研究中心研發的“語言技術平台(LTP)” 為基礎,提供高效精準的中文自然語言處理雲服務。
官網:http://www.ltp-cloud.com/
使用python調用API實驗,參考文檔:http://www.ltp-cloud.com/document/
1.注冊:免費注冊一個帳号
注冊網址:http://www.ltp-cloud.com/accounts/register/
注冊後擷取調用語言雲服務的token以及api_key(新版API的調用認證方式)。目前新注冊使用者将獲得每月20G的免費流量。
2.Python程式(注:32位 python 2.7.11,64位win7系統)
(1)簡單測試句子
# -*- coding: utf-8 -*-
"""
功能:哈工大語言雲使用測試
時間:2016年4月9日 13:45:24
"""
import urllib2
url_get_base = "http://api.ltp-cloud.com/analysis/?"
api_key = '********替換為自己的API_KEY********’ # 輸入注冊API_KEY
# 待分析的文本
text = "這是一個測試文本"
format0 = 'xml' # 結果格式,有xml、json、conll、plain(不可改成大寫)
pattern = 'ws' # 指定分析模式,有ws、pos、ner、dp、sdp、srl和all
result = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, text, format0, pattern))
content = result.read().strip()
print content
(2)本地文本處理
# -*- coding: utf-8 -*-
"""
功能:哈工大語言雲使用測試
時間:2016年4月12日 19:56:11
"""
import urllib2
import codecs
def ltp_cloud(par1):
url_get_base = "http://api.ltp-cloud.com/analysis/?"
api_key = '***********替換為自己的API_KEY***********' # 使用者注冊語言雲服務後獲得的認證辨別
format0 = 'plain' # 結果格式,有xml、json、conll、plain(不可改成大寫)
pattern = 'ws' # 指定分析模式,有ws、pos、ner、dp、sdp、srl和all
result1 = urllib2.urlopen("%sapi_key=%s&text=%s&format=%s&pattern=%s"
% (url_get_base, api_key, par1, format0, pattern))
return result1.read().strip()
f = open(r"C:\Users\lenovo\Desktop\test.txt", "r") # 待分析文本,已分句,每行一句。
savef = codecs.open(u"C:\\Users\\lenovo\\Desktop\\out1.txt", "a", "utf-8") # 結果存儲
linenum = 0
newline = ""
for line in f:
linenum += 1 # 記錄處理行數
newline += line.strip().replace("#", "") # 删除行末空白符、幹擾符号,以免影響URI
if line[-1] != "\n": # 如果處理到文本最後一行
if " and " and " in " in newline:
print u"需要更改單詞in"
newline = newline.replace(" in ", " i.n ")
print u"已處理到文本最後一行:", linenum
savef.write(ltp_cloud(newline).decode("utf-8") + "\n")
if len(newline) > 6000: # 讓文本足夠長時再送出處理,最大值在8000左右
if " and " and " in " in newline: # 不能同時含有and和in兩個詞
print u"需要更改單詞in"
newline = newline.replace(" in ", " i.n ")
print u"處理到第" + str(linenum) + u"行"
savef.write(ltp_cloud(newline).decode("utf-8") + "\n")
newline = ""
savef.close()
f.close()
說明:
[1]如果是本地文本,盡量一次送出盡可能多的文本,而不是一句一句送出,以提高請求效率。一次送出的文本有最大長度限制,在UTF-8編碼下,單次解析的文本長度大約為2700個漢字(8100長度)。
[2]送出的文本中不能有影響URI構造的特殊符号,目前已知的幹擾符号有【# & ; +】四種;另外不知道為什麼英文單詞and和in不能同時存在于送出的文本中。
[3]上述程式中讀取的文本是已經分好句的,每行一句。不過語言雲本身提供分句功能,是以可以直接送出沒有分句的文本。其分句是根據中文标點符号【。?!;……】五種。