国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基于Tensorflow的自然語言處理Restful API調用實例 www.deepnlp.org

2019-11-08 02:19:22
字體:
來源:轉載
供稿:網友

 Github下載完整代碼

https://github.com/rockingdingo/deepnlp

簡介

www.deepnlp.org提供了免費的基于python和tensorflow深度神經網絡模型開發的自然語言處理的服務,提供的REST風格的API不僅包括了NLP任務的基礎模塊,如分詞(segment),詞性標注(pos),命名實體識別(ner),句法分析(parsing)等,還提供了更多基于深度語言模型,詞向量Word embedding,LSTM, Seq2Seq等模型的在線API。此外還提供了多個文章段落應用,如textcnn文本分類,textsum 生成式文本總結和標題生成, textrank 抽取式自動摘要等。我們會在API v1.0版本之后繼續拓展更多的基于深度語言的模型,也歡迎更多的Contributors來使用。做這個項目的出發點是開源和免費提供一項基于深度學習的NLP服務,我們的API完全開源,但因受限于我們的資源,目前對使用頻率有一定限制。

本著極簡的設計原則原則,我們提供了最簡單的接口接受固定參數,并以文本格式返回結果。

API參數

通過網絡瀏覽器可以直接訪問www.deepnlp.org的web API (需要驗證登錄),同時也可以通過編程環境程序化調用。

參數含義說明
lang語言代碼,包括:zh(中文)和en(英文)lang=zh
text分析文本text=今天天氣不錯
annotators定義pipeline API中需要調用的模塊,用逗號分隔,包括:segment(分詞), pos(詞性標注)和ner(命名實體識別)annotators=segment,pos,ner

API接口

