2009-02-06 12 views
0

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

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

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

ответ

2

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

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

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

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

2

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

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

0

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

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