1.目标

我以区分名人数据与非名人数据为例。何为名人数据、非名人数据 ?

名人数据:介绍某位名人的一段(一句)话,例如:Raj Babbar,演员,主要作品有《迷宫下的罪恶2》、《天命玩家》、《Bodyguard》等。
非名人数据:不是介绍某位名人的一段(一句)话,例如:德国ABASAG一向致力於促进“企业资源规划系统”(ERP)在中国的发展。


2.词法分析运用

2.1新建AipNlp

AipNlp是自然语言处理的Python SDK客户端,为使用自然语言处理的开发人员提供了一系列的交互方法。

参考如下代码新建一个AipNlp:

from aip import AipNlp""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

在上面代码中,常量APP_ID在百度云控制台中创建,常量API_KEY与SECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

注意:如您以前是百度云的老用户,其中API_KEY对应百度云的“Access Key ID”,SECRET_KEY对应百度云的“Access Key Secret”。

2.2配置AipNlp

如果用户需要配置AipNlp的网络请求参数(一般不需要配置),可以在构造AipNlp之后调用接口设置参数,目前只支持以下参数:

接口 说明
setConnectionTimeoutInMillis 建立连接的超时时间(单位:毫秒)
setSocketTimeoutInMillis 通过打开的连接传输数据的超时时间(单位:毫秒)

2.3接口说明

词法分析接口向用户提供分词、词性标注、专名识别三大功能;能够识别出文本串中的基本词汇(分词),对这些词汇进行重组、标注组合后词汇的词性,并进一步识别出命名实体。

text = "百度是一家高科技公司"""" 调用词法分析 """
client.lexer(text);

词法分析 请求参数详情

参数名称 是否必选 类型 说明
text string 待分析文本(目前仅支持GBK编码),长度不超过65536字节

词法分析 返回数据参数详情

参数名称 类型 必需 详细说明
text string 原始单条请求文本
items array(object) 词汇数组,每个元素对应结果中的一个词
+item string 词汇的字符串
+ne string 命名实体类型,命名实体识别算法使用。词性标注算法中,此项为空串
+pos string 词性,词性标注算法使用。命名实体识别算法中,此项为空串
+byte_offset int 在text中的字节级offset(使用GBK编码)
+byte_length int 字节级length(使用GBK编码)
+uri string 链指到知识库的URI,只对命名实体有效。对于非命名实体和链接不到知识库的命名实体,此项为空串
+formal string 词汇的标准化表达,主要针对时间、数字单位,没有归一化表达的,此项为空串
+basic_words array(string) 基本词成分
+loc_details array(object) 地址成分,非必需,仅对地址型命名实体有效,没有地址成分的,此项为空数组。
++type string 成分类型,如省、市、区、县
++byte_offset int 在item中的字节级offset(使用GBK编码)
++byte_length int 字节级length(使用GBK编码)

词法分析 返回示例

{"status":0,"version":"ver_1_0_1","results":[{"retcode":0,"text":"百度是一家高科技公司","items":[{"byte_length":4,"byte_offset":0,"formal":"","item":"百度","ne":"ORG","pos":"","uri":"","loc_details":[ ],"basic_words":["百度"]},{"byte_length":2,"byte_offset":4,"formal":"","item":"是","ne":"","pos":"v","uri":"","loc_details":[ ],"basic_words":["是"]},{"byte_length":4,"byte_offset":6,"formal":"","item":"一家","ne":"","pos":"m","uri":"","loc_details":[ ],"basic_words":["一","家"]},{"byte_length":6,"byte_offset":10,"formal":"","item":"高科技","ne":"","pos":"n","uri":"","loc_details":[ ],"basic_words":["高","科技"]},{"byte_length":4,"byte_offset":16,"formal":"","item":"公司","ne":"","pos":"n","uri":"","loc_details":[ ],"basic_words":["公司"]}]}]
}

词性缩略说明

词性 含义 词性 含义 词性 含义 词性 含义
n 普通名词 f 方位名词 s 处所名词 t 时间名词
nr 人名 ns 地名 nt 机构团体名 nw 作品名
nz 其他专名 v 普通动词 vd 动副词 vn 名动词
a 形容词 ad 副形词 an 名形词 d 副词
m 数量词 q 量词 r 代词 p 介词
c 连词 u 助词 xc 其他虚词 w 标点符号

专名识别缩略词含义

缩略词 含义 缩略词 含义 缩略词 含义 缩略词 含义
PER 人名 LOC 地名 ORG 机构名 TIME 时间

3.具体代码实现

百度提供的词法分析会将句子进行分词,并进行标识。例如《迷宫下的罪恶2》、《天命玩家》会被标识为作品名,Raj Babbar会标识为人名。通过分析名人数据可知,名人数据中一般包含有人名、地名、作品名、出人日期,我把这些词汇作为称为名人数据的特征数据,当然名人数据中不光有特征数据还有像演员、主要、作品、有这样的非特征数据。我依据名人数据特征数据在总数据(即整句)的占比来判定是否为名人数据。

首先创建一个AipNlp

from aip import AipNlp""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

然后创建俩个计数器,分别用来计量特征数据与非特征数据的个数

# 定义一个计数器,统计所有的单元数
counter_all=0
# 定义一个计数器,统计所有的单元数
counter_need=0

加载我们需要区分的数据

text = 'Raj Babbar,演员,主要作品有《迷宫下的罪恶2》、《天命玩家》、《Bodyguard》' jsonData = client.lexer(text)

统计特征数据与非特征数据的个数,这部分代码参照百度的词法分析规则进行编写的,[‘items’][‘ne’][‘PER’,’LOC’,’ORG’,’TIME’][‘pos’][‘nw’,’nr’,’t’,’m’]等都是代名词需要参照上面词法分析规则。

