Creación de un asistente de escritura impulsado por IA para WPS Office
WPS Office es una herramienta de productividad desarrollada por Kingsoft con más de 150M de usuarios en todo el mundo. El departamento de inteligencia artificial (IA) de la empresa creó un asistente de escritura inteligente desde cero utilizando algoritmos de coincidencia semántica como el reconocimiento de intención y la agrupación de textos. La herramienta existe tanto como aplicación web como WeChat mini program que ayuda a los usuarios a crear rápidamente esquemas, párrafos individuales y documentos completos simplemente introduciendo un título y seleccionando hasta cinco palabras clave.
El motor de recomendaciones del asistente de escritura utiliza Milvus, un motor de búsqueda de similitud de código abierto, para impulsar su módulo central de procesamiento de vectores. A continuación exploraremos el proceso para crear el asistente de escritura inteligente de WPS Offices, incluido cómo se extraen características de datos no estructurados, así como el papel que desempeña Milvus en el almacenamiento de datos y la alimentación del motor de recomendaciones de la herramienta.
Ir a:
- Dar sentido a los datos textuales no estructurados
- Usar el modelo TFIDF para maximizar la extracción de características
- Extraer características con el modelo de aprendizaje profundo LSTM-CNNs-CRF bidireccional
- Crear incrustaciones de oraciones usando Infersent
- Almacenar y consultar vectores con Milvus
Dar sentido a los datos textuales no estructurados
Al igual que cualquier problema moderno que valga la pena resolver, crear el asistente de escritura de WPS comienza con datos desordenados. Decenas de millones de documentos de texto densos de los que deben extraerse características significativas, para ser un poco más precisos. Para comprender la complejidad de este problema, considere cómo dos periodistas de diferentes medios de noticias podrían informar sobre el mismo tema.
Aunque ambos se ceñirán a las reglas, principios y procesos que rigen la estructura de las oraciones, tomarán decisiones de vocabulario diferentes, crearán oraciones de distinta longitud y usarán sus propias estructuras de artículo para contar historias similares (o quizá diferentes). A diferencia de los conjuntos de datos estructurados con un número fijo de dimensiones, los cuerpos de texto carecen inherentemente de estructura porque la sintaxis que los rige es muy maleable. Para encontrar significado, deben extraerse características legibles por máquina de un corpus no estructurado de documentos. Pero primero, los datos deben limpiarse.
Hay diversas formas de limpiar datos textuales, ninguna de las cuales este artículo cubrirá en profundidad. No obstante, este es un paso importante que precede al procesamiento de los datos y puede incluir eliminar etiquetas, eliminar caracteres acentuados, expandir contracciones, eliminar caracteres especiales, eliminar palabras vacías y más. Se puede encontrar una explicación detallada de los métodos para preprocesar y limpiar datos de texto aquí.
Usar el modelo TFIDF para maximizar la extracción de características
Para comenzar a dar sentido a los datos textuales no estructurados, se aplicó el modelo de frecuencia de término–frecuencia inversa de documento (TFIDF) al corpus del que se alimenta el asistente de escritura de WPS. Este modelo utiliza una combinación de dos métricas, frecuencia de término y frecuencia inversa de documento, para dar a cada palabra dentro de un documento un valor TFIDF. La frecuencia de término (TF) representa el recuento bruto de un término en un documento dividido por el número total de términos en el documento, mientras que la frecuencia inversa de documento (IDF) es el número de documentos en un corpus dividido por el número de documentos en los que aparece un término.
El producto de TF e IDF proporciona una medida de la frecuencia con la que aparece un término en un documento multiplicada por lo única que es la palabra en el corpus. En última instancia, los valores TFIDF son una medida de cuán relevante es una palabra para un documento dentro de una colección de documentos. Los términos se ordenan por valores TFIDF, y aquellos con valores bajos (es decir, palabras comunes) pueden recibir menos peso al usar aprendizaje profundo para extraer características del corpus.
Extracción de características con el modelo de aprendizaje profundo bi-directional LSTM-CNNs-CRF
Usando una combinación de memoria a largo corto plazo bidireccional (BLSTM), redes neuronales convolucionales (CNN) y campos aleatorios condicionales (CRF), se pueden extraer del corpus representaciones tanto a nivel de palabra como de carácter. El modelo BLSTM-CNNs-CRF utilizado para crear el asistente de escritura de WPS Office funciona de la siguiente manera:
- CNN: Las incrustaciones de caracteres se utilizan como entradas para la CNN; luego se extraen estructuras de palabras semánticamente relevantes (es decir, el prefijo o sufijo) y se codifican en vectores de representación a nivel de carácter.
- BLSTM: Los vectores a nivel de carácter se concatenan con vectores de incrustación de palabras y luego se introducen en la red BLSTM. Cada secuencia se presenta hacia adelante y hacia atrás a dos estados ocultos separados para capturar información pasada y futura.
- CRF: Los vectores de salida de la BLSTM se introducen en la capa CRF para decodificar conjuntamente la mejor secuencia de etiquetas.
La red neuronal ahora es capaz de extraer y clasificar entidades nombradas de texto no estructurado. Este proceso se llama reconocimiento de entidades nombradas (NER) e implica localizar y clasificar categorías como nombres de personas, instituciones, ubicaciones geográficas y más. Estas entidades desempeñan un papel importante en la clasificación y recuperación de datos. A partir de aquí, se pueden extraer del corpus oraciones clave, párrafos y resúmenes.
Creación de incrustaciones de oraciones usando Infersent
Infersent, un método supervisado de incrustaciones de oraciones diseñado por Facebook que incrusta oraciones completas en un espacio vectorial, se utiliza para crear vectores que se introducirán en la base de datos Milvus. Infersent se entrenó utilizando el corpus Stanford Natural Language Inference (SNLI), que contiene 570k pares de oraciones que fueron escritas y etiquetadas por humanos. Puede encontrarse información adicional sobre cómo funciona Infersent aquí.
Almacenamiento y consulta de vectores con Milvus
Milvus es un motor de búsqueda de similitud de código abierto que admite agregar, eliminar, actualizar y realizar búsquedas casi en tiempo real de incrustaciones a una escala de billones de bytes. Para mejorar el rendimiento de las consultas, Milvus permite especificar un tipo de índice para cada campo vectorial. El asistente inteligente de WPS Office utiliza el índice IVF_FLAT, el tipo de índice Inverted File (IVF) más básico, donde “flat” significa que los vectores se almacenan sin compresión ni cuantización. La agrupación se basa en IndexFlat2, que utiliza búsqueda exacta para la distancia L2.
Aunque IVF_FLAT tiene una tasa de recuperación de consultas del 100%, su falta de compresión resulta en velocidades de consulta comparativamente lentas. La función de particionamiento de Milvus se utiliza para dividir los datos en múltiples partes de almacenamiento físico según reglas predefinidas, haciendo que las consultas sean más rápidas y precisas. Cuando se añaden vectores a Milvus, las etiquetas especifican a qué partición deben agregarse los datos. Las consultas de los datos vectoriales usan etiquetas para especificar en qué partición debe ejecutarse la consulta. Los datos pueden desglosarse aún más en segmentos dentro de cada partición para mejorar aún más la velocidad.
El asistente de escritura inteligente también utiliza clústeres de Kubernetes, lo que permite que los contenedores de aplicaciones se ejecuten en múltiples máquinas y entornos, así como MySQL para la gestión de metadatos.
La IA no está reemplazando a los escritores, los está ayudando a escribir
El asistente de escritura de Kingsoft para WPS Office se basa en Milvus para gestionar y consultar una base de datos de más de 2 millones de documentos. El sistema es muy flexible, capaz de ejecutar búsquedas casi en tiempo real en conjuntos de datos a escala de billones. Las consultas se completan en 0,2 segundos de media, lo que significa que se pueden generar documentos completos casi instantáneamente usando solo un título o unas pocas palabras clave. Aunque la IA no está reemplazando a los escritores profesionales, la tecnología que existe hoy es capaz de mejorar el proceso de escritura de formas novedosas e interesantes. El futuro es desconocido, pero, como mínimo, los escritores pueden esperar métodos más productivos, y para algunos menos difíciles, de “poner la pluma sobre el papel”.
Se utilizaron las siguientes fuentes para este artículo:
- “Etiquetado de secuencias de extremo a extremo mediante LSTM-CNNs-CRF bidireccionales,” Xuezhe Ma y Eduard Hovy.
- “Métodos tradicionales para datos de texto,” Dipanjan (DJ) Sarkar.
- “Extracción de características de texto basada en TF-IDF asociando semántica,” Qing Liu, Jing Wang, Dehai Zhang, Yun Yang, NaiYao Wang.
- “Comprensión de incrustaciones de oraciones usando Infersent de Facebook,” Rehan Ahmad
- “Aprendizaje supervisado de representaciones universales de oraciones a partir de datos de inferencia de lenguaje natural,” Alexis Conneau, Douwe Kiela, Holger Schwenk, LoÏc Barrault, Antoine Bordes.V1
Lee otras historias de usuarios para saber más sobre cómo crear cosas con Milvus.
Sigue leyendo

A Developer's Guide to Exploring Milvus 2.6 Features on Zilliz Cloud
Milvus 2.6 marks a shift from “vector search + glue code” to a more advanced retrieval engine, and it is now Generally Available (GA) on Zilliz Cloud (a managed Milvus service).

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.



