Вставка пробелов обратно в строку текста с недостоверной информацией о пробелах - PullRequest
1 голос
/ 21 февраля 2009

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

Любые предложения о том, как разобрать строку и вставить пробелы обратно в строку, угадав?

Я использую рубин. Или я должен сказать, что я использую ruby?

Редактировать: я вытащил текст, используя PDF-ридер. Некоторые из файлов PDF хорошо отформатированы, а некоторые нет. Пример текста, смешанного с позиционированием:

.7aspe-5.5cts-715.1o0.6f-708.5f-0.4aces-721.4that-716.3are-720.0i-1.8mportant-716.3in-713.9soc-5.5i-1.8alcommunica6.6tion6.3.-711.6Althoug6.3h-708.1m-1.9od6.3els-709.3o6.4f-702.8f5.4ace-707.9proc6.6essing-708.2haveproposed-611.2ways-615.5to-614.7deal-613.2with-613.0these-613.9diff10.4erent-613.7tasks,-611.9it-617.1remainsunclear-448.0how-450.7these-443.2mechanisms-451.7might-446.7be-447.7implemented-447.2in-450.3visualOne-418.9model-418.8of-417.3human-416.4face-421.9processing-417.5proposes-422.7that-419.8informa-tion-584.5is-578.0processed-586.1in-583.1specialised-584.7modules-577.0(Breen-584.4et-582.9al.,-582.32002;Bruce-382.1and-384.0Y92.0oung,-380.21986;-379.2Haxby-379.9et-380.5al.,-

и если я печатаю только строковые данные (я добавил возврат в конце каждой строки, чтобы сохранить его от испортить макет здесь:

Distinctrepresentationsforfacialidentityandchangeableaspectsoffacesinthehumantemporal lobeTimothyJ.Andrews * andMichaelP.EwbankDepartmentofPsychology, WolfsonResearchInstitute, UniversityofDurham, UKReceived23December2003; revised26March2004; accepted27July2004Availab leonline14October2004Theneuralsystemunderlyingfaceperceptionmustrepresenttheunchanging featuresofafacethatspecifyidentity, aswellasthechangeableaspectsofafacethatfacilitates ocialcommunication.However, thewayinformationaboutfacesisrepresentedinthebrainremainsc ontroversial.Inthisstudy, weusedfMRadaptation (thereductioninfMRIactivitythatfollowsthe repeatedpresentationofidenticalimages) toaskhowdifferentface-andobject-selectiveregionsofvisualcortexcontributetospecificaspectsoffaceperception '

Данные выводятся обратными вызовами, поэтому, если я печатаю каждую строку, когда она возвращается, она выглядит следующим образом:

The

-571,3

нейронная

-573,7

система

-577,4

underly

13,9

ING

-577,2

лицо

-573,0

перхлорэтилен

13,7

eption

-574,9

должны

-572,1

магнезии

20,8

ESENT

-577,0

The

unchangin

14,4

г

-538,5

featur

16,5

ы

-529,5

из

-536,6

а

-531,4

лицо

При рассмотрении выглядит, что истинные пробелы - это большие отрицательные числа <-300, а ложные пробелы - намного меньшие положительные числа. Спасибо, парни. Просто то, что я задаю вопрос, явно помогло мне ответить на него! </p>

Ответы [ 3 ]

4 голосов
/ 21 февраля 2009

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

Если интервал ненадежен из PDF, как он ненадежен? Программа просмотра PDF должна иметь возможность надежно размещать текст, чтобы данные были где-то там, вам просто нужно их найти.

РЕДАКТИРОВАТЬ следующий комментарий: Идея синтаксического анализа файла с использованием словаря (на самом деле ваш единственный вариант, кроме случайной вставки пробелов и надежды на лучшее) и вставки пробелов на определенных границах слов (реальная проблема при работе с пунктуацией, множественное число, которое не изменяет Я полагаю, что базовое слово, то есть множественное число и т. д.) будет гораздо более сложной задачей программирования, чем правильный анализ PDF-файла. В конце концов, PDF четко определен, тогда как английский немного шерстистый.

Почему бы не посмотреть маршрут существующих решений, таких как ps2ascii в Linux, вызвать функцию из вашего Ruby и получить результат.

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

PDF не только сохраняет пробелы в виде пробелов, но также использует команды макета для пробелов (поэтому он не печатает пробелы, а перемещает «перо» вправо). Возможно, вам стоит взглянуть на PDF-ссылку (большой PDF в нижней части сайта), глава 9 «Текст» должна быть тем, что вы ищете.

РЕДАКТИРОВАТЬ: После прочтения вашего комментария к ответу Лазаря, это не то, что вы ищете. Я думаю, вы должны попытаться получить список слов откуда-то и попытаться разделить ваш текст, используя его. Хорошей стратегией было бы сделать это с помощью рекурсии, потому что, например:

"meandyou"

Первым словом может быть «я» или «значит», но если вы попробуете «значит», «ты» не имеет смысла, так что это будет «я», то же самое для следующего слова, которое может быть « "или" an "или" and ", only" and "имеет смысл.

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

Если бы это был я, я бы вернулся к исходным PDF-файлам и попробовал бы другой метод извлечения текста, такой как iText (для Java) или, возможно, какой-то программный метод преобразования PDF в HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...