-
-
[原创]集成自然语言理解服务,让应用 “听得懂人话”
-
发表于: 1天前 545
-
如今,应用程序智能化已成趋势,开发者想要实现智能化,那么首先需要赋予应用理解自然语言的能力,使其能够准确地听懂人话,进而响应用户需求,并提供一系列智能化服务。比如用户语音控制应用程序帮忙订票,应用程序在将语音转换成文字后,需要通过技术处理准确地理解指令内容,才可以拉取对应程序功能提供服务。
HarmonyOS SDK自然语言理解服务(Natural Language Kit)提供了多项文本语义理解相关的基础能力,目前包括分词和实体抽取,能够帮助开发者更好地处理和分析文本数据。
分词
分词可以将一段文本切分成独立的词语单元,识别出句子中的每个词汇,包括中文、英文和数字内容,从而为后续的语义分析、信息提取等任务奠定基础。
在实际应用场景中,搜索引擎就便用到了这一功能,当用户输入需要搜索的文本内容,搜索引擎将会先对其进行分词处理,在提取关键词后再进行匹配搜索。
开发步骤
分词处理的开发共分为3个步骤。
1.引用相关类添加至工程。
1 | import { textProcessing } from '@kit.NaturalLanguageKit' ; |
2.配置输入文本框和按钮,调用分词textProcessing.getWordSegment接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | let inputText: string = ''; TextInput({ placeholder: '请输入文本' }) .height( 40 ) .fontSize( 16 ) .width( '90%' ) .margin( 10 ) .onChange((value: string) = > { this.inputText = value; }) Button( '获取分词结果' ) . type (ButtonType.Capsule) .fontColor(Color.White) .width( '45%' ) .margin( 10 ) .onClick(async () = > { try { let result = await textProcessing.getWordSegment(this.inputText); this.outputText = this.formatWordSegmentResult(result); } catch (err) { console.error(`getWordSegment error: ${err.message}`); } }) |
3.在界面上展示分词结果。
1 2 3 4 5 6 7 | private formatWordSegmentResult(segments: textProcessing.WordSegment[]): string { let output = 'Word Segments:\n' ; segments.forEach((segment, index) = > { output + = `Word[${index}]: ${segment.word}, Tag: ${segment.wordTag}\n`; }); return output; } |
实体抽取
实体抽取是实现自然语言处理的一项关键能力,它能够精准地从文本中识别出具有特定意义的实体信息,例如人名、地名、时间日期、数字、电话号码、邮箱地址等。开发者可以通过实体抽取能力,结合自身业务场景开发各种智能化应用程序,提高用户服务体验。
例如,在新闻阅读场景中,开发者可以通过该能力对新闻正文进行实体抽取,并对人名、地名、时间、网址等关键实体信息进行高亮标识,从而帮助读者快速获取文章要点,有效提升信息获取效率;在用户填写收货地址的场景中,开发者可以借助实体抽取能力快速识别抽取收件人姓名、地址、手机号等信息,在用户填写表单时提供结构化的文本信息,供用户快速填充表单。
开发步骤
实体抽取的开发共分为4个步骤。
1.引用相关类添加至工程。
1 | import { textProcessing, EntityType } from '@kit.NaturalLanguageKit' ; |
2.配置输入文本框。
1 2 3 4 5 6 7 8 9 10 | let inputText: string = ''; TextInput({ placeholder: '请输入文本' }) .height( 40 ) .fontSize( 16 ) .width( '90%' ) .margin( 10 ) .onChange((value: string) = > { this.inputText = value; }) |
3.配置按钮,调用实体抽取textProcessing.getEntity接口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Button( '获取实体结果' ) . type (ButtonType.Capsule) .fontColor(Color.White) .width( '45%' ) .margin( 10 ) .onClick(async () = > { try { let result = await textProcessing.getEntity(this.inputText, {entityTypes: [EntityType.NAME, EntityType.PHONE_NO]}); this.outputText = this.formatEntityResult(result); } catch (err) { console.error(`getEntity error: ${err.message}`); this.outputText = 'Error occurred while getting entities.' ; } }) |
4.在界面上展示实体抽取结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private formatEntityResult(entities: textProcessing.Entity[]): string { if (!entities || !entities.length) { return 'No entities found.' ; } let output = 'Entities:\n' ; for (let i = 0 ; i < entities.length; i + + ) { let entity = entities[i]; output + = `Entity[${i}]:\n`; output + = ` oriText: ${entity.text}\n`; output + = ` charOffset: ${entity.charOffset}\n`; output + = ` entityType: ${entity. type }\n`; output + = ` jsonObject: ${entity.jsonObject}\n\n`; } return output; |
自然语言理解服务作为构成智能化应用开发的基础能力,可广泛应用于新闻阅读、信息检索、客户服务、社交聊天、金融运营等多种场景。随着技术的不断进步,我们期待广大开发者继续探索和创新,以发掘更多智能化应用的可能性,推动行业更高层次的智能化发展。
了解更多详情>>
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课