La historia completa la mayor parte de los algoritmos y herramientas de segmentación introducida

Palabra (Word La tokenización) , también conocido como la segmentación de palabra, es decir, alguna forma de identificar las palabras individuales en la frase y separados, de modo que el texto de la "secuencia de palabras de código" está representado actualizado "secuencia palabra" FIG. tecnología de segmentación no es sólo para los chinos, por Inglés, japonés, coreano y otros idiomas también son aplicables.

Aunque no es una palabra natural de separadores (espacios), pero a menudo las palabras y signos de puntuación viscosa otros casos, como "Hola, ¿cómo estás." Inglés es "Hola" y "usted" se requiere y puntos de puntuación detrás apartado

directorio

  • ¿Por qué la palabra?
  • Podría independientemente palabra?
  • Dificultades chinos de la palabra?
  • algoritmo de segmentación desde la antigüedad: el diccionario de la formación previa
  • Desde el exterior de las herramientas de segmentación

¿Por qué la palabra?

Para los chinos, por no decir palabra, entonces la red neuronal se basa directamente en el original secuencia de caracteres chinos para el procesamiento y el aprendizaje. Sin embargo, sabemos que el significado de una palabra puede ser muy diferente en diferentes palabras, el medio como "ja" y "ronca" "Ha" significa algo muy distinto del modelo durante la fase de entrenamiento, si no se ve "ronca", entonces el tiempo previsto es posible que la frase "ronca", donde la expresión alegre ambiente en el ╮ (¯ ▽ ¯ "") ╭

Obviamente, para resolver el problema anterior, la palabra es que, después de la palabra, la unidad más pequeña de entrada ya no es la palabra, pero la palabra, como "ja" y "ronca" son dos palabras diferentes, no habría naturales amigos frente a este problema. De ello se desprende que la palabra a aliviar el problema de la "palabra ambigüedad" .

Además, la característica (característica) con la tarea de perspectiva NLP, en comparación palabra por palabra, es más primitivo y características de bajo nivel, a menudo asociados con los objetivos de la misión es relativamente pequeña, pero para el nivel de la palabra, a menudo con se puede producir una fuerte correlación objetivos de la misión. Por ejemplo, para la tarea de clasificación sentimiento, "voy mierda hoy" frase en cada palabra no está relacionada con una relación emocional positiva, incluso "perro", la palabra es también a menudo estrechamente vinculado con las emociones negativas, pero "mierda" la palabra ha expresado su "suerte", "feliz" y positivo "sorpresa" afectan, por lo tanto, la segmentación puede ser visto como el modelo para proporcionar más alto nivel, la característica más directa, el modelo arrojó más fácilmente disponible naturales un buen rendimiento.

Podría independientemente palabra?

La respuesta es, por supuesto. El propósito puede ser visto desde la parte delantera de la palabra, siempre y cuando los propios modelos pueden aprender la ambigüedad de la palabra, y la palabra que aprendió de las palabras de la ley, entonces es equivalente a la implícita construido una palabra en el modelo interno , esta vez esta integrado palabra es parte de la solución a los objetivos y las tareas de la red en conjunto "fin a la formación final", por lo que puede obtener un rendimiento aún mejor.

Sin embargo, esto se puede ver a partir de la descripción anterior, para satisfacer esta condición, es muy raro. Esto requiere una formación corpus es muy rica, y el modelo es lo suficientemente grande (puede haber una capacidad adicional para construir un modelo de segmentación implícita), podemos estar más de "modelo de palabra + a nivel de palabra es" un mejor rendimiento. Esta es la razón por BERT y otro modelo de pre-entrenamiento grande es a menudo el nivel de palabra, todo ello sin el uso de separador de palabras.

