Lanzamiento de la herramienta de extracción de palabras v0.41: agregue la frecuencia de aparición de DBSchema del elemento de palabras

* Consulte también la versión v0.42 recientemente lanzada para corregir errores.
Lanzamiento de Word Extractor v0.42: corrección de errores: habilidad de productividad (prodskill.com)

Distribuya después de complementar la función para agregar y extraer elementos de frecuencia de ocurrencia de DBSchema de palabras de la herramienta de extracción de palabras previamente distribuida (v0.40). El elemento DBSchema_Freq informa cuántos DB-Schemas se distribuye la fuente de la palabra.

Referencia: Herramienta de extracción de palabras (1): descripción general de la herramienta de extracción de palabras

1. Cambios en los resultados de la herramienta de extracción de palabras

Un ejemplo del resultado de la extracción de palabras de la herramienta distribuida anteriormente es el siguiente.

▼ Ejemplo de hoja de "Frecuencia de palabras" antes del cambio (v0.40)

palabrafrecuenciaFuente
código110DB1.OWNER1.COMTCADMINISTCODE.ADMINIST_ZONE_CODE (código de zona administrativa)
DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.CHANGE_SE_CODE (cambiar código de identificación)
DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.CPRVN_CODE (código de intento)
número103DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.OPERT_SN(número de serie del trabajo)
DB1.OWNER1.COMTCZIP.ZIP (código postal)
DB1.OWNER1.COMTHCONFMHISTORY.CONFM_NO (número de aprobación)
número de personas88DB1.OWNER1.COMTNADBKMANAGE.ADBK_NM (nombre de la libreta de direcciones)
DB1.OWNER1.COMTCCMMNCLCODE.CL_CODE_NM (nombre del código de clasificación)
DB1.OWNER1.COMTCCMNDETAILCODE.CODE_NM (nombre de código)
Ejemplo de hoja de "Frecuencia de palabras" antes del cambio

Los elementos DBSchema_Freq se agregan a los resultados extraídos de v0.41 de la siguiente manera.

▼ Ejemplo de hoja de "Frecuencia de palabras" después del cambio (v0.41)

palabrafrecuenciaFuenteDBSchema_Freq
código110DB1.OWNER1.COMTCADMINISTCODE.ADMINIST_ZONE_CODE (código de zona administrativa)
DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.CHANGE_SE_CODE (cambiar código de identificación)
DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.CPRVN_CODE (código de intento)
10
número103DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.OPERT_SN(número de serie del trabajo)
DB1.OWNER1.COMTCZIP.ZIP (código postal)
DB1.OWNER1.COMTHCONFMHISTORY.CONFM_NO (número de aprobación)
9
número de personas88DB1.OWNER1.COMTNADBKMANAGE.ADBK_NM (nombre de la libreta de direcciones)
DB1.OWNER1.COMTCCMMNCLCODE.CL_CODE_NM (nombre del código de clasificación)
DB1.OWNER1.COMTCCMNDETAILCODE.CODE_NM (nombre de código)
5
Ejemplo de hoja de "Frecuencia de palabras" después de los cambios

El elemento DBSchema_Freq informa cuántos DB-Schemas se distribuye la fuente de la palabra. La información necesaria para seleccionar candidatos de palabras estándar se puede proporcionar con un poco más de detalle.

  • Cuando la frecuencia (Freq) es alta pero la frecuencia DBSchema (DBSchema_Freq) es baja
    • La palabra aparece de forma intensiva solo en un DB-Schema específico
  • Cuando tanto la frecuencia (Freq) como la frecuencia DBSchema (DBSchema_Freq) son altas
    • La palabra se distribuye uniformemente en todo el DB-Schema
  • Cuando la frecuencia (Freq) es baja pero la frecuencia DBSchema (DBSchema_Freq) es relativamente alta
    • La palabra se revisa para su inclusión en lugar de su exclusión en los candidatos a palabras canónicas.

2. Cambios en el código fuente

Hay cambios en tres funciones.

2.1. Cambió la función get_db_comment_text

Agregue la línea 343: cree una columna DBSchema en la variable del marco de datos df_text que contenga el resultado de la extracción de texto y cree un valor.

    df_text['DBSchema'] = df_text['DB'] + '.' + df_text['Schema']  # DB.Schema 값 생성(2023-02-19)

2.2. Cambiar la función get_word_list