模塊URL返回結果說明
分詞segmentwww.deepnlp.org/api/v1.0/segment/?lang=zh&text=我愛吃北京烤鴨{"words": ["我","愛","吃","北京","烤鴨"]}{"words": list}
詞性標注poswww.deepnlp.org/api/v1.0/pos/?lang=zh&text=我愛吃北京烤鴨{"pos_str": "我/r 愛/v 吃/v 北京/ns 烤鴨/n"}{"pos_str": string}
命名實體nerwww.deepnlp.org/api/v1.0/ner/?lang=zh&text=我愛吃北京烤鴨{"ner_json": {"nbz": "","p": "北京","o": "","n": ""}, "ner_str": "我/nt 愛/nt 吃/nt 北京/p 烤鴨/nt"}{"ner_json": json, ner_str": string} json 包含了nbz品牌,n 人名,o 組織,p 地點;
模塊整合pipelinewww.deepnlp.org/api/v1.0/pipeline/?lang=zh&annotators=segment,pos,ner&text=我愛吃北京烤鴨{"ner_json": {"nbz": "","p": "北京","o": "","n": ""}, "ner_str": "我/nt 愛/nt 吃/nt 北京/p 烤鴨/nt", "segment_str": "我 愛 吃 北京 烤鴨", "pos_str": "我/r 愛/v 吃/v 北京/ns 烤鴨/n"}{"segment_str": string, "pos_str":string, "ner_str":string, "ner_json":json}
文本摘要textrankwww.deepnlp.org/api/v1.0/textrank/?percent=0.2&text=待分析的文章段落{"top": [ [id1, "句子1", [0.0833] ], [id2, "句子2", [0.0812]]]}percent為壓縮比, 如抽取原文數量的0.25的句子作為文章摘要。{"top": [[id, "句子1", [score] ], …} id為該句子在原段落中的序號,從0開始。

瀏覽器中測試API

http://www.deepnlp.org/api/v1.0/segment/?lang=zh&text=我愛吃北京烤鴨http://www.deepnlp.org/api/v1.0/pos/?lang=zh&text=我愛吃北京烤鴨http://www.deepnlp.org/api/v1.0/ner/?lang=zh&text=我愛吃北京烤鴨http://www.deepnlp.org/api/v1.0/pipeline/?lang=zh&annotators=segment,pos,ner&text=我愛吃北京烤鴨

圖1 瀏覽器調用API結果

Python中調用API

詞法模塊

下面我們以一段網劇《老九門》的劇情簡介為例,看看如何在python環境中程序化調用deepnlp.org的web API。待分析的文本:

text = ”張啟山在軌道邊來回踱步,聽著站長和守夜人描述昨晚火車進站時的情況。張啟山身后站著一位年輕的副官,他正指揮士兵們爬上火車進行切割,很快,一節車廂的鐵皮被割出了一個洞。”

我們首先引入必要的兩個包requests和urllib, 支持python下的URL訪問。其次,使用API需要預先保存網站登錄的信息,通過用戶驗證,瀏覽器已經保存了你登錄的cookie信息了。我們可以通過deepnlp package下的api_service新建一個connection的類。使用到的用戶名密碼通過api_service.init() 函數免費注冊,也可以不注冊使用pypi默認的一個賬戶,但是訪問頻率會受到最大次數限制100次/天。

代碼1 創建API的Login

import deepnlpfrom deepnlp import api_servicelogin = api_service.init()  # registration, if failed, load default login with limited accessusername = login['username']password = login['password']

代碼2 新建API的連接

#coding:utf-8from __future__ import unicode_literalsimport jsonimport requestsimport sys, osif (sys.version_info>(3,0)): from urllib.parse import quote else : from urllib import quote from deepnlp import api_service# use your personal login: # login = {'username': 'your_user_name' , 'password': 'your_password'}login = {}                          # load default login for pypi with limited accessconn = api_service.connect(login)   # save the connection with login cookies

我們想要得到這段《老九門》劇情文本的分詞Segment和詞性標注POS的信息,那么我們可以分別調用兩個模塊的API,也可以只調用一個pipeline的API,然后通過annotators 來控制需要返回哪幾個模塊的結果。

定義完整URL,傳入待分析文本的信息 通過瀏覽器訪問時的API為: http://www.deepnlp.org/api/v1.0/pipeline/?lang=zh&annotators=segment,pos&text=文本 觀察后發現完整URL由以下部分構成:

1.base_url: 即為網站域名www.deepnlp.org;2.模塊的API:即"/api/v1.0/segment/?"這一部分,問號后帶傳遞的參數;3.輸入的參數:需要通過urllib包的quote()函數,將中英文字符串轉碼傳遞給URL,類似于瀏覽器中的對應部分;

通過request包的get方法來訪問之前定義的URL,同時傳遞的參數有保留的cookie信息conn。利用json包把返回的結果轉化為字典表,例如通過tuples['words']就能訪問到對應的分詞,結果保存在一個空格分隔的字符串內。

代碼3-1

text = "張啟山在軌道邊來回踱步,聽著站長和守夜人描述昨晚火車進站時的情況。張啟山身后站著一位年輕的副官,他正指揮士兵們爬上火車進行切割,很快,一節車廂的鐵皮被割出了一個洞。"text = text.encode("utf-8")  # convert text from unicode to utf-8 bytes # API Settingbase_url = 'www.deepnlp.org'lang = 'zh' # Segmentationurl_segment = base_url + "/api/v1.0/segment/?" + "lang=" + quote(lang) + "&text=" + quote(text)web = requests.get(url_segment, cookies = conn)tuples = json.loads(web.text)wordsList = tuples['words'] # segmentation json {'words', [w1, w2,...]} return listPRint ("Segmentation API")print (" ".join(wordsList)) # POS taggingurl_pos = base_url + "/api/v1.0/pos/?"+ "lang=" + quote(lang) + "&text=" + quote(text)web = requests.get(url_pos, cookies = conn)tuples = json.loads(web.text)pos_str = tuples['pos_str'] # POS json {'pos_str', 'w1/t1 w2/t2'} return stringprint ("POS API")print (pos_str)

代碼3-2

annotators = "segment,pos,ner"url_pipeline = base_url + "/api/v1.0/pipeline/?" + "lang=" + quote(lang) + "&text=" + quote(text) + "&annotators=" + quote(annotators)web = requests.get(url_pipeline, cookies = conn)tuples = json.loads(web.text)segment_str = tuples['segment_str']  # segment modulepos_str = tuples['pos_str']   # pos modulener_str = tuples['ner_str']   # ner modulener_json = tuples['ner_json'] # ner result in jsonprint ("Pipeline API")print (segment_str)print (pos_str)print (ner_str)print (ner_json)

關于編碼

deepnlp.org的基于Tensorflow的NLP API的默認編碼是utf-8; Python2的編碼通常是ASCII碼,無法有效支持中文,所以通過引入 from __future__ import unicode_literals 函數,來和Python3實現統一。統一之后字符串默認保存的編碼是unicode,在傳遞進入URL時, text文本需要encode轉化為utf-8碼。

附錄

1.POS詞性標注標記集

代碼名稱幫助記憶的詮釋
Ag形語素形容詞性語素。形容詞代碼為a,語素代碼g前面置以A。
a形容詞取英語形容詞adjective的第1個字母。
ad副形詞直接作狀語的形容詞。形容詞代碼a和副詞代碼d并在一起。
an名形詞具有名詞功能的形容詞。形容詞代碼a和名詞代碼n并在一起。
b區別詞取漢字“別”的聲母。
c連詞取英語連詞conjunction的第1個字母。
Dg副語素副詞性語素。副詞代碼為d,語素代碼g前面置以D。
d副詞取adverb的第2個字母,因其第1個字母已用于形容詞。
e嘆詞取英語嘆詞exclamation的第1個字母。
f方位詞取漢字“方”的聲母。
g語素絕大多數語素都能作為合成詞的“詞根”,取漢字“根”的聲母。
h前接成分取英語head的第1個字母。
i成語取英語成語idiom的第1個字母。
j簡稱略語取漢字“簡”的聲母。
k后接成分 
l習用語習用語尚未成為成語,有點“臨時性”,取“臨”的聲母。
m數詞取英語numeral的第3個字母,n,u已有他用。
Ng名語素名詞性語素。名詞代碼為n,語素代碼g前面置以N。
n名詞取英語名詞noun的第1個字母。
nr人名名詞代碼n和“人(ren)”的聲母并在一起。
ns地名名詞代碼n和處所詞代碼s并在一起。
nt機構團體“團”的聲母為t,名詞代碼n和t并在一起。
nz其他專名“專”的聲母的第1個字母為z,名詞代碼n和z并在一起。
o擬聲詞取英語擬聲詞onomatopoeia的第1個字母。
p介詞取英語介詞prepositional的第1個字母。
q量詞取英語quantity的第1個字母。
r代詞取英語代詞pronoun的第2個字母,因p已用于介詞。
s處所詞取英語space的第1個字母。
Tg時語素時間詞性語素。時間詞代碼為t,在語素的代碼g前面置以T。
t時間詞取英語time的第1個字母。
u助詞取英語助詞auxiliary 的第2個字母,因a已用于形容詞。
Vg動語素動詞性語素。動詞代碼為v。在語素的代碼g前面置以V。
v動詞取英語動詞verb的第一個字母。
vd副動詞直接作狀語的動詞。動詞和副詞的代碼并在一起。
vn名動詞指具有名詞功能的動詞。動詞和名詞的代碼并在一起。
w標點符號 
x非語素字非語素字只是一個符號,字母x通常用于代表未知數、符號。
y語氣詞取漢字“語”的聲母。
z狀態詞取漢字“狀”的聲母的前一個字母。
nx英文詞簡寫字母等(全角)A,B,NEC,POSTPAID
Bg 翠/Bg 橙/Bg
Rg古文特定詞斯/Rg 予/Rg 伊/Rg 胡/Rg
Mg中文數字詞甲、乙、丙、丁等……

2.NER命名實體識別標記集

標簽名稱解釋
nt非實體 
n人名如"劉伯承", "鄧小平"等。
p地名如"北京", "上海", "美國"等。
o機構名如"工業部", "德國隊", "新華社" 等。
nz影視作品如"老九門", "我去上學啦"等。
nbz商業品牌如"微博", "愛奇藝", "百度"等。

拓展閱讀

deepnlp Python包https://pypi.python.org/pypi/deepnlpGithub源碼deepnlphttps://github.com/rockingdingo/deepnlpwww.deepnlp 網站 API demo和接口http://www.deepnlp.orghttp://www.deepnlp.org/api/v1.0/pipelinehttp://www.deepnlp.org/blog/tutorial-deepnlp-api/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天门市| 深圳市| 大姚县| 农安县| 贡嘎县| 淳安县| 鱼台县| 道孚县| 临泉县| 原平市| 延长县| 凌源市| 奉节县| 汪清县| 临邑县| 仁寿县| 泸定县| 上饶县| 改则县| 镇远县| 保靖县| 建始县| 武隆县| 桃园县| 富川| 达孜县| 万宁市| 多伦县| 疏勒县| 弥勒县| 休宁县| 莱西市| 沅陵县| 恭城| 绥德县| 武城县| 胶南市| 宜良县| 广西| 青川县| 吴忠市|