Además, la palabra no puede hacer ningún daño a , una vez que la precisión de la palabra no es suficiente, en sí mismo es ruidoso o corpus (errata frase más desordenado, varios idiomas no estándar), entonces la palabra se verá obligado facilidad Esto hace que el modelo más difícil de aprender. Por ejemplo, el modelo finalmente aprendido a "husky" es la palabra, sino que se los Huskies golpeó en la "almeja solitario", el canal de resultado no se reconoce, se divide en la "almeja", "Bachelor" y "sorprendente" estas tres palabras por lo que hemos entrenado este "modelo de nivel de palabra" no puede ver "ronca" un (después de todo modelo de formación cuando el "ronca" es la unidad básica).

Dificultades chinos de la palabra?

1 La ambigüedad

En primer lugar, la palabra antes mencionado puede aliviar el problema de la "palabra ambigüedad", pero la palabra misma se enfrentará a la "ambigüedad segmentación" del problema. Por ejemplo, dividir el título de "Radio France hacer la investigación"

 

v2-a5d8d3c1924a631d6bae5793b9f27338_b.jpg

Aunque cortado en "Radio / Francia / do / estudio" no se ve mal, pero teniendo en cuenta que se trata de un título, es claramente solución positiva "Radio France / país / investigación" en la palabra es demasiado sur de la (. ︿. ) y si no te dicen que esto es un título, al parecer dos tipos de patrones segmentados ven ningún problema.

2 problema palabra desconocida

Además, el diccionario chino también está avanzando con los tiempos, como "prado verde", "sentirse cansado no amo" y otra palabra aquí hace 10 años no es la formación palabra de hoy también se encontrarán en un futuro próximo no se sabe palabra (es decir, "palabra desconocida" , fuera-de-vocabulario palabra), que el tiempo es fácil, porque la palabra es "obsoleta" y aparece el error de segmentación.

3 Normalización

Por último, el límite de segmentación cuando una palabra se ha establecido ninguna norma. A pesar de la promulgación de la "palabra moderna de procesamiento de información de texto estándar chino" en 1992, el país, pero esta especificación es fácilmente influenciable por factores subjetivos, pero también se encuentran con problemas, inevitablemente, algo menos en la escena real.

algoritmos artículos

1 Basado diccionario

Para el problema de la palabra china, el algoritmo más simple se basa diccionarios directamente partido codicioso .

Por ejemplo, podemos empezar a buscar una palabra directamente desde el comienzo de la primera frase, la palabra más larga en el diccionario para averiguar al principio de la palabra, y luego obtuvo su primera buena segmentación de palabras. Por ejemplo, la frase "pequeña Xi Yao estaba hablando PNL", el diccionario se encontró "pequeño Yao Xi" es la palabra más larga, así que consiga

Xi Yao pequeña / estamos hablando de la PNL

A continuación, reanuda la búsqueda de diccionario desde el principio de la palabra siguiente, se encontró que el "ser" es la palabra más larga, por lo

Pequeño Xi Yao / en / hablar PNL

Y así sucesivamente, finalmente, obtener

Pequeño Xi Yao / en / hablar / PNL

Este sencillo algoritmo es el máximo hacia adelante a juego (FMM)

Aunque el enfoque es muy simple, pero el nombre suena un poco alto ╮ (╯ ▽ ╰) ╭

Sin embargo, debido a la propia frase china tiene las características de un conjunto importante de información, desde la parte de atrás para que coincida con la velocidad correcta segmentación tiende a ser más alta que de adelante hacia atrás , por lo que habrá un reverso de la " coincidencia máxima hacia atrás (BMM) ." Por supuesto, tanto la FMM o BMM, están seguro que hay muchos errores de segmentación, por lo tanto, teniendo en cuenta un enfoque más reflexivo es "el mayor partido de dos vías" .

algoritmo de coincidencia máxima Bi-direccional se refiere al tratamiento de las oraciones en rodajas y el uso de FMM fueron RMM palabra por separado, y luego segmentación resultados no coinciden frases ambiguas para su posterior procesamiento. Por lo general, se puede comparar con el número de palabras de los dos métodos, para tomar las medidas adecuadas de conformidad con el mismo número o no, con el fin de reducir la tasa de error de palabra es frases ambiguas.

