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

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

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

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


person Xedecimal    schedule 06.02.2009    source источник


Ответы (3)


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

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

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. 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. Постарайтесь исправить их.

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

person Phil    schedule 06.02.2009

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

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

person yk4ever    schedule 06.02.2009

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

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

person DevinB    schedule 06.02.2009