Los motores de búsqueda de ortografía corrección

corrección ortográfica

Más: mi github
introdujo por primera vez el concepto de distancia de edición, así, demasiado perezoso para escribir, editar hizo fuerza de botón debe saber de este camino clásico problema de programación dinámica:

Dados dos palabras palabra1 y palabra2, palabra1 para calcular el número mínimo de operaciones de conversión palabra2 utilizados.

Puede realizar las siguientes tres operaciones en una sola palabra:

Insertar un carácter
eliminar un carácter
a reemplazar un carácter
Ejemplo 1:

Entrada: palabra1 = "caballo", palabra2 = "ros"
de salida: 3
explica:
Caballo -> rorse (será reemplazado por 'R ^' 'H')
rorse -> Rose (delete 'R ^')
Rose -> ROS (Borrar ' e ')

Ejemplo 2:

Entrada: palabra1 = "intención", palabra2 = "ejecución"
de salida: 5
explica:
por la intención -> inention (Borrar 'T')
inention -> enention (sustituye a la 'i' a 'E')
enention -> exention (el " n 'se sustituye con' X ')
exention -> exection (la' n 'se sustituye por' C ')
exection -> Ejecución (insert' u ')

Entonces podemos saber si la probabilidad de una palabra introducida por el usuario es pequeño, pensamos que puede ser correctamente escrita, busca la distancia de edición más pequeña la palabra a ser reemplazado en el diccionario .

Por supuesto, esto puede resultar en gran complejidad del tiempo, después de todo, es necesario tener que buscar a través del diccionario y el cálculo de la distancia de edición, esta vez no podemos asumir el coste, es probable que se puede decir que la idea de usar la búsqueda partición segmentado, aunque esta es una formas posibles, pero todavía algo insatisfactorio.

Entonces hay también otro método es generar una distancia cadena de edición es 1 o 2 y se filtró

Generar la cadena es bastante simple, pero cómo filtrar un problema.

A pesar de soluciones positivas a un lado, creo que en realidad puede filtrar de acuerdo con las reglas, tales como el teclado de 24 teclas, es fácil de prensa por error a cabo algunas letras cercano, tal como o presionará a p. Podemos establecer la probabilidad de reemplazo para cada letra del diccionario, como {O: {p: 0,25, i: 0,25, l: 0,25, k: 0,15, m: 0.05}} De esta manera, y luego seleccione una mayor probabilidad de ocurrencia en el diccionario palabra para obtener el resultado final.

Estos son sólo mis pensamientos personales, en la práctica o usarán fórmula bayesiana .

términos populares, el Bayesiano posterior fórmula de probabilidad se obtiene a través de la probabilidad a priori. Aquí con manzana, por ejemplo.

Derecha: Manzana

Usuario 1: app

Usuario 2: apl

Usuario 3: Appl

Usuario 4: appla

Usuario 6: Appl

Podemos obtener la manzana con el número de usuarios escribir la palabra lo equivocado desde el registro de búsqueda.

Supongamos, la cadena de entrada de usuario es, secuencia correcta es c, se puede obtener:

pag ( C | s ) p ( s c ) p ( c ) p (c | s) \ propto P (S | C) P (c)

p (s | c) se puede entender como: para una cadena correcta c, ¿cuántas personas han escrito s.

En problemas prácticos:

p ( s c ) = p ( a p p l a p p l e ) = 0.5 P (s | c) = p (Appl | manzana) = 0,5

p ( s c ) = p ( a p p a a p p l e ) = 0.16 p (s | c) = p (APPA | manzana) = 0,16

...

p © es una uni-gramo, se pueden obtener directamente en el diccionario.

Publicado 16 artículos originales · ganado elogios 3 · Vistas 1355

Supongo que te gusta

Origin blog.csdn.net/weixin_40631132/article/details/104741313
Recomendado
Clasificación