Red de conocimiento informático - Aprendizaje de programación - Explicación detallada del participio Jieba

Explicación detallada del participio Jieba

"jieba" es un componente de segmentación de palabras chinas de Python, consulte /fxsjy/jieba

Puede implementar funciones de texto chino como segmentación de palabras, etiquetado de partes del discurso y extracción de palabras clave. , etc., y admite diccionarios personalizados.

4. HMM, TextRank, TF-IDF y otros algoritmos involucrados en la segmentación de palabras de jieba

Puede usar pip directamente para instalar:

sudo pip install jieba

p>

O.

sudo pip3 install jieba

Existen dos algoritmos para la extracción de palabras clave, basados ​​en TF-IDF y basados ​​en TextRank:

jieba tiene tres modos diferentes de segmentación de palabras: modo preciso, modo completo y modo motor de búsqueda:

correspondiente. Las funciones con el prefijo l son funciones que obtienen resultados de lista:

El modo exacto es el método más común, el modo completo enumera todas las palabras posibles en una oración y el modo de motor de búsqueda es adecuado para que lo utilicen los motores de búsqueda. Las diferencias específicas se pueden detallar en el análisis del flujo de trabajo en la siguiente sección.

En cada una de las funciones anteriores, existe un parámetro llamado HMM. Este término indica si se debe utilizar HMM para descubrir nuevas palabras durante la segmentación. En el apéndice de este artículo se proporciona una breve introducción a HMM.

Además, la segmentación de palabras admite diccionarios personalizados. El formato del diccionario es el mismo que dict.txt. Una palabra ocupa una línea; cada línea se divide en tres partes: palabra, frecuencia de palabra (se puede omitir). y parte del discurso (se puede omitir), con espacios separados y el orden no se puede invertir.

Uso específico:

Los parámetros completos de las dos funciones extraídas por palabras clave son:

Puede activar o desactivar el paralelismo a través de

Función de segmentación de palabras.

Personalmente no creo que puedas usarlo en general. Para archivos grandes, debe implementar manualmente el paralelismo multiproceso y no es necesario usarlo para la segmentación de oraciones.

La segmentación de palabras de Jieba utiliza principalmente la segmentación de diccionario y el etiquetado de partes del discurso, los cuales utilizan el mismo diccionario. Debido a esto, la calidad de los resultados dependerá en gran medida del diccionario, a pesar del uso de HMM a la hora de descubrir nuevas palabras.

El flujo de trabajo general del paquete de software jieba se muestra en la siguiente figura:

El flujo de trabajo de cada módulo se analizará en detalle en función del código fuente.

En las siguientes secciones, mostramos resultados de muestra o formatos de archivo de diccionario de muestra para los pasos clave en cuadros azules. En este apartado ambos se comportan de forma similar.

En la desambiguación de Jerba, el primer paso es generar un gráfico acíclico dirigido de la oración según el diccionario, y luego interceptar la oración después de encontrar el camino más corto según el diccionario, o interceptar directamente la oración según al modo seleccionado. Para palabras no ingresadas (palabras que no están en el diccionario), HMM se utiliza para descubrir nuevas palabras.

El formato del diccionario debe ser

palabra1 frecuencia1 palabra_tipo1

palabra2 frecuencia2 palabra_tipo2

...

donde tipo_palabra se puede omitir en los diccionarios de usuario personalizados.

Los diccionarios también se pueden utilizar en otros módulos del proceso. Para facilitar la descripción, la parte de inicialización del diccionario se omitirá en los diagramas de flujo posteriores.

La figura b muestra el flujo de trabajo del modo de motor de búsqueda, que vuelve a segmentar palabras largas basándose en una segmentación de modo precisa.

Se supone que el lector ya conoce HMM. De lo contrario, lea la sección HMM del siguiente capítulo o omita esta sección.

En la segmentación JB, las posiciones B, M, E y S en las palabras se consideran estados ocultos, mientras que las palabras son estados observados y se utiliza un archivo de diccionario para almacenar la matriz de probabilidad de rendimiento (finalseg/prob_emit .py ), vector de probabilidad inicial (finalseg/prob_start.py) y matriz de probabilidad de transición entre palabras (finalseg/prob_trans.py). Este es un problema de decodificación estándar, que se basa en probabilidades y luego utiliza el algoritmo de Viterbi para encontrar el estado oculto más grande posible.

