Текстовые нарушения - PullRequest
       24

Текстовые нарушения

0 голосов
/ 06 февраля 2009

Кто-нибудь знает о какой-либо библиотеке или программном обеспечении, которое обнаружит неровности в тексте? Например, допустим, у меня есть ...

1. Name 1, Comment
2. Name 2, Comment
3. Name 3 , Comment
5. Name 10, Comment

Это программное обеспечение или библиотека вначале будут обрезать части текста, которые будут схожи (во многом аналогично программному обеспечению сжатия кодировать повторяющиеся схожие части текста, чтобы сжать его), но используя переменную для устойчивости к ошибкам, можно найти похожие фрагменты текста, теперь очень похожие на приложение для сравнения текста или инструмент сравнения / слияния, которые на самом деле могут выделять то, что он видит как разные. Я думаю о возможном создании этого инструмента, но я не хочу изобретать велосипед. Если есть хоть что-то, способное на это хоть что-то, я бы очень хотел узнать, возможно, помочь в этом проекте или, по крайней мере, знать, что не смогу сделать это. Не говоря уже о том, что этот ответ мог бы помочь другим людям, которые охотятся за тем же, я думаю, что спрос на них будет достаточно высоким, поэтому я поражаюсь, что вообще ничего не могу найти.

Ответы [ 3 ]

2 голосов
/ 06 февраля 2009

В зависимости от того, какие именно нарушения в жизни вы хотите найти или исправить, эта проблема радикально отличается.

Вот ваш пример с реальным текстом:

1. Lazarus Long, Get the first shot off fast.
2. Hiro Protagonist, Greatest swordfighter[sic] in the world.
3. Alice , Down the rabbit hole.
5. Orem, Sink of power.

В этом примере ошибки можно исправить с помощью приличного текстового редактора с функцией find replace. Текстовые редакторы и шестнадцатеричные редакторы могут творить чудеса, если вы проявляете творческий подход с подстановочными знаками. Проблема остается простой, пока существуют ваши факторы разграничения (. Или,). Как вы, наверное, уже знаете; как только один из них отсутствует, проблема становится гораздо более сложной.

Пример сложной проблемы:

1. Lazarus Long, Get the first shot off fast.
 2. Hiro Protagonist  Greatest swordfighter[sic] in the world.
3. Alice , Down the rabbit hole.
5 . Orem, , Sink of power.

Я бы, вероятно, атаковал это в несколько шагов. 1. Уберите лишние места. 2. Узнайте ключевые статистические данные, такие как количество разделителей в строке и среднее количество слов или символов в столбце с разделителями. Большинство имен состоят из одного или двух слов, комментарии неизвестны или ограничены вводом. 3. Найдите строки со статистически невероятным количеством ключевых особенностей. 4. Постарайтесь их исправить.

Я понимаю, что это не решает вашу проблему напрямую, но, возможно, одна идея может немного исправить вашу проблему. Вполне возможно, что прошедшие райты никогда не создавали никаких проектов.

2 голосов
/ 06 февраля 2009

Если вы в Python, вы можете попробовать difflib .

Это не точное решение вашей проблемы, но может быть полезно.

0 голосов
/ 06 февраля 2009

Звучит так, как будто вы хотите использовать Regex для создания «идеального ответа», а затем сравнить остальные строки с ним.

Или вы можете написать более сложную программу, которая сводит каждую строку в запрос Regex, а затем сравнивает запросы друг с другом, чтобы увидеть, какие из них отличаются.

...