Agregue la línea 104, 111: agregue el valor DBSchema al marco de datos de resultados de extracción de palabras

            if len(words) >= 1:
                # print(nouns, text)
                for word in words:
                    # print(noun, '\t', text)
                    if not is_db:
                        # sr_text = Series([file_name, file_type, page, text, word],
                        #                  index=['FileName', 'FileType', 'Page', 'Text', 'Word'])
                        df_word = DataFrame(
                            {'FileName': [file_name], 'FileType': [file_type], 'Page': [page], 'Text': [text],
                             'Word': [word], 'Source': [source]})
                    elif is_db_table:
                        # sr_text = Series([file_name, file_type, page, text, word, db, schema, table],
                        #                  index=['FileName', 'FileType', 'Page', 'Text', 'Word', 'DB', 'Schema', 'Table'])
                        df_word = DataFrame(
                            {'FileName': [file_name], 'FileType': [file_type], 'Page': [page], 'Text': [text],
                             'Word': [word], 'DB': [db], 'Schema': [schema], 'Table': [table “” not found /]
, 'Source': [source], 'DBSchema': [db_schema]}) elif is_db_column: # sr_text = Series([file_name, file_type, page, text, word, db, schema, table, column], # index=['FileName', 'FileType', 'Page', 'Text', 'Word', 'DB', 'Schema', 'Table', 'Column']) df_word = DataFrame( {'FileName': [file_name], 'FileType': [file_type], 'Page': [page], 'Text': [text], 'Word': [word], 'DB': [db], 'Schema': [schema], 'Table': [table “” not found /]
, 'Column': [column], 'Source': [source], 'DBSchema': [db_schema]})

2.3. cambiar la función principal

2.3.1. Contenido de la función principal antes del cambio

    # df_group = pd.DataFrame(df_result.groupby(by='Word').size().sort_values(ascending=False))
    df_result_subset = df_result[['Word', 'Source']]  # 빈도수를 구하기 위해 필요한 column만 추출
    # df_group = df_result_subset.groupby(by='Word').agg(['count', lambda x: list(x)])
    df_group = df_result_subset.groupby(by='Word').agg(['count', lambda x: '\n'.join(list(x)[:10])])
    df_group.index.name = 'Word'  # index명 재지정
    df_group.columns = ['Freq', 'Source']  # column명 재지정

2.3.2. Contenido de la función principal después del cambio

    df_group = df_result.groupby('Word').agg({
        'Word': 'count',
        'Source': lambda x: '\n'.join(list(x)[:10]),
        'DBSchema': 'nunique'
    }).rename(columns={
        'Word': 'Freq',
        'Source': 'Source',
        'DBSchema': 'DBSchema_Freq'
    })

Este código agrupa word (palabra) en df_result, que es una variable de marco de datos como resultado de la extracción de palabras (groupby), obtiene el número (núnico) de valores DBSchema con los duplicados eliminados y nombra el elemento como DBSchema_Freq.

Como referencia, este código es el código de prueba que escribí. ChatGPTEste es el código que se le entregó y solicitó para su simplificación. Antes de la simplificación, era un código complejo que se dividía en dos marcos de datos, aplicaba lambda y nunique a cada uno y luego los fusionaba de nuevo en uno. recientemente ChatGPT admirando la habilidad

2.4. Los detalles completos del código fuente cambiaron en v0.41

Puede consultar los detalles de los cambios en el enlace de github a continuación.

https://github.com/DAToolset/ToolsForDataStandard/commit/b4b241b87f8cbf702087a33ad76302535640cf37?diff=split

v0.41에서 달라진 소스코드 내용
El contenido del código fuente cambió en v0.41

3. Descargue y ejecute la Herramienta de extracción de Word (v0.41)

Puede consultar el archivo word_extractor.py modificado en el siguiente enlace.

ToolsForDataStandard/word_extractor.py en el principal DAToolset/ToolsForDataStandard (github.com)

El método de ejecución es el mismo que en v0.40. Consulte la información a continuación.


La herramienta de extracción de palabras v0.41 no está bien probada y puede introducir errores o fallas. Por favor, deje cualquier error, error, consulta, etc. en los comentarios.

3 Respuestas

  1. foto de avatar 김기영 dice:

    ¡hola!

    Cuando se utiliza el método de extracción de palabras de un archivo sin un comentario DB, que es uno de los tres métodos de ejecución
    (python word_extractor.py –in_path .\in –out_path .\out)

    txt, palabra, ppt todo

    miniconda3\envs\wordextr\lib\site-packages\pandas\core\apply.py”, línea 601, en normalize_dictlike_arg raise KeyError(f”La(s) columna(s) {cols_sorted} no existen”)

    KeyError: "La(s) columna(s) ['DBSchema'] no existen"

    Está saliendo con un error.

    Los métodos de ejecución 2 y 3, donde se ingresa el archivo de comentarios de la base de datos, funcionan sin errores.

    Puse 'DBSchema': [db_schema] en la línea 97, pero esta vez

    En get_grouper, aumente KeyError (gpr) KeyError: se muestra el error 'Word'.

    gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol