介绍
本示例展示了使用hiai引擎框架提供的基于自然语言处理服务的分词、实体抽取功能。
本示例模拟了在应用里,输入一段文字,调用分词、实体抽取能力后得到的结果。
需要使用hiai引擎框架通用文字识别接口@hms.ai.nlp.textProcessing.d.ts。
效果预览
使用说明:
- 在手机的主屏幕,点击”nlpDemo“,启动应用。
- 输入一段文字。
- 点击“获取分词结果”按钮,展示出分词结果,点击“获取实体结果”,展示出实体抽取结果。
具体实现
本示例展示的控件在@hms.ai.nlp.textProcessing.d.ts定义了分词和实体抽取的API:
- function getWordSegment(text: string): Promise;
- function getEntity(text: string, entityConfig?: EntityConfig): Promise;
输入一段文本后点击分词、实体结果按钮,接收处理返回的结果(文字信息)。参考:
import hilog from '@ohos.hilog';
import { textProcessing } from '@kit.NaturalLanguageKit';@Entry
@Component
struct Index {private inputText: string = '';@State outputText: string = '';build() {Column() {TextInput({ placeholder: '请输入文本' }).height(40).fontSize(16).width('90%').margin(10).onChange((value: string) => {this.inputText = value;})Scroll() {Text(this.outputText).fontSize(16).width('90%').margin(10)}.height('40%')Row() {Button('获取分词结果').type(ButtonType.Capsule).fontColor(Color.White).width('45%').margin(10).onClick(async () => {try {let result: textProcessing.WordSegment[] = await textProcessing.getWordSegment(this.inputText);this.outputText = this.formatWordSegmentResult(result);} catch (err) {hilog.error(0x0000, 'testTag', `getWordSegment error: code: ${err.code}, message: ${err.message}`);}})Button('获取实体结果').type(ButtonType.Capsule).fontColor(Color.White).width('45%').margin(10).onClick(async () => {try {let result: textProcessing.Entity[] = await textProcessing.getEntity(this.inputText);this.outputText = this.formatEntityResult(result);} catch (err) {hilog.error(0x0000, 'testTag', `getEntity error: code: ${err.code}, message: ${err.message}`);}})}}.width('100%').height('100%').justifyContent(FlexAlign.Center)}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;}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;}
}