Python調用哈工大語言云(LTP)API進行自然語言處理

    哈工大語言云(語言技術平臺雲)是以哈工大社會計算與信息檢索研究中心研發的“語言技術平臺(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]上述程序中讀取的文本是已經分好句的,每行一句。不過語言云本身提供分句功能,因此可以直接提交沒有分句的文本。其分句是根據中文標點符號【。?!;……】五種。

發佈了55 篇原創文章 · 獲贊 272 · 訪問量 91萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章