Создать собственный список слов

Я хочу создать пользовательский список (научных) слов для таких целей, как проверка орфографии и OCR, основанная на моей коллекции научных статей в формате pdf. Используя pdftotext я могу легко создать текстовый файл, содержащий нужные слова для моего научного поля. Однако файл будет загрязнен

  • слова, которые не являются специфическими для науки (и которые также содержатся в общем словаре)
  • слова, которые являются результатом неправильного преобразования, например, формул (включая слова, которые включают специальные символы и т. д.),

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

Это звучит как хороший план для вас? Существуют ли существующие инструменты для этой задачи? Как бы вы это сделали?

  • Где я могу получить двоичные файлы Tesseract для Debian 6 64bit?
  • OCR для получения текста с изображения. Управление ошибками
  • Де-обфускация изображения со статистической информацией?
  • Программное обеспечение OCR для уравнений для получения файла LaTeX
  • как OCR PDF-файл и получить текст, сохраненный в pdf?
  • Как найти все изображения, содержащие любой текст?
  • OCR, который выводит данные вероятности
  • tesseract: возможно ли изменить вывод шрифта в OCRed pdf?
  • 2 Solutions collect form web for “Создать собственный список слов”

    Чтобы выбрать слова не менее 4 символов, найденные не менее 5 раз и не найденные в / usr / share / dict / words в файлах PDF в текущем каталоге.

      find . -name '*.pdf' -exec pdftotext {} - \; | tr -cs '[:alpha:]' '[\n*]' | tr '[:upper:]' '[:lower:]' | grep -E '.{4}' | sort | uniq -c | awk '$1 > 4 {print $2}' | comm -23 - <(tr '[:upper:]' '[:lower:]' < /usr/share/dict/words|sort -u) 

    Вам нужна оболочка с поддержкой замещения процесса ( ksh , zsh или bash ).

    Если вы все равно будете использовать perl , вы также можете сделать все это в perl :

     find . -name '*.pdf' -exec pdftotext {} - \; | perl '-Mopen ":locale"' -nle ' s/^\S+//;s/\S+$//;y/ \t/ /s; next unless length > 40; $w{lc$_}++ for /[[:alpha:]]{4,}/g; END{open W,"</usr/share/dict/words"; while(<W>){chomp;delete $w{lc$_}}; print for grep {$w{$_}>4} keys %w}' 

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

     pdf2text files | tr -cs '[A-Za-z]' '\n' | tr '[AZ]' '[az]' | awk '{ if (length > 6) {print $1;}}' | fgrep -v -f /usr/share/groff/current/eign | sort | uniq -c | awk '{print $2, $1}' | sort -nr +1 -2 | head -20 

    Это даст вам 20 наиболее часто встречающихся слов, длина которых больше 6.

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

    fgrep является единственным нечетным и требует установки GNU troff . Файл / usr / share / groff / current / eign – это что-то вроде 100 наивысших частотных слов на английском языке. Флаг «-v» передает только те слова, которые не отображаются в файле «eign», поэтому он использует «eign» в качестве стоп-листа. Если вам не нравится, что GNU troff как обычные слова, вы можете сделать свой собственный и использовать этот файл на шаге fgrep .

    Interesting Posts

    Условно разбить столбцы на 2 строки?

    Что такое сокет?

    Почему изменение настроек tty в одном файловом дескрипторе влияет на другое?

    Переменная среды с равным знаком и оператор &&

    Монтировать и / или имитировать тома с существующими каталогами?

    Как изменить оболочку по умолчанию на ZSH – chsh говорит «Недопустимая оболочка»

    nginx обратный прокси: ошибка хоста не допускается

    Как обновить Vim 7.2 до 7.4 на Red Hat 6.6 самый простой способ?

    Как отметить поток с помощью iptables?

    tmux new pane имеет домашний каталог по умолчанию вместо предыдущего каталога

    Что может привести к тому, что мой жесткий диск начнет вращаться?

    Как изменить регистр (верхний и нижний регистр) строк в моей переменной?

    Запуск сценария Python в виртуальной среде Conda в качестве службы

    Что это значит: «Прерывание: контакт A, направленный в IRQ 17»

    Прямые результаты команды «Найти» для javac

    Linux и Unix - лучшая ОС в мире.