La parte de análisis léxico utiliza el mismo léxico básico que el módulo de segmentación. Para las palabras que forman parte del discurso, los atributos léxicos se extraerán directamente del diccionario, pero para las palabras nuevas, la parte de análisis léxico tiene. un módulo dedicado para descubrir nuevas palabras y sus propiedades léxicas.

El modelo HMM para el etiquetado de partes del discurso es similar al modelo HMM para la segmentación de partes del discurso. También trata la secuencia de texto como un estado visible, pero el estado oculto ya no es el. posición de la palabra (B/E/M/ S), sino una combinación de la posición de la palabra y parte del discurso, como (B, v) (B, n) (S, n), etc. Por lo tanto, su vector de probabilidad inicial, su matriz de probabilidad de transición y su matriz de probabilidad de desempeño son mucho más grandes que los utilizados en la sección anterior, pero sus propiedades y pasos operativos siguen siendo los mismos.

El flujo de trabajo específico es el siguiente.

En jieba, existen dos algoritmos diferentes de extracción de palabras clave: TextRank y TF-IDF. El proceso de implementación es relativamente simple y el núcleo radica en el algoritmo mismo. El siguiente es un diagrama esquemático simple del proceso de implementación. Para algoritmos específicos, consulte el siguiente capítulo.

El método TextRank filtra parte del discurso de forma predeterminada, mientras que el modelo del método TF-IDF no filtra parte del discurso.

En este capítulo, presentaremos brevemente algoritmos relacionados, incluido el modelo oculto de Markov y el algoritmo de Viterbi para descubrir nuevas palabras, y los algoritmos TextRank y TF-IDF para extraer palabras clave. Algoritmo IDF para extraer palabras clave.

HMM o Modelo Oculto de Markov es un modelo estadístico basado en supuestos de Markov. Se dice que está "oculto" porque, en comparación con un proceso de Markov, los parámetros de un HMM son desconocidos. En el mundo, lo que se puede ver suele ser la apariencia, y el verdadero estado de las cosas a menudo está oculto en la apariencia y tiene una cierta relación con la apariencia.

Entre ellos, S y O representan la secuencia de estado y la secuencia de observación respectivamente.

Si todavía tiene preguntas sobre el contenido de esta sección, continúe leyendo, usaremos un ejemplo simple para ilustrar el HMM y el algoritmo de decodificación, y luego discutiremos estas ecuaciones después de la siguiente sección, tal vez usted entender .

Usemos un ejemplo simple para ilustrar:

Supongamos que Xiao Ming tiene un internauta llamado Xiao Hong. Ella explicará lo que hizo hoy en su círculo de amigos todos los días y asumirá. que a ella solo le afectan los comentarios de ese día. El clima se ve afectado por el clima, y ​​el clima del día solo se ve afectado por el clima del día anterior.

Para Xiao Ming, lo que Xiao Hong hace todos los días es el estado visible, y las condiciones climáticas donde se encuentra Xiao Hong son el estado oculto, lo que constituye un modelo HMM. Un modelo HMM requiere cinco elementos: conjunto de estados ocultos, conjunto de observación, probabilidad de transición, probabilidad de observación y probabilidad de estado inicial.

Es decir, en el j-ésimo estado oculto, la probabilidad de mostrar el i-ésimo estado de rendimiento. n y m en la fórmula representan el número de conjuntos de estados ocultos y conjuntos de observación.

En este ejemplo, las probabilidades de que Xiaohong haga diferentes cosas en diferentes condiciones climáticas son diferentes. Las probabilidades de observación se presentan en forma de tabla de la siguiente manera:

donde

Además, también se necesita un vector de probabilidad del estado inicial π, que representa el valor de probabilidad del estado oculto al comienzo de la observación (es decir, cuando t=0).

En este punto, se ha definido un modelo de Markov oculto completo.

HMM generalmente consta de tres tipos de problemas:

Problema de cálculo de probabilidad, es decir, dadas A, B, π y la secuencia de estados ocultos, calcula la probabilidad de la secuencia de observación <; /p>

Problema de predicción, también conocido como problema de decodificación. A, B, π y la secuencia de observación, encuentre la mejor secuencia de estados correspondiente posible;