2 Sobre la base de las estadísticas

2.1 modelo de lenguaje basado

método basado en diccionario es simple, pero, obviamente, puede verlo también! no! Chi! Puede! Arriba! Ligeramente oraciones más complejas, tales como "bien, Eve pequeña Yao cocina casera.", Si se usa en este tiempo al máximo coincidente, se cortarán en "bien /, / adición / Xi Yao pequeña / home / cocinar /. "esto es claramente erróneo es imperdonable.

Tales errores es la causa fundamental es que el método es el diccionario basado en el tiempo no tiene en cuenta el contexto en el que las palabras de la corte, no proceden de la apariencia general de la solución óptima . De hecho, esta frase no es más que lo anterior dos tipos de segmentación de formas enredadas:

a. No importa /, / división / Xi Yao pequeña / home / cocinar /.
b. No importa /, / noche de Año Nuevo / pequeño Yao / home / cocinar /.

Hablamos todos los días en muy poca gente decir "no importa /, / división / xxxx / cocinar /." Esta frase, mientras que la frecuencia de ocurrencia de la segunda oración será muy alto, como el interior de la "pequeña Yao" puede ser reemplazado en "I", "Faraón" y así sucesivamente. Obviamente Dada una frase, una variedad de segmentación es un número limitado de combinaciones, si hay una cosa que puede determinar la existencia de cualquier valor razonable de una cartera, no es encontrar la mejor combinación de cosas palabra!

Por lo tanto, la esencia de este enfoque es encontrar la combinación más razonable de combinaciones de palabras en diversos corte , este proceso puede ser visto como encontrar un camino en la mayor probabilidad de la figura segmentación de palabras :

 

v2-cc1049256def5b8d1cbcaa9ea3b78c3f_b.jpg

Y esto puede ser no es una cosa razonable secuencia de palabras de puntuación que se llama "modelo de lenguaje" (modelo de lenguaje) . Este uso de un modelo de lenguaje para evaluar método de segmentación varias combinaciones no es mucho más atractivo que es un ╮ (╯ ▽ ╰) ╭ después de una palabra dada en una secuencia de palabras Frase obtenido {w1, w2 ... wm}, inteligente modelo de lenguaje frase puede calcular la posibilidad (o secuencia de retórica) está presente:

Esta expresión puede ser obtenido por la regla de la cadena se expanden:

 

v2-8d5813bc2ba423436bb0dda718e309b0_b.png

Claramente, cuando m es un valor grande ligeramente por detrás de varios cadena de multiplicación se hace muy difícil de calcular (estimación de la probabilidad de que estos elementos necesitan depender de muy grandes corpus para garantizar error de estimación aceptable). Difícil de calcular cómo hacerlo? Por supuesto, una suposición razonable para simplificar el cálculo , se puede asumir la posición actual tal que toma depende de qué palabra sólo n posiciones adyacentes a la parte delantera, es decir,

 

v2-be3d1226dffab7d59f39c9fbeb2ef2ab_b.png

Este modelo de lenguaje simplificado se denomina modelo de lenguaje n-grama . Tal multiplicación de cada multiplicador en la cadena que se ha completado se puede calcular marcados manualmente minutos palabras compuestas para obtenerlo. Por supuesto, en el cálculo real también puede introducir algunas técnicas de suavizado para compensar los puntos de error estimado debido al tamaño limitado del material palabras, no empezar a hablar de aquí.

2.2 basado en el aprendizaje automático estadístico

La PNL es una fuerte unión con el aprendizaje de máquina de la disciplina, problemas de palabras no es una excepción. Palabra china también puede ser modelado como una " secuencia etiquetada como " problema, que es una consideración contexto palabra Clasificación. Por lo tanto, el material primero puede ser entrenado por un modelo de etiquetado secuencia de puntos palabras en la categoría, a continuación, este modelo no marcado palabra corpus.

muestras de las etiquetas