for each in jsonData['items']:if each['ne'] in ['PER','LOC','ORG','TIME']:counter_need+=1elif each['pos'] in ['nw','nr','t','m']:counter_need+=1if each['pos'] in ['w']:passelse:counter_all+=1

最后打印名人特征数据占比,结果为

print('名人特征数据占比为:'+str(counter_need/counter_all))
>>>名人特征数据占比为:0.375

名人数据的特征数据占比在0.15以上基本就可以确认为名人数据了,名人数据与非名人数据的实际分界线还要参照具体的语料库。

利用百度的词法分析区分数据相关推荐

  1. 利用百度APIStoreSDK获取Json数据并解析加载到ListView上

    效果图(这里只是截取了List中的一项): 一.:登录百度ApiStore,获取移动sdk Android版(同时有使用文档和示例),将jar包导入到项目中 Android Studio请在放入lib ...

  2. 【百度地图API】建立全国银行位置查询系统(四)——如何利用百度地图的数据生成自己的标注...

    摘要: 上一章留个悬念,"如果自己没有地理坐标的数据库,应该怎样制作银行的分布地图呢?" 答案就是,利用百度地图上的数据. ---------------------------- ...

  3. python 接入百度地图数据包下载_Python爬虫-利用百度地图API接口爬取数据并保存至MySQL数据库...

    首先,我这里有一份相关城市以及该城市的公园数量的txt文件: 分析-02.png 其次,利用百度地图API提供的接口爬取城市公园的相关信息. 所利用的API接口有两个: 1.http://api.ma ...

  4. 利用百度地图api将excel中的经纬度数据可视化

    利用百度地图api将excel中的经纬度数据可视化 因为本人最近在研究2019年研究生数学建模华为杯D题,想将它3个excel文件汽车的经纬度数据在地图上画出来,找了很多方法才实现.现将它分享给大家, ...

  5. 【遥感图像应用实例】利用多波段(光谱)数据区分真实草地和人造草地

    引言 今天在看一本名为<Python 地理数据处理>(英文名:Geoprocessing with Python)的书,在书的第 166 页,图 9.2 中看到一个有趣的遥感图像应用实例: ...

  6. python 实现对地图的点击_利用python和百度地图API实现数据地图标注的方法

    如题,先上效果图: 主要分为两大步骤 使用python语句,通过百度地图API,对已知的地名抓取经纬度 使用百度地图API官网的html例程,修改数据部分,实现呈现效果 一.使用python语句,通过 ...

  7. python—简单数据抓取四(利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站、利用百度云的ocr识别自如租房网价格图片获取到自如网的价格)

    学习目标: python学习二十四 -简单数据抓取四 学习内容: 1.利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站 2.利用百度云的ocr识别自如租房网的价格图片,获取到自如网的价格数据 1.利 ...

  8. 利用百度API Store接口进行火车票查询

    火车票查询 项目源码下载链接: Github:https://github.com/VincentWYJ/TrainTicketQuery 博客文件:http://files.cnblogs.com/ ...

  9. python批量爬取小网格区域坐标系_Python爬虫实例_利用百度地图API批量获取城市所有的POI点...

    上篇关于爬虫的文章,我们讲解了如何运用Python的requests及BeautifuiSoup模块来完成静态网页的爬取,总结过程,网页爬虫本质就两步: 1.设置请求参数(url,headers,co ...

最新文章

  1. Failure [INSTALL_FAILED_ALREADY_EXISTS
  2. ios浏览器不支持onblur事件
  3. vjue 点击发送邮件如何处理
  4. C++ 字符数组函数与string函数
  5. SpringSecurity的简单使用使用案列说明
  6. CodeForces - 86D Powerful array(莫队)
  7. Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失
  8. 百度地图 json 区域 数据_获取百度地图可视区域范围的数据
  9. 程序员为什么值得写博客
  10. 【经典书】机器学习导论(附PDF)
  11. 点分十进制ip地址转为十进制数字地址-python3实现
  12. 微带线等效电感仿真与设计
  13. 关于线程中断thread interrupt
  14. 玩转树莓派 一、为你的树莓派烧录系统镜像
  15. 全功能Python测试框架:pytest
  16. realsense D435获取RGB-D数据集-制作.klg文件
  17. linux 常用命令 ln/cat/echo/grep/sed/tar/wc/find/ssh/scp/strace/strings/dd/chrt/iostat/rotatelogs/dstat
  18. linux proc目录全称,Linux命令 今天说一说Linux 命令缩写全称
  19. linux中vsc是什么作用,在Linux上开始使用Visual Studio代码(VSC)
  20. 全球KYC服务商ADVANCE.AI顺利加入深跨协 推动跨境电商行业有序发展

热门文章

  1. ARM WFI和WFE指令
  2. 记一次lwip中 遇到 pcb == pcb-next 的pcb死循环debug过程
  3. PAT甲级1118 Birds in Forest :[C++题解]并查集
  4. 浪潮linux网卡驱动,浪潮NF5280M5安装redhat7.2下网卡驱动
  5. kafka 同步提交 异步_腾讯游戏工程师分享:简单理解 Kafka 的消息可靠性策略
  6. mac phpstorm调试php,MAC下phpstorm20190302+Xdebug2.7断点调试PHP | 朱斌技术博客
  7. 深入理解Java虚拟机知乎_深入理解Java虚拟机(类文件结构)
  8. MySQL断开SpringBoot_数据库连接中断-spring-springBoot
  9. C++中的二阶构造模式
  10. python使用字典实现switch_python之 利用字典与函数实现switch case功能