场景介绍
- 应用于搜索引擎开发。对于搜索引擎来说,在上百亿的网页中找到所有结果没有意义,重要的是把最相关的结果呈现在最前面,也称为相关度排序。分词的准确与否,会直接影响到对搜索结果的相关度排序。
- 应用于语义分析相关软件的开发。在语义分析中,通过分词理解文本所要表达的正确含义,并通过词性标注得到词性,准确地判断出某个词是名词、动词、形容词等,使得语义分析更方便扩展。
接口说明
词性标注提供了getWordPos()接口,该接口可以根据分词粒度,为分词结果中的每个单词标注一个正确的词性。
接口名 |
描述 |
---|---|
ResponseResult getWordPos(String requestData, int requestType) |
采用同步方式进行词性标注。 |
ResponseResult getWordPos(final String requestData, final int requestType, final OnResultListener<ResponseResult> listener) |
采用异步方式进行词性标注。 |
void init(Context context, OnResultListener<Integer> listener, boolean isLoadModel) |
初始化NLU服务。在调用NLU等功能接口前需要先调用此接口,在OnResultListener的onResult(T)方法中获取到回调结果后,再调用NLU功能接口。开发者传入listener参数作为回调,用于等待NLU功能接口的调用过程和结果。 |
void destroy(Context context) |
取消所有NLU任务,销毁NLU引擎服务。调用此方法后,无法再使用NLU服务。如果需要重新使用NLU服务,需要重新调用init(Context, OnResultListener<Integer>, boolean)}来初始化NLU服务。 |
接口输入值说明
- requestType表示请求类型,通过NluRequestType类定义如下:
类型
说明
static int
REQUEST_TYPE_LOCAL = 0 本地请求
- requestData表示输入的文本信息,为JSON格式,如下表说明。
目前NLU支持的实体类别:
实体类别
备注
电影
依赖字典,要求真实用例,勿做修改。
电视剧
依赖字典,要求真实用例,勿做修改。
综艺
依赖字典,要求真实用例,勿做修改。
动漫
依赖字典,要求真实用例,勿做修改。
火车车次
要求真实用例,勿做修改。
航班号
要求真实用例,勿做修改。
球队
依赖字典,支持NBA、CBA、英超、西甲、德甲、意甲、法甲、中超的球队识别,要求真实用例,勿做修改。
人名
要求真实用例,勿做修改。
快递单号
要求真实用例,勿做修改。
电话号码
要求真实用例,勿做修改。
url
要求真实用例,勿做修改。
邮箱
要求真实用例,勿做修改。
联赛
NBA、CBA、英超、西甲、德甲、意甲、法甲、中超,要求真实用例,勿做修改。
时间
要求真实用例,勿做修改。
地点
包含酒店、餐馆、景点、学校、道路、省、市、县、区、镇等,部分依赖字典。
验证码
用例真实,勿做修改。
接口返回值说明
参数名 |
是否必选 |
值类型 |
说明 |
---|---|---|---|
code |
是 |
int |
词性标注的结果码。取值包括:
|
message |
是 |
String |
错误信息。 |
pos |
否 |
JSONArray |
切分出的词数组,数组里的类型为JSONObject。 |
+word |
否 |
String |
切分出的词。 |
+tag |
否 |
String |
词性,type为1或9223372036854775807时,人名实体的词性为nr,时间实体的词为t,地点实体的词性为ns,其他实体统一为ne。具体词性类型可参表1。 |
词性 |
说明 |
词性 |
说明 |
词性 |
说明 |
---|---|---|---|---|---|
n |
名词 |
rr |
人称代词 |
u |
助词 |
nr |
人名 |
rz |
指示代词 |
uzhe |
助词“着” |
ns |
地名 |
rzt |
时间指示代词 |
ule |
助词“了”“喽” |
ne |
只在实体合并时使用,除人名、时间、地点之前,其他实体统一返回ne |
rzs |
处所指示代词 |
uguo |
助词“过” |
t |
时间词 |
rzv |
谓词性指示代词 |
ude1 |
助词“的” |
tg |
时间词性语素 |
ry |
疑问代词 |
ude2 |
助词“地” |
s |
处所词 |
ryt |
时间疑问代词 |
ude3 |
助词”得” |
f |
方位词 |
rys |
处所疑问代词 |
usuo |
助词”所“ |
v |
动词 |
ryv |
谓词性疑问代词 |
udeng |
助词“等”“等等” |
vd |
副动词 |
rg |
代词性语素 |
uyy |
助词”一样”“一般”“似的”“般” |
vn |
名动词 |
m |
数词 |
udh |
助词“的话” |
vshi |
动词“是” |
mq |
数量词 |
uls |
助词“来讲”“来说”“而言”“说来” |
vyou |
动词“有” |
q |
量词 |
uzhi |
助词“之“ |
vf |
趋向动词 |
qv |
动量词 |
ulian |
助词“连” |
a |
形容词 |
qt |
时量词 |
e |
叹词 |
ad |
副形词 |
d |
副词 |
y |
语气词 |
an |
名形词 |
p |
介词 |
o |
拟声词 |
b |
区别词 |
pba |
介词“把” |
h |
前缀 |
bl |
区别词性惯用语 |
pbei |
介词“被” |
k |
后缀 |
z |
状态词 |
c |
连词 |
x |
字符串 |
r |
代词 |
cc |
并列连词 |
idiom |
成语 |
w |
标点符号 |
– |
– |
– |
– |
开发步骤
在使用词性标注的接口时,将实现词性标注的相关类添加至工程。
import ohos.ai.nlu.NluClient;
import ohos.ai.nlu.OnResultListener;
import ohos.ai.nlu.ResponseResult;
- context:应用上下文信息,应为ohos.aafwk.ability.Ability或ohos.aafwk.ability.AbilitySlice的实例或子类实例。
- listener:初始化结果的回调,可以传null。
- isLoadModel:是否加载模型,如果传true,则在初始化时加载模型;如果传false,则在初始化时不加载模型。
NluClient.getInstance().init(context, new OnResultListener<Integer>(){
@Override
public void onResult(Integer result){
// 初始化成功回调,在服务初始化成功调用该函数
}
}, true);
调用词性标注的接口。
采用同步方式进行词性标注:
String requestData = “{\”text\”:\”我要看速度与激情\”,\”type\”:0}”;
ResponseResult responseResult = NluClient.getInstance().getWordPos(requestData, NluRequestType.REQUEST_TYPE_LOCAL);
采用异步方式进行词性标注:
NluClient.getInstance().getWordPos(requestData,
NluRequestType.REQUEST_TYPE_LOCAL, new OnResultListener<ResponseResult>() {
@Override
public void onResult(ResponseResult result) {
//异步返回处理
}
});
销毁NLU服务。
NluClient.getInstance().destroy(context);