Por lo general se utiliza {B: comenzar, M: media , E: extremo, S: individuales} cuatro categorías para describir una categoría de cada palabra en la muestra palabra pertenece. Ellos representan la posición de la palabra en la palabra. En donde, B es la palabra que representa la palabra principio de las palabras, M para una palabra en la palabra intermedia, E es la palabra final representativo de la palabra, S representa una palabra en palabras.

Una muestra se muestra a continuación:

Al / b son / e menudo / s dijeron / s / b prima Live / e es / s a ​​/ s unidad / s de aprendizaje / b Branch / m libro / e

Entonces podemos aplicar directamente el modelo de aprendizaje automático estadístico para entrenar a un grupo de amigos separador de palabras. - modelo estadístico es representativa de la secuencia es representar la fórmula etiquetado modelo representativo de un modelo oculto de Markov (HMM), y el modelo discriminante - (cadenas lineales) Condicional Random Fields (de CRF) . Estos dos modelos han sido muy familiarizado con los socios pequeños se pueden saltar.

Modelos ocultos de Markov (HMM)

Ver para más detalles sobre HMM

" Si estás en el amor con el pequeño Xi Yao ... (en )" / "abajo"

Después de la comprensión de los conceptos básicos sobre la HMM, HMM modelo que tener en cuenta es la forma de palabra que ~ ideas básicas: el problema de la palabra en cuestión la clasificación para cada posición de la palabra, ese problema etiquetado secuencia. En el que hay cuatro categorías (mencionados en frente de B, M, E, S). Después de todo la posición clasificada a completa, será capaz de obtener la secuencia clase de palabras de acuerdo a los resultados de la misma.

Para la castaña!

Nuestra entrada es una frase:

        小Q硕士毕业于中国科学院
      

Por el algoritmo, hemos predicho con éxito palabra etiquetar cada palabra que corresponde a un poco:

        BEBEBMEBEBME
      

De acuerdo con la secuencia de estados podemos cortar palabras:

        BE/BE/BME/BE/BME
      

Así palabra segmentación resultados son los siguientes:

        小Q/硕士/毕业于/中国/科学院
      

Así que la pregunta de nuevo, si un modelo perfecto de la palabra HMM para usted, entonces cómo utilizar este modelo para la secuencia de caracteres secuencia de entrada se marca? Primer vistazo a dos conceptos fundamentales HMM modelos: la secuencia de observación y la secuencia de estados.

secuencia de observación es que puedo ver directamente el secuencia, o "Maestro de pequeña Q se graduó de la Academia de Ciencias de China," la secuencia de palabras, y la secuencia es la secuencia de estado interno no puede directamente observables a simple vista, que está por encima de la frase correspondiente los resultados marcados "BEBEBMEBEBME", y nuestro modelo HMM, puede ayudarnos a partir de la secuencia observada -> convertido secuencia de estados precioso!

Resumen expresarse matemáticamente como sigue: La \ Lambda = \ lambda_1 \ lambda_2 ... \ lambda_nfrase representa la entrada, n es un longitud de la oración, \ lambda_idenota una palabra, o = o_1o_2 ... o_netiqueta que representa la salida, entonces la salida es el ideal:

 

v2-c7087bbc6d6887f3730ea1bd682287bd_b.png

 

3 basado en red neuronal

es conocido, ha tenido éxito en la ocupación de la PNL aprendizaje profundo, PNL barrió la clasificación de la anotación de secuencias y generar problemas. Como se mencionó anteriormente, la palabra puede ser modelado como un problema de etiquetado secuencia, tan bueno en el procesamiento de datos de la secuencia LSTM (cuando la longitud de la red de la memoria) y el Super fuego modelo de pre-entrenamiento más cercana también se pueden utilizar para la palabra china.

3.1 En base (Bi-) LSTM

LSTM que no están familiarizados con el modelo de un socio pequeño para ver previamente escribió esta pequeña velada de "El paso a la LSTM PASO A" , la teoría básica de este lstm papel no repetirla.

Como se describe en lo que antecede, un modelo de lenguaje, información de contexto es importante en el alivio de la ambigüedad segmentación de palabras, el más largo es el contexto para ser considerado, mayor es la capacidad de resolver naturaleza ambigua . La parte frontal del modelo de lenguaje n-grama sólo se puede hacer una cierta distancia teniendo en cuenta el contexto, entonces no hay ningún modelo de segmentación puede considerarse infinita distancia del contexto en el que la teoría? La respuesta se basa en LSTM hacer. Por supuesto, LSTM son direccionales , tanto a tener en cuenta toda la información histórica (todas las palabras a la izquierda) con el fin de permitir la clasificación de cada posición de la palabra cuando, sino también en cuenta el futuro de toda la información (toda la palabra correcta), podemos utilizar dos vías LSTM (Bi-LSTM) para actuar como una secuencia modelo de esqueleto anotado como

 

v2-870d31eae4b629a3d9ce92719ed9fa90_b.jpg

Después de la terminación LSTM información de contexto codificado para cada posición, cada posición para la terminación final de la clasificación por la capa de clasificación softmax, con lo que se completa con CRF y la segmentación de HMM basado en la secuencia como se indica en chino.

3.2 modelo de pre-entrenamiento basado en el conocimiento de destilación +

Hace poco más de un año, Epi, Blas, XLNet pre-formación y otras grandes barrido la mayor parte del campo de la PNL, en problemas de palabras también tienen ventajas significativas.

 

v2-34a39e7e1d7a13966784668340ff2b5b_b.jpg

Sin embargo, es bien sabido que el modelo de pre-formación es demasiado grande un consumo excesivo de los recursos informáticos, si se desea llevar a cabo la palabra de texto en masa, incluso si el gasto de tarjetas 8 32G Tesla V100 se parecía ser inadecuada, por lo que una solución es que el modelo de pre-formación la palabra conocimiento a través de destilación conocimiento (destilación conocimiento) para migrar a los modelos pequeños (tales como LSTM, GRU) en. Recientemente Jieba palabra está en la última línea del modelo de segmentación avanzada para su uso como una obtenida de esta manera (en realidad un modelo de análisis léxico común), socio menor puede ser interesado en averiguar por su cuenta. modelo de datos y la validez de la formación de destilación mucho conocimiento, no se repiten aquí.

 

Herramientas artículos

La siguiente columna de algunas de las herramientas más habituales de segmentación (en orden alfabético, todos a tratar), papel relacionado en su número de suscripción "vender Meng Yao Xi pequeña casa" respuesta backstage [Chino] palabra de recepción .

1 Jieba

Cuando se trata de la palabra herramienta primer pensamiento es, sin duda conocido "tartamudeo" palabra china, el algoritmo principal se basa en el camino más corto se mencionó anteriormente palabra gráfica segmentación estadística, también recientemente construyó un Baidu modelo de pre-entrenamiento a gran escala mosca propulsor + vanguardia de modelo de segmentación destilada.

github proyecto Dirección: https://github.com/fxsjy/jieba

 

2 THULAC (JUE Analizador Léxico para el chino)

Procesamiento del Lenguaje Lab lanzó por el desarrollo de Tsinghua cálculo natural y social y humano de un conjunto de herramientas de análisis léxico chino, la segmentación de palabras chino y función de etiquetado POS. El modelo de herramienta de segmentación empleado fue un perceptrón estructurado. Para más detalles, consulte algoritmo proyecto github y leer el original en papel.

github proyecto Dirección: https://github.com/thunlp/THULAC

Documentos de Enlace: https://www.mitpressjournals.org/doi/pdf/10.1162/coli.2009.35.4.35403

Ejemplo de uso:

#THULAC
#pip install thulac
import thulac

sentence = "不会讲课的程序员不是一名好的算法工程师"
thu1 = thulac.thulac(seg_only=True)  #只分词
text = thu1.cut(sentence, text=True)  #进行一句话分词
print("THULAC: " + text)

