맞춤 단어 목록 만들기

맞춤 단어 목록 만들기

맞춤법 검사 및 OCR과 같은 목적으로 pdf 형식의 과학 논문 모음을 기반으로 사용자 정의(과학) 단어 목록을 만들고 싶습니다. 를 사용하면 pdftotext내 과학 분야에 필요한 단어가 포함된 텍스트 파일을 쉽게 만들 수 있습니다. 하지만 파일이 오염될 것입니다.

  • 비과학 관련 단어(일반 사전에도 포함)
  • 부적절한 수식변환으로 인한 단어(특수문자 등이 포함된 단어 포함)

개별 단어의 길이가 최소이고 특수 문자가 포함되지 않으며 목록에 여러 번 표시되도록 요구하여 후자를 제거하고 싶습니다. 둘째, 두 번째 단어 목록과 비교하여 전자를 제거하고 싶습니다. 내 질문:

이것이 당신에게 좋은 계획처럼 들리나요? 이 작업을 수행할 수 있는 기존 도구가 있습니까? 당신은 무엇을 할 것인가?

답변1

5번 이상 발견되었지만 현재 디렉토리의 PDF 파일에 있는 /usr/share/dict/words에 없는 4자 이상의 단어를 선택합니다.

 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}'

답변2

꽤 전형적인 계획처럼 들립니다. 이 작업을 수행하려면 쉘 스크립트를 사용하겠습니다. 많은 양의 텍스트를 다루지 않으므로 성능이 적절해야 하며 쉘 스크립트를 쉽게 작성하고 다시 실행할 수 있습니다. 내 첫 번째 클립은 다음과 같은 스크립트였습니다.

pdf2text files |
tr -cs '[A-Za-z]' '\n' |  
tr '[A-Z]' '[a-z]' |
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

길이가 6보다 크면 가장 일반적인 20개의 단어가 제공됩니다.

단계를 추가하고, 단계를 제거하고, 매개변수를 조정하고, 결과를 확인할 수 있습니다.

fgrep단계는 유일하게 이상한 단계이며 다음이 필요합니다.GNU 트로브설치되어 있습니다. /usr/share/groff/current/eign 파일은 영어에서 가장 자주 사용되는 100개의 단어와 유사합니다. "-v" 플래그는 "eign" 파일에 나타나지 않는 단어만 전달하므로 "eign"을 중지 목록으로 사용합니다. GNU troff가 일반적인 단어로 사용되는 것이 마음에 들지 않으면 자신만의 파일을 만들어 fgrep이 단계에서 사용할 수 있습니다.

관련 정보