1 votos

Comparar dos documentos, encontrar oraciones similares

Estoy tratando de comparar dos archivos de texto de los documentos (40 páginas+) que parecen tener las oraciones similares esparcidos a su alrededor. Me gustaría para detectar estas similitudes de alguna manera. La primera idea que me vino a la cabeza fue a buscar cualquiera de los tres consecutivos palabras que existen en ambos archivos (mayúsculas y minúsculas). Lamentablemente, no soy un Linux maestro. Hay algún script que podría identificar a estos para mí? Esto es un poco de emergencia, por lo que podría estar ofreciendo un montón de recompensa para resolver este problema. Cualquier ayuda sería muy apreciada.

Los mejores deseos,

1voto

dirkt Puntos 556

Cómo extraer tres palabras consecutivas para cada frase:

Suponga que los dos archivos se denominan file1.txt y file2.txt. Convertir cada fin-de-línea a un espacio de uso tr, a continuación, extraer líneas con tres palabras consecutivas en cada uno de los sgrep (probablemente necesite para instalar esta, muchas distribuciones ofrecen como un paquete):

cat file1.txt | tr '[\n]' ' ' | sgrep -o '%r\n' '" "_." ".." "._" "' > file1.words
cat file2.txt | tr '[\n]' ' ' | sgrep -o '%r\n' '" "_." ".." "._" "' > file2.words

Asegúrese de insertar un espacio o un salto de línea antes de la primera y después de la última palabra en file1.txt o file2.txt, o no va a funcionar a la primera resp. tres últimas palabras. Esto mantiene los signos de puntuación y lo hace parte de una palabra, usted puede deshacerse de los signos de puntuación mediante la inserción de un adicional de

... | tr -d '[,.;:()]' | ...

después de la primera tr ( | de personajes "tuberías" entre los comandos, por lo que el siguiente comando utiliza la salida de la anterior).

A continuación, encontrará las repeticiones de las tres palabras:

sort file1.words file2.words | uniq -d

Esto va a imprimir cualquier conjunto de tres palabras que se produce varias veces, estar en el mismo archivo, o ambos, en file1.txt y file2.txt. Tendrás que revisar todas las ocurrencias (utilizar la búsqueda en un editor de texto) para averiguar en qué, pero te quiero hacer eso de todos modos para juzgar la similitud.

Esta es una cruda aproximación de similitud partido, pero no sé de útiles herramientas de línea de comandos que ofrecen algo parecido a distancia de Levenshtein mediciones en pares de líneas.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: