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 |
Sí |
En t |
El código de resultado del etiquetado de parte del discurso. Los valores incluyen:
|
mensaje |
Sí |
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。 |
词性 |
说明 |
词性 |
说明 |
词性 |
说明 |
---|---|---|---|---|---|
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);