22、nlpir 人工智能

练习介绍

【程序功能】
我们将完成一个和语义识别相关的爬虫程序,输入任意词汇、句子、文章或段落,会返回联想的词汇。
【背景信息】
有一个非常牛的处理语言的网站nlpir,上面有非常多的处理语言的功能(如分词标注、情感分析、相关词汇)。
举个例子,我输入“音乐剧”:
然后点击“Word2vec”(返回联想词汇的功能):
下面就会返回“音乐剧”的联想词汇:
当然这个网站还有其他的功能,像“分词标注”,就是把你输入的文本切成一个个的词,并且把这些词的词性都标出来;
还有“情感分析”的功能,就是分析你输入的文本里面“乐”、“恶”、“怒”、“哀”等情绪的占比是多少......
可是,这些功能的意义在哪呢?
在人工智能领域里,有一个很重要的领域,叫自然语言处理(NLP)。NLP致力于让计算机听懂人的话,理解人的话,在此基础上,人与计算机才有对话的可能。
而这个处理语言的网站的主要功能(如分词标注、情感分析、关键词提取、相关词汇等),就是NLP中的核心的底层技术。
我们所理解的siri、小爱同学、微软小冰,这些可以和人交流的对话系统,也是建构在NLP之上的。
无论最后建成的大楼有多么宏伟,都不可缺少坚实的地基。而对词语的基本处理,就是人工智能的一种“地基”,所以大家不要小觑这个网站中对语言处理的基本功能。
【实现路径】
刚刚提到,我们的程序有这样的功能:输入任意词汇、句子、文章或段落,会返回该联想词汇。
我们会用post发送请求,然后得到返回的结果。
 

 
json和列表/字典的相互转换
 
 1 import json
 2 # 引入json模块
 3 a = [1,2,3,4]
 4 # 创建一个列表a。
 5 b = json.dumps(a)
 6 # 使用dumps()函数,将列表a转换为json格式的字符串,赋值给b。
 7 print(b)
 8 # 打印b。
 9 print(type(b))
10 # 打印b的数据类型,为字符串。
11 c = json.loads(b)
12 # 使用loads()函数,将json格式的字符串b转为列表,赋值给c。
13 print(c)
14 # 打印c。
15 print(type(c))
16 # 打印c的数据类型,为列表。
 

字符串的方法
 
字符串类的对象,都有一个方法str.split(),可以通过指定分隔符对字符串进行切片。
 
str.split()需要输入参数,参数的内容是用于切分字符串的符号。来看示例。
 
 1 a='郑云龙,阿云嘎,马佳,蔡程昱,高天鹤,余笛'
 2 # a是一个大字符串,可以把这个字符串切开。
 3 b=a.split(',')
 4 # 指定分隔符是逗号,每碰到一个逗号,就切一下。
 5 print(b)
 6 # 打印b,结果会是一个由6个字符串组成的列表。
 7 print(type(b))
 8 # b是一个列表。
 9 
10 
11 打印出来会是一个包含6个字符串的列表,列表的内容是['郑云龙','阿云嘎','马佳','蔡程昱','高天鹤','余笛']

我的代码及执行效果

 1 import requests
 2 import json
 3 
 4 url = 'http://ictclas.nlpir.org/nlpir/index6/getWord2Vec.do'
 5 
 6 headers = {
 7     'Pragma':  'no-cache',
 8     'Origin':  'http://ictclas.nlpir.org',
 9     'Accept-Encoding':  'gzip, deflate',
10     'Accept-Language':  'zh-CN,zh;q=0.9',
11     'User-Agent':  'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',
12     'Content-Type':  'application/x-www-form-urlencoded',
13     'Accept':  '*/*',
14     'Cache-Control':  'no-cache',
15     'X-Requested-With':  'XMLHttpRequest',
16     'Connection':  'keep-alive',
17     'Referer':  'http://ictclas.nlpir.org/nlpir/'
18 }
19 
20 data = {
21     'content': input('请输入关键词 : ')
22 }
23 
24 res = requests.post(url,data=data,headers=headers)
25 
26 jsona = res.json()
27 
28 dicta = jsona['vjson']
29 dictb = jsona['w2vlist']
30 
31 for listn in dicta:
32     for i in dicta[listn]:
33         print(i.split(',')[0],end='\t')
34 
35 for i in dictb:
36     print(i.split(',')[0],end='\t')
37 
38 
39 
40 ----------------------------------------------------------------
41 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
42 请输入关键词 : 马云
43 
44 
45 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
46 请输入关键词 : 马化腾
47 
48 
49 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
50 请输入关键词 : 李彦宏
51 
52 
53 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
54 请输入关键词 : 刘强东
55 
56 
57 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
58 请输入关键词 : 张朝阳
59 搜狐    阿里巴巴        阿里    百度    网易    平台    互联网  网络    新浪    金山    阿里巴巴    交易所      股价    证交所  股票    深交所  上交所  市值    交易    发行价  新浪    网易    腾讯    头条    凤凰    土豆    视频    讯
60 百度    频道    腾讯    纳斯达克        搜狐    COO     阿里巴巴        创始人  阿里    视频    前妻    humbling
61 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
62 请输入关键词 : 周鸿祎
63 邮轮    长安县  黄浦    低调    太公    四季豆  阿米巴  金鹏    高调    沥水    大棒    黄瓜    筋  豆角        眼袋    海底    茄子    稻草    肉丝    西红柿  四季豆  筋      棍子    火腿肠  稻草    骨头    毫毛    尼龙绳  球衫    海底
64 海底    四季豆  大棒    诸子百家        浔      长安县  眼袋    稻草    FORREST 雷山
65 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
66 请输入关键词 : 潘石屹
67 
68 
69 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
70 请输入关键词 : 任正非
71 
72 
73 D:\USERDATA\python>C:/Users/Administrator/AppData/Local/Programs/Python/Python37/python.exe d:/USERDATA/python/nlpir.py
74 请输入关键词 : 乔布斯
 
老师的代码
 
 1 import requests,json
 2 url = 'http://ictclas.nlpir.org/nlpir/index6/getWord2Vec.do'
 3 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'}
 4 words = input('请输入你想查询的词汇:')
 5 data = {'content':words}
 6 res = requests.post(url,data=data,headers=headers)
 7 data=res.text
 8 # 以上,为上一步的代码
 9 
10 
11 data1=json.loads(data)# 把json数据转换为字典print ('和“'+words+'”相关的词汇,至少还有:')# 打印文字
12 f=0# 设置变量ffor i in data1['w2vlist']: # 遍历列表
13     f=f+1
14     word = i.split(',')    # 切割字符串
15     print ('('+str(f)+')'+word[0]+',其相关度为'+word[1]) # 打印数据
16 
17 -----------------------------------------------------
18 请输入你想查询的词汇:百度
19 和“百度”相关的词汇,至少还有:
20 (1)腾讯,其相关度为0.52671057
21 (2)词条,其相关度为0.47400305
22 (3)网易,其相关度为0.46367505
23 (4)搜索引擎,其相关度为0.4557111
24 (5)地图,其相关度为0.44420305
25 (6)阿里,其相关度为0.40419072
26 (7)关键字,其相关度为0.39202824
27 (8)网站,其相关度为0.3855128
28 (9)阿里巴巴,其相关度为0.37937027
29 (10)站长,其相关度为0.37208536

 

posted @ 2019-05-11 23:31  三角形  阅读(697)  评论(0编辑  收藏  举报