Problema de aprendizaje, se conoce la secuencia de observación, estime los parámetros A, B, π del modelo, de modo que la observación secuencia bajo el modelo La probabilidad es la mayor, es decir, se utiliza el método de estimación de máxima verosimilitud para estimar los parámetros.

El problema de decodificación se usa en la partición jieba, por lo que el problema de predicción y el problema de aprendizaje no se discutirán en profundidad aquí. En la siguiente sección, tomaremos el ejemplo de esta sección como ejemplo para continuar. para resolver el problema de decodificación.

En la segmentación de palabras de Jieba, HMM se utiliza para descubrir nuevas palabras. Representa cada palabra como B/M/E/S, que representan respectivamente la aparición del principio, el medio y el final de la palabra. la aparición de la palabra. Utilice B/M/E/S como estado oculto de HMM y utilice palabras individuales continuas como estado de observación. Su tarea es utilizar el estado de observación para predecir el estado oculto y las probabilidades de A, B y π. Los modelos se han proporcionado en el documento, por lo que este es un problema de decodificación estándar. El algoritmo de Viterbi se utiliza para resolver la desambiguación de jieba.

La idea básica del algoritmo de Viterbi es: si el mejor camino pasa por un punto, entonces el camino desde el punto de partida hasta el punto debe ser el camino más corto; de lo contrario, reemplácelo con un camino más corto. desde el punto inicial hasta el punto A, obtendrá un camino más corto, lo que obviamente es una contradicción, el camino desde el punto inicial hasta el punto final debe pasar por el enésimo momento. Entonces el camino final debe pasar por el camino desde el punto de partida hasta el enésimo momento. Los puntos de camino más cortos de k estados en momentos de tiempo.

En el estado oculto i en el momento t, el valor máximo de todas las posibles rutas de transición de estado de i1 a i2 se expresa como

Continuemos usando el ejemplo de la sección anterior para Ilustre el algoritmo de Viterbi:

Xiao Ming no sabe de dónde viene Xiao Hong. Solo puede inferir el clima basándose en las actividades diarias de Xiao Hong.

Suponiendo que las actividades de Xiaohong durante tres días consecutivos sean "dormir, jugar, ir de compras", calcularemos las condiciones climáticas más probables en base a esto.

La probabilidad de lluvia el primer día maximiza la probabilidad de un día soleado el segundo día (es decir, si el segundo día es soleado en el camino más corto, entonces el primer día es lluvioso en el camino más corto, ver Viterbi arriba La idea básica del algoritmo)

En este punto, hemos llegado al momento final y comenzaremos a retroceder.

A continuación se muestra un diagrama del proceso.

) ruta.

TF-IDF (Term Frequency-Inverse Text Frequency) es un método estadístico utilizado para evaluar la importancia de las palabras en un documento. La idea central es que si una palabra aparece con frecuencia (es decir, TF) en un texto pero rara vez aparece en otros documentos, se considera que la palabra tiene una buena capacidad de discriminación de categorías.

Entre ellos:

TextRank es un algoritmo para la extracción de palabras clave. Dado que se basa en PageRank, PageRank se introduce primero.

El PageRank determina la clasificación de las páginas web a través de relaciones de hipervínculos en Internet. Su fórmula está diseñada a través de una idea de encuesta: si calculamos el valor de PageRank de la página web A, entonces necesitamos saber qué página web enlaza. Cuando se trata de A, primero obtenemos el enlace entrante de A y luego votamos por la página web A a través del enlace entrante, calculando así el valor PR de A. La fórmula de cálculo es la siguiente:

En la fórmula:

d es el coeficiente de amortiguación, con un valor de 0-1, que representa la probabilidad de apuntar desde un determinado punto a cualquier otro punto, y el valor general es 0,85.

La fórmula anterior se ejecutará varias veces hasta que los resultados converjan.

El algoritmo TextRank se basa en la idea de PageRank, que utiliza un mecanismo de votación para clasificar componentes importantes del texto. Si dos palabras aparecen al mismo tiempo en una ventana de tamaño fijo, se considera que están relacionadas.

La fórmula de cálculo es básicamente la misma que la del PageRank. Iterar varias veces hasta la convergencia.

En la segmentación de palabras jieba, TextRank establece el tamaño de la ventana de palabras en 5 y utiliza los resultados de 10 iteraciones de la Fórmula 1 como resultado del peso final, sin necesariamente iterar hasta la convergencia.