#output
#Model loaded succeed
#THULAC: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程师

 

Palabra de sistema 3-NLPIR ICTCLAS china

Masiva de procesamiento de información de la lengua y la nube de computación de Beijing Instituto de Tecnología de Ingeniería Centro de Investigación de Búsqueda de Datos y Minería Laboratorio de liberación (Big Data Search y Minería Lab.BDSM@BIT). HMM se basa en el nivel de sub-tesauro, la palabra, POS, NER se incorporan en el marco de un nivel de formación conjunta HMM get.

Inicio: http://ictclas.nlpir.org/github

Dirección del proyecto: https://github.com/tsroten/pynlpir

Ejemplo de uso:

#NLPIR-ICTCLAS
#pip install pynlpir
import pynlpir

sentence = "不会讲课的程序员不是一名好的算法工程师"
pynlpir.open()
tokens = [x[0] for x in pynlpir.segment(sentence)]
print("NLPIR-TCTCLAS: " + " ".join(tokens))
pynlpir.close()

#output
#NLPIR-TCTCLAS: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程

 

4 LTP

HIT producido, como THULAC, LTP también se basa en la estructura de Perceptron (Structured Perceptron, SP), modelo de segmentación para estudiar las pautas de máxima entropía.

Proyecto Inicio: https://www.ltp-cloud.com/github

Dirección del proyecto: https://github.com/HIT-SCIR/ltp

Documentos de Enlace: http://jcip.cipsc.org.cn/CN/abstract/abstract1579.shtml

Ejemplo de uso: es necesario descargar el modelo de segmentación (antes de su uso http://ltp.ai/download.html )

      
 

5 HanLP

HanLP es con el "Procesamiento del Lenguaje Natural Getting Started" serie de la biblioteca de soporte algoritmos de PNL de código abierto. Además de la clásica fuera de la versión 1.x iteración constante actualización, este año también se lanzó una nueva versión 2.0. 1.x versiones tienen un diccionario de palabras y herramientas modelo de segmentación de palabras basado en el CRF. La versión 2.0 de la herramienta de segmentación de código abierto basado en el algoritmo de aprendizaje profundidad.

versión 1.x

github proyecto Dirección: https://github.com/hankcs/pyhanlp

versión 2.0

github Dirección: https://github.com/hankcs/HanLP/tree/doc-zh

Ejemplo de uso: Uso las reivindicaciones anteriores Python 3.6

#HanLP
#v2.0
#pip install hanlp
import hanlp

sentence = "不会讲课的程序员不是一名好的算法工程师"
tokenizer = hanlp.load('PKU_NAME_MERGED_SIX_MONTHS_CONVSEG')
tokens = tokenizer(sentence)
print("hanlp 2.0: " + " ".join(tokens))
#output
#hanlp 2.0: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程

 

6 Stanford CoreNLP

Stanford introdujo la herramienta de segmentación de palabras que puede soportar múltiples idiomas. El algoritmo de núcleo se basa en el modelo de CRF.

github proyecto Dirección: https://github.com/Lynten/stanford-corenlp

Documentos de Enlace: https://nlp.stanford.edu/pubs/sighan2005.pdf

Ejemplo de uso: Necesidad de comenzar la web oficial de Stanford para descargar modelo de segmentación de palabra china ( https://stanfordnlp.github.io/CoreNLP/ )

###stanford CoreNLP
#pip install stanfordcorenlp
from stanfordcorenlp import StanfordCoreNLP

sentence = "不会讲课的程序员不是一名好的算法工程师"
with StanfordCoreNLP(r'stanford-chinese-corenlp-2018-10-05-models', lang='zh') as nlp:
    print("stanford: " + " ".join(nlp.word_tokenize(sentence)))

 

Publicado 33 artículos originales · ganado elogios 0 · Vistas 3274

Supongo que te gusta

Origin blog.csdn.net/xixiaoyaoww/article/details/104589402
Recomendado
Clasificación