Herramienta de extracción de palabras (6): Herramienta de extracción de palabras Descripción adicional
Continuando con el artículo anterior, observamos la explicación adicional de la herramienta de extracción de palabras.
5. Explicación adicional de la herramienta de extracción de palabras
5.1. ¿Por qué utilizar Automatización OLE?
OLE Aumation se define en Wikipedia de la siguiente manera.
En la programación de aplicaciones de Microsoft Windows, OLE Automation (más tarde rebautizado simplemente como Automatización[1][2]) es un mecanismo de comunicación entre procesos (IPC) desarrollado por Microsoft. Se basa en un subconjunto del Modelo de Objetos Componentes (COM) y estaba destinado a ser utilizado a través de un lenguaje de secuencias de comandos (originalmente Visual Basic), pero ahora está disponible a través de varios idiomas en Windows.
fuente: https://en.wikipedia.org/wiki/OLE_Automatización
En Python, la automatización OLE es posible utilizando el paquete win32com. Puede realizar las funciones deseadas controlando las aplicaciones de MS-Office.
Se utilizó OLE Aumation para la herramienta de extracción de palabras por las siguientes razones.
- Existen los siguientes paquetes dedicados que pueden leer y escribir MS-Word y PowerPoint, pero no los usé a propósito.
- MS-Word: python-docx, python-docx2txt
- PowerPoint: python-pptx
- Excel: openpyxl, xlsxwriter, pyxlsb
- La mayoría de los entornos corporativos fuerzan la instalación de software DRM, por lo que los archivos de documentos están encriptados.
- Los archivos cifrados no se pueden leer si se utiliza un paquete dedicado.
- Si usa el método de automatización OLE con el paquete pywin32, puede leer el archivo a través del programa de Office.
- Puede perder algo de rendimiento con OLE Automation, pero los resultados están garantizados.
Para los códigos de Python que controlan MS-Word, PowerPoint y Excel, consulte el siguiente artículo.
- Automatización de MS-Word: 4.3.1. función get_doc_text
- Automatización de PowerPoint: 4.3.2._get_ppt_text_Function
- Excel automatización: 4.3.4._get_db_comment_text_function
5.2. Relacionado con la codificación de archivos de texto (solo se admite UTF-8)
- La codificación del archivo de texto de entrada está diseñada para admitir solo UTF-8.
- Si el archivo de texto entre los archivos de entrada tiene codificación ANSI, se producirá el siguiente error porque tiene codificación cp949 y no Unicode.
- UnicodeDecodeError: el códec 'utf-8' no puede decodificar el byte 0xb4 en la posición 5: byte de inicio no válido
- Si ocurre un error similar durante la ejecución, guarde el archivo de texto como UTF-8 y ejecútelo nuevamente.
5.3. Razones para usar multiprocesamiento
Publicación anterior "Herramienta de extracción de palabras (4): Descripción del código fuente de la herramienta de extracción de palabras (1)En “, se explicó el código que usa procesamiento múltiple.
4.2.3. Ejecute get_file_text con procesamiento múltiple
4.2.4. Ejecute get_word_list con procesamiento múltiple
Cuando se creó esta herramienta por primera vez, tanto la extracción de texto como la extracción de palabras eran de procesamiento único. Cuando se usó por primera vez en un proyecto de la empresa K a principios de 2021, se necesitaron unas 20 horas para extraer candidatos de palabras estándar de unas 160 000 columnas de comentarios en una computadora portátil (CPU i5, 16 GB de RAM).
Después de varias iteraciones, incluidas las pruebas, surgió la necesidad de acortar el tiempo de ejecución. Cuando busqué en Google para usar Thread para el procesamiento paralelo, decidí que el procesamiento múltiple es más adecuado que el subprocesamiento múltiple porque Python tiene el concepto de GIL (Global Interpreter Lock).
A través de una ligera modificación del código, se aplicó el procesamiento múltiple tanto a la extracción de texto como a la extracción de palabras, y se creó un argumento (multi_process_count) para especificar el grado de paralelismo durante la ejecución.
Cuando multi_process_count se estableció en 8 y se ejecutó, la tarea que tomó 20 horas se acortó a aproximadamente 40 minutos y fue lo suficientemente efectiva.
5.4. Notas sobre la extracción de palabras compuestas
La descripción de sustantivos, pos y morfos entre las principales funciones de Mecab es la siguiente.
función | Explicación |
sustantivos (texto) | Analiza el texto, extrae solo los sustantivos y devuelve una lista |
posición (texto) | Analiza el texto y devuelve una lista de formas (morfemas, partes del discurso, etiquetas) |
se transforma (texto) | Analiza el texto, extrae solo los morfemas y devuelve una lista |
El resultado de la ejecución de cada función es el ejemplo de la cadena de entrada a continuación.
* Cadena de entrada: el usuario define los requisitos funcionales y no funcionales.
función | resultado de ejecución |
sustantivos (texto) | ['uso', 'capacidades', 'requisitos', 'activos', 'características', 'requisitos', 'activos', 'definiciones'] |
posición (texto) | [('habilitar', 'NNG'), ('carácter', 'XSN'), ('es', 'JX'), ('característica', 'NNG'), ('rojo', 'XSN') , ('demanda', 'NNG'), ('asunto', 'NNG'), ('y', 'JC'), ('no', 'XPN'), ('característica', 'NNG') ; , ('debería', 'XSV+EF'), ('.', 'SF')] |
se transforma (texto) | ['usar', 'usuario', 'es', 'característica', 'némesis', 'solicitud', 'especificación', 'y', 'no', 'característica', 'némesis', 'solicitud', ' importa', 'a', 'definir', 'debería', '.'] |
* Cadena de entrada: la estandarización de datos es un área importante de la construcción de arquitectura de datos.
función | resultado de ejecución |
sustantivos (texto) | ['datos', 'estándares', 'datos', 'arquitectura', 'construcción', 'crítico', 'área'] |
posición (texto) | [('datos', 'NNG'), ('estándar', 'NNG'), ('martes', 'XSN'), ('es', 'JX'), ('datos', 'NNG') , ('arquitectura', 'NNG'), ('construir', 'NNG'), ('de', 'JKG'), ('importante', 'NNG'), ('uno', 'XSA+ETM '), ('región', 'NNG'), ('este', 'VCP'), ('da', 'EF'), ('.', 'SF')] |
se transforma (texto) | ['Datos', 'Estándar', 'Campo', 'A', 'Datos', 'Arquitectura', 'Construcción', 'De', 'Importante', 'Uno', 'Región', 'Este', ' todo', '.'] |
La herramienta de extracción de palabras no utiliza directamente la función de sustantivos, sino que extrae palabras aplicando una expresión regular al resultado de la función pos. A continuación se muestra una explicación del patrón de expresión regular.
Patrón usando expresión regular: '(NNP/|NNG/)+(XSN/)*|(XPN/)+(NNP/|NNG/)+(XSN/)*|(SL/)+'
- Este patrón encuentra una de tres cosas:
- (NNP/|NNG/)+(XSN/)*: 1 o más (nombre propio o nombre común) (obligatorio) + 0 o más sufijos derivados de sustantivos (opcional)
- (XPN/)+(NNP/|NNG/)+(XSN/)*: 1 o más prefijos (obligatorio) + 1 o más (nombres propios o comunes) (obligatorio) + 0 o más sufijos derivados de sustantivos (opcional) )
- (SL/)+: Al menos un idioma extranjero (requerido)
Ejemplos de extracción de solo sustantivos llamando a sustantivos (texto) y extracción de palabras compuestas adicionales mediante la aplicación de expresiones regulares son los siguientes:
* Cadena de entrada: el usuario define los requisitos funcionales y no funcionales.
función | resultado de ejecución |
Extraer solo sustantivos sustantivos (texto) | uso, función, necesidad, materia, función, necesidad, materia, definición |
Aplicar expresión regular | uso, función, necesidad, requisito, función, requisito, requisito, definición, usuario[compuesto], funcional[compuesto], requisito[compuesto], no funcional[compuesto], requisito[compuesto] |
* Cadena de entrada: la estandarización de datos es un área importante de la construcción de arquitectura de datos.
función | resultado de ejecución |
Extraer solo sustantivos sustantivos (texto) | datos, estándar, datos, arquitectura, construcción, importante, área |
Aplicar expresión regular | Datos, estándar, datos, arquitectura, construcción, importante, dominio, estandarización de datos [compuesto], construcción de arquitectura de datos [compuesto] |
La razón para extraer adicionalmente la palabra compuesta es evitar problemas en caso de que la palabra compuesta se agregue más tarde revisando si se debe registrar la palabra compuesta como estándar en la etapa inicial de construcción del diccionario de palabras estándar.
Si se agrega una palabra compuesta más tarde, se puede cambiar el nombre físico del término estándar que usa las palabras individuales que constituyen la palabra compuesta, e incluso es posible que se deba cambiar el nombre de la tabla y el nombre de la columna de la base de datos usando el término estándar.
Por supuesto, existe un método para cambiar solo el nombre físico del término estándar que se creará en el futuro sin cambiar el nombre físico del término estándar que ya se ha creado recomendado desde una perspectiva a largo plazo.
No es una decisión fácil cambiar el nombre físico de un término estándar que ya se ha creado. Si el desarrollo ya está en curso, debe proceder a cambiar el código fuente que hace referencia a la columna cuyo nombre se ha cambiado. Los proyectos que requieren cronogramas adicionales e involucran a múltiples partes interesadas pueden estar sujetos a rendición de cuentas.
Teniendo en cuenta que una gran cantidad de cambios en el código fuente pueden tener un gran impacto en el proyecto y pueden ser bastante difíciles, revisar palabras compuestas en la etapa inicial de establecer un diccionario estándar es un proceso necesario.
No había forma de identificar candidatos a palabras compuestas conociendo el impacto, y esta herramienta de extracción de palabras proporciona un método adecuado.
Puede que no sea óptimo, pero creo que es suficiente como alternativa en el momento actual.
5.5. Tipos de analizadores morfológicos partes del discurso.
Publicación anterior Herramienta de extracción de palabras (5): Descripción del código fuente de la herramienta de extracción de palabras (2) de 4.4._get_word_list_function tenía el siguiente contenido:
- Línea 64: Ejecute el etiquetado de parte del discurso del analizador de morfemas con la función pos. Separaré los contenidos relacionados con el etiquetado de parte del discurso.
- La función de etiquetado de partes del discurso pos descompone la cadena de entrada en unidades de partes del discurso y devuelve una cadena en la que se etiqueta cada unidad.
- Por ejemplo, si el texto es 'Los usuarios definen requisitos funcionales y no funcionales', el resultado de la ejecución de la función pos es '[('usar', 'NNG'), ('carácter', 'XSN'), (' es', 'JX'), ('función', 'NNG'), ('enemigo', 'XSN'), ('solicitud', 'NNG'), ('spec', 'NNG' '), ( 'y', 'JC'), ('b', 'XPN'), ('característica', 'NNG'), ('enemigos', 'XSN'), ('solicitud', 'NNG'), ( 'cosa', 'NNG'), ('a', 'JKO'), ('definición', 'NNG'), ('debería', 'XSV+EF'), ('.', 'SF') ]'.
- Entre las partes del discurso etiquetadas en el ejemplo anterior, 'NNG' es un sustantivo común, 'XSN' es un sufijo derivado de un sustantivo, 'JX' es un auxiliar, 'JC' es una partícula conectiva, 'XPN' es un prefijo , 'JKO' es una partícula objetiva, ' XSV + EF' es un sufijo derivado de un verbo + terminación final, y 'SF' significa un punto/signo de interrogación/exclamación.
Las etiquetas de partes del discurso proporcionadas por Mecab están organizadas en el siguiente documento.
A continuación se resumen extractos del documento anterior.
significado sustancial | Categoría principal (5 palabras + otras) | Sejong etiquetas de partes del discurso | mecab-en-dic partes de la etiqueta del discurso | ||
etiqueta | Explicación | etiqueta | Explicación | ||
morfema sustantivo | Cheon | NNG | sustantivo común | NNG | sustantivo común |
PNN | nombre propio | PNN | nombre propio | ||
NNB | sustantivo dependiente | NNB | sustantivo dependiente | ||
NNBC | sustantivo que denota una unidad | ||||
NR | Investigación | NR | Investigación | ||
notario público | pronombre | notario público | pronombre | ||
verbo | vv | verbo | vv | verbo | |
Virginia | adjetivo | Virginia | adjetivo | ||
VX | verbo auxiliar | VX | verbo auxiliar | ||
PCV | especificador positivo | PCV | especificador positivo | ||
VCN | especificador negativo | VCN | especificador negativo | ||
modificador | milímetro | detective | milímetro | detective | |
REVISTA | adverbio común | REVISTA | adverbio común | ||
COMANDANTE | adverbio de conjunción | COMANDANTE | adverbio de conjunción | ||
idioma independiente | CI | interjección | CI | interjección | |
morfema formal | palabra relativa | JKS | investigación nominativa | JKS | investigación nominativa |
JKC | investigación a distancia | JKC | investigación a distancia | ||
JKG | investigación del caso del ataúd | JKG | investigación del caso del ataúd | ||
J.K.O. | investigación de objetos | J.K.O. | investigación de objetos | ||
JKB | investigacion secundaria de incendios | JKB | investigacion secundaria de incendios | ||
JKV | investigación vocativa | JKV | investigación vocativa | ||
JKQ | verificación de citas | JKQ | verificación de citas | ||
JX | auxiliar | JX | auxiliar | ||
JC | investigación de conexión | JC | investigación de conexión | ||
caballo fresco maternal | EP | caballo fresco maternal | EP | caballo fresco maternal | |
final de palabra | FE | final final | FE | final final | |
CE | terminación conectiva | CE | terminación conectiva | ||
ETN | terminación de la forma del sustantivo | ETN | terminación de la forma del sustantivo | ||
ETM | terminación tubular maleable | ETM | terminación tubular maleable | ||
prefijo | XPN | prefijo de cadena | XPN | prefijo de cadena | |
sufijo | XSN | sufijo de derivación del sustantivo | XSN | sufijo de derivación del sustantivo | |
XSV | sufijo de derivación verbal | XSV | sufijo de derivación verbal | ||
XSA | sufijo de derivación de adjetivo | XSA | sufijo de derivación de adjetivo | ||
base | XR | base | XR | base | |
firmar | SF | punto final, signo de interrogación, Signo de exclamación | SF | punto final, signo de interrogación, Signo de exclamación | |
SE | elipsis | SE | elipsis … | ||
SS | cita,paréntesis,linea punteada | inicio de sesión único | paréntesis abierto (, [ | ||
SSC | paréntesis de cierre ), ] | ||||
SP | descansar,Punto Medio,colon,barra oblicua | CAROLINA DEL SUR | Separador , · / : | ||
ENTONCES | guión(ola,ocultación,desaparecido) | SY | |||
SUDOESTE | Otros símbolos (símbolos matemáticos lógicos,símbolo de moneda) | ||||
aparte de coreano | SL | Idioma extranjero | SL | Idioma extranjero | |
SH | personaje chino | SH | personaje chino | ||
número de serie | número | número de serie | número |
Con esto concluye el artículo sobre la herramienta de extracción de palabras. Si agrego o mejoro una característica, escribiré un artículo separado.
<< Lista de artículos relacionados >>
- Herramienta de extracción de palabras (1): descripción general de la herramienta de extracción de palabras
- Herramienta de extracción de Word (2): configuración del entorno de ejecución de la herramienta de extracción de Word
- Herramienta de extracción de Word (3): cómo ejecutar la herramienta de extracción de Word y verificar los resultados
- Herramienta de extracción de palabras (4): Descripción del código fuente de la herramienta de extracción de palabras (1)
- Herramienta de extracción de palabras (5): Descripción del código fuente de la herramienta de extracción de palabras (2)
- Herramienta de extracción de palabras (6): Herramienta de extracción de palabras Descripción adicional
- Tabla de contenido completa del descriptor de la herramienta de extracción de palabras, descarga