Desarrollo de la ruta de aprendizaje de HarmonyOS: desarrollo de funciones de IA (etiquetado de partes del discurso)

Descripción general del etiquetado de partes del discurso

Con el desarrollo de la tecnología de la información, el crecimiento geométrico de la cantidad de información en la red se ha convertido gradualmente en la característica principal de la sociedad actual. La extracción precisa de información clave del texto es la base técnica de los motores de búsqueda y otros campos, y la segmentación de palabras es particularmente importante como primer paso en la extracción de información de texto.

Como investigación básica en el campo del procesamiento del lenguaje natural, la segmentación de palabras ha derivado en varias aplicaciones relacionadas con el procesamiento de textos.

El etiquetado de partes del discurso incluye la segmentación de palabras y marcar una parte del discurso correcta para cada palabra en el resultado de la segmentación de palabras (marcar cada palabra como un sustantivo, verbo, adjetivo u otra parte del discurso). Los desarrolladores pueden personalizar la granularidad de la segmentación de palabras.

Mecanismo de operación

El etiquetado de partes del discurso proporciona una interfaz para la segmentación automática de texto y partes del discurso. Para una parte del texto de entrada, se segmenta automáticamente a través de la interfaz de etiquetado de parte del discurso, y se marca una parte del discurso correcta para cada palabra en el resultado de la segmentación de palabras. El etiquetado de partes del discurso proporciona diferentes granularidades de segmentación de palabras, y los desarrolladores pueden personalizar la granularidad de segmentación de palabras según sea necesario.

Restricciones y Restricciones

  • Actualmente solo se admite el contexto chino.
  • El texto de etiquetado de parte del discurso está limitado a 500 caracteres. Si la cantidad de caracteres excede, se devolverá un error de parámetro. El texto debe estar en formato UTF-8. Si el formato es incorrecto, no se informará ningún error. pero dará lugar a un error en el resultado del análisis.
  • Engine admite el acceso simultáneo de varios usuarios, pero no admite la invocación simultánea de la misma función por parte del mismo usuario. Si el mismo proceso llama varias veces a la misma función al mismo tiempo, se devolverá un error de sistema ocupado; si diferentes procesos llaman a la misma función, solo un proceso puede procesar el negocio al mismo tiempo, y otros procesos ingresarán al sistema. cola.

Desarrollo de etiquetado POS

introducción a la escena

  • Aplicado al desarrollo de motores de búsqueda. Para los motores de búsqueda, no tiene sentido encontrar todos los resultados en decenas de miles de millones de páginas web, lo importante es presentar los resultados más relevantes en la parte superior, lo que también se denomina ranking de relevancia. Si la segmentación de palabras es precisa o no, afectará directamente la clasificación de la relevancia de los resultados de búsqueda.
  • Aplicado al desarrollo de software relacionado con el análisis semántico. En el análisis semántico, comprenda el significado correcto del texto a través de la segmentación de palabras, y obtenga la parte del discurso a través del etiquetado de parte del discurso, y determine con precisión si una palabra es un sustantivo, verbo, adjetivo, etc., lo que facilita el análisis semántico. expandir.

Descripción de la interfaz

El etiquetado de partes del discurso proporciona la interfaz getWordPos(), que puede marcar una parte del discurso correcta para cada palabra en el resultado de la segmentación de palabras de acuerdo con la granularidad de la segmentación.

interfaz principal

nombre de la interfaz

describir

ResponseResult getWordPos(String requestData, int requestType)

El etiquetado de parte del discurso se realiza sincrónicamente.

ResponseResult getWordPos(cadena final requestData, final int requestType, final OnResultListener<ResponseResult> listener)

El etiquetado de parte del discurso se realiza de forma asíncrona.

void init(Context context, OnResultListener<Integer> listener, boolean isLoadModel)

Inicialice el servicio NLU. Antes de llamar a interfaces funcionales como NLU, primero debe llamar a esta interfaz y luego llamar a la interfaz funcional de NLU después de obtener el resultado de devolución de llamada en el método onResult(T) de OnResultListener. El desarrollador pasa el parámetro de escucha como una devolución de llamada para esperar el proceso de llamada y el resultado de la interfaz funcional de NLU.

destrucción vacía (contexto contextual)

Cancele todas las tareas de NLU y destruya el servicio de motor de NLU. Después de llamar a este método, el servicio NLU ya no se puede usar. Si necesita reutilizar el servicio NLU, debe llamar a init(Context, OnResultListener<Integer>, boolean)} nuevamente para inicializar el servicio NLU.

Descripción del valor de entrada de la interfaz

  • requestType indica el tipo de solicitud, que está definido por la clase NluRequestType de la siguiente manera:

    tipo

    ilustrar

    interno estático

    REQUEST_TYPE_LOCAL = 0 solicitud local

  • requestData representa la información de texto de entrada en formato JSON, como se describe en la siguiente tabla.

    nombre del parámetro

    ¿Es obligatorio?

    tipo

    ilustrar

    texto

    tura

    Cadena

    El texto a analizar está codificado en UTF-8, limitado a 500 caracteres.

    tipo

    FALSO

    largo

    La granularidad de la segmentación de palabras, el valor predeterminado es 0.

    • 0: palabras básicas, menor granularidad. Por ejemplo: "Quiero ver Rápido y Furioso", dividido en "Quiero/ver/velocidad/y/furioso".
    • 1: Sobre la base de palabras básicas, fusionar entidades. Por ejemplo: "I'm going to Jiangning Wanda Plaza to watch The Fast and the Furious" se divide en "Yo/quiero/ir/Jiangning Wanda Plaza/ver/velocidad/y/pasión".

      Para la información de texto que no tiene una entidad fusionable, su efecto de segmentación de palabras es el mismo que el del tipo 0. Por ejemplo: "Ver una película juntos mañana a las 3 en punto de la tarde" se divide en "mañana/por la tarde/3 en punto/juntos/ver/película".

    • 9223372036854775807 (2 elevado a la 63 potencia menos 1): Sobre la base del tipo 1, fusione la estructura general de la entidad tiempo, lugar, etc. (no fusione si hay símbolos separados) y fusione algunas frases comunes.

      Por ejemplo: "adjetivo + de", "verbo de un carácter + sustantivo de un carácter", etc., simplifica los componentes de la oración. De acuerdo con los principios anteriores, "Veré una película en el cine Jiangning Ruidu Jinyi mañana de 3:00 p. m. a 5:00 p. m." se dividirá en "mañana a las 3:00 p. /Jiangning Ruidu Jinyi Cinema/ver/película".

    callPkg

    FALSO

    Cadena

    nombre de la persona que llama

    tipo de llamada

    FALSO

    En t

    Tipo de llamada:

    • 0: aplicación normal (por defecto)
    • 1: aplicación rápida

    callVersion

    FALSO

    Cadena

    El número de versión de la persona que llama.

    estado de llamada

    FALSO

    En t

    Estado de la persona que llama:

    • -1: desconocido (predeterminado)
    • 0: primer plano
    • 1. Antecedentes

    Categorías de entidades admitidas actualmente por NLU:

    clase de entidad

    Observación

    Película

    Confíe en diccionarios, requiera casos de uso reales, no modifique.

    drama televisivo

    Confíe en diccionarios, requiera casos de uso reales, no modifique.

    espectáculo de variedades

    Confíe en diccionarios, requiera casos de uso reales, no modifique.

    dibujos animados

    Confíe en diccionarios, requiera casos de uso reales, no modifique.

    número de tren

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    número de vuelo

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    equipo

    Confíe en el diccionario, admita NBA, CBA, Premier League, La Liga, Bundesliga, Serie A, Ligue 1, identificación del equipo de la Superliga china, requiera casos de uso reales, no modifique.

    nombre de persona

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    el número de rastreo

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    número de teléfono

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    URL

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    Correo

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    la Liga

    NBA, CBA, Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Chinese Super League, requieren casos de uso reales, no modificar.

    tiempo

    Se requieren casos de uso reales y no se requiere ninguna modificación.

    Lugar

    Contiene hoteles, restaurantes, lugares pintorescos, escuelas, carreteras, provincias, ciudades, condados, distritos, pueblos, etc., basándose parcialmente en diccionarios.

    código de verificación

    El caso de uso es real, no lo modifique.

Descripción del valor de retorno de la interfaz

El resultado de respuesta en el valor de retorno ResponseResult es una cadena JSON, que refleja el resultado del etiquetado de parte del discurso:

nombre del parámetro

¿Es obligatorio?

tipo de valor

ilustrar

código

En t

El código de resultado del etiquetado de parte del discurso. Los valores incluyen:
  • 0: éxito
  • 1: El sistema se está inicializando
  • 2: error de parámetro
  • 3: El sistema está ocupado
  • 4: excepción del sistema
  • 5: Tarea agotada
  • 6: Otros errores

mensaje

Cadena

mensaje de error.

posición

No

Matriz JSON

La matriz de palabras segmentada, el tipo en la matriz es JSONObject.

+palabra

No

Cadena

Palabras segmentadas.

+etiqueta

No

Cadena

词性,type为1或9223372036854775807时,人名实体的词性为nr,时间实体的词为t,地点实体的词性为ns,其他实体统一为ne。具体词性类型可参表1

表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.NluRequestType;
import ohos.ai.nlu.NluClient;
import ohos.ai.nlu.OnResultListener;
import ohos.ai.nlu.ResponseResult;

使用NluClient静态类进行初始化,通过异步方式获取服务的连接。

  • 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);

Supongo que te gusta

Origin blog.csdn.net/weixin_47094733/article/details/131402969
Recomendado
Clasificación