練習介紹
【程序功能】
我們將完成一個和語義識別相關的爬蟲程序,輸入任意詞匯、句子、文章或段落,會返回聯想的詞匯。
【背景信息】
有一個非常牛的處理語言的網站nlpir,上面有非常多的處理語言的功能(如分詞標注、情感分析、相關詞匯)。
舉個例子,我輸入“音樂劇”:
下面就會返回“音樂劇”的聯想詞匯:
當然這個網站還有其他的功能,像“分詞標注”,就是把你輸入的文本切成一個個的詞,并且把這些詞的詞性都標出來;
還有“情感分析”的功能,就是分析你輸入的文本里面“樂”、“惡”、“怒”、“哀”等情緒的占比是多少…
可是,這些功能的意義在哪呢?
在人工智能領域里,有一個很重要的領域,叫自然語言處理(NLP)。NLP致力于讓計算機聽懂人的話,理解人的話,在此基礎上,人與計算機才有對話的可能。
而這個處理語言的網站的主要功能(如分詞標注、情感分析、關鍵詞提取、相關詞匯等),就是NLP中的核心的底層技術。
我們所理解的siri、小愛同學、微軟小冰,這些可以和人交流的對話系統,也是建構在NLP之上的。
無論最后建成的大樓有多么宏偉,都不可缺少堅實的地基。而對詞語的基本處理,就是人工智能的一種“地基”,所以大家不要小覷這個網站中對語言處理的基本功能。
【實現路徑】
剛剛提到,我們的程序有這樣的功能:輸入任意詞匯、句子、文章或段落,會返回該聯想詞匯。
我們會用post發送請求,然后得到返回的結果。
會用到的知識點:
json和列表/字典的相互轉換
import json
# 引入json模塊
a = [1,2,3,4]
# 創建一個列表a。
b = json.dumps(a)
# 使用dumps()函數,將列表a轉換為json格式的字符串,賦值給b。
print(b)
# 打印b。
print(type(b))
# 打印b的數據類型,為字符串。
c = json.loads(b)
# 使用loads()函數,將json格式的字符串b轉為列表,賦值給c。
print(c)
# 打印c。
print(type(c))
# 打印c的數據類型,為列表。
字符串的方法
字符串類的對象,都有一個方法str.split(),可以通過指定分隔符對字符串進行切片。
str.split()需要輸入參數,參數的內容是用于切分字符串的符號。來看示例。
a='鄭云龍,阿云嘎,馬佳,蔡程昱,高天鶴,余笛'
# a是一個大字符串,可以把這個字符串切開。
b=a.split(',')
# 指定分隔符是逗號,每碰到一個逗號,就切一下。
print(b)
# 打印b,結果會是一個由6個字符串組成的列表。
print(type(b))
# b是一個列表。
打印出來會是一個包含6個字符串的列表,列表的內容是[‘鄭云龍’,‘阿云嘎’,‘馬佳’,‘蔡程昱’,‘高天鶴’,‘余笛’]
分析過程
首先打開網站:
http://ictclas.nlpir.org/nlpir/
然后我們輸入“音樂劇”,點擊實體抽取,不知道為什么有些status_code顯示500,不能訪問,比如這里我點的第一個分詞標注就顯示紅色,所以我們來看實體抽取。
headers里有請求網址的URL和請求方式是post,form data里是我們輸入的內容content,
import requests,json
url = 'http://ictclas.nlpir.org/nlpir/index6/getWord2Vec.do'
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
words = input('請輸入你想查詢的詞匯:')
data = {'content':words}
res = requests.post(url,data=data,headers=headers)
data=res.text
# 以上,為上一步的代碼
data1=json.loads(data)# 把json數據轉換為字典print ('和“'+words+'”相關的詞匯,至少還有:')# 打印文字
f=0# 設置變量ffor i in data1['w2vlist']: # 遍歷列表
f=f+1
word = i.split(',') # 切割字符串
print ('('+str(f)+')'+word[0]+',其相關度為'+word[1]) # 打印數據
請輸入你想查詢的詞匯:百度
和“百度”相關的詞匯,至少還有:
(1)騰訊,其相關度為0.52671057
(2)詞條,其相關度為0.47400305
(3)網易,其相關度為0.46367505
(4)搜索引擎,其相關度為0.4557111
(5)地圖,其相關度為0.44420305
(6)阿里,其相關度為0.40419072
(7)關鍵字,其相關度為0.39202824
(8)網站,其相關度為0.3855128
(9)阿里巴巴,其相關度為0.37937027
(10)站長,其相關度為0.37208536
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
