안녕하세요 여러분,
여러 저널 논문의 전문을 포함하는 JMP 테이블이 있습니다. 각 레코드의 한 열에는 논문 제목(ID)이, 다른 열에는 논문 전문이 있습니다. 각 논문의 방법론 섹션 텍스트만 포함하는 새 열을 만들고 싶습니다. @브래디_브래디 의 "Recode Review" 튜토리얼 (https://community.jmp.com/t5/JMP-On-Air/Recode-Review/ta-p/261025 )을 보고 나서 이 방법이 가능할 것 같다는 생각이 들었습니다. 각 레코드의 전문 필드에서 "methods"라는 단어를 검색한 후, 이를 임의의 구분 기호(예: $%^)로 바꾸는 것이었습니다. 다음으로, 각 문서의 전문 필드에서 "results"라는 단어를 검색하여 다른 임의의 구분 기호(예: !@#)로 바꾸는 것입니다. 그런 다음, 텍스트를 열로 변환하거나 정규 표현식을 사용하여 두 구분 기호 사이의 텍스트만 추출할 수 있습니다. 이론적으로는 가능할 것으로 보입니다. 하지만 문서에 '방법'이나 '결과'라는 단어가 두 번 이상 나오면 (실용적이지 않더라도) 복잡해질 것 같습니다 (흔히 그렇죠). 혹시 주의할 점이나 제안하실 말씀이 있으신가요?
안녕하세요,
다음은 "Methods"라는 단어의 첫 번째 발생과 "Results"라는 단어의 첫 번째 발생 사이의 텍스트를 직접 추출하는 데 사용할 수있는 가장 기본적인 공식입니다.
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "METHODS" ),
Contains( Uppercase( :TEXT ), "RESULTS" )
-Contains( Uppercase( :TEXT ), "METHODS" )
)
이 두 단어는 과학 논문에서 매우 흔하기 때문에 전체 텍스트 데이터의 하위 집합에서만 작동 할 것이라고 확신하지만 특수 문자를 삽입하고 Regex를 사용하지 않고도 JMP 수식을 사용하는 방법에 대한 아이디어를 제공합니다. .
베스트,
TS
이러한 경우의 많은 (거의 모든?)에서와 마찬가지로 "상황에 따라 다릅니다". 데이터가 잘 구조화 된 경우이를 설명하는 데 사용할 수있는 다른 기능이있을 수 있습니다. 예를 들어, 논문이 모두 동일한 저널에있는 경우 구조적 일관성을 활용할 수 있습니다. 때로는 정말 창의적이어야하고 때로는 옴니버스 파싱 규칙으로 원하는 텍스트를 구분하는 방법을 찾는 것이 거의 불가능합니다. 물론 더 많은 도구는 더 많은 창의성과 힘을 가능하게합니다.
Recode의 "세그먼트 추출"기능과 앞서 언급했듯이 일부 Regex를 확인하십시오.
더 이상 도움을 드릴 수 없어서 죄송합니다.
건배,
브래디
다시 안녕하세요.
몇 번의 실험 끝에 다음에서 제공하는 간단한 공식을 사용하여 저널 기사 텍스트 구문 분석 목표를 달성하는 방법을 찾았습니다. 헉헉 . 제 경우의 문제는 저의 "기사"가 서로 다른 형식과 부제목 레이블을 가진 수많은 다른 저널에서 온 것이 었습니다. 결과적으로 표준 패턴 지향 접근 방식은 작동하지 않습니다. 결국 내가했던 작업은 pdf의 수동 편집이 필요했지만 그렇게 나쁘지 않았고 100 % 효과적인 것 같습니다.
먼저 각 pdf를 열고 텍스트를 편집하여 서로 다른 표준 콘텐츠 블록에 고유 한 구분 기호를 갖도록했습니다. 제 경우에는 추상, 소개, 방법, 결과, 토론 및 인용 문헌의 표준 범주를 원했습니다. 그래서 각 논문에서 "방법"이라는 개념과 일치하는 첫 번째 제목을 찾았습니다. 어떤 경우에는 이것은 실제로 "방법"이라는 단어 였지만 다른 경우에는 "재료 및 방법"또는 "연구 영역"과 같은 단어였습니다. 어느 쪽이든 원하는 부제목 끝에 고유 한 구분 기호 (예 : CCCCC)를 추가했습니다. 그런 다음 "결과"라는 단어가 자주 사용되는 "결과"라는 개념과 일치하는 첫 번째 부제목을 찾았지만 모든 저널이 다르며 때로는 다른 단어가 사용되었습니다. 부제목에 관계없이 고유 한 구분 기호 (예 : DDDDD)를 추가했습니다. 전체 말뭉치에서 원하는 6 개의 표준 콘텐츠 블록 각각에 대해 동일한 작업을 수행했습니다.
다음으로 편집 한 모든 pdf 파일을 .txt 파일로 변환했습니다 (JMP 외부의 다른 소프트웨어 사용).
그런 다음 JMP의 AWESOME "Import multiple files"도구를 사용하여 각 기사의 전체 텍스트가 단일 열에있는 기사당 하나의 행이있는 데이터 테이블을 만들었습니다.
이 시점에서 내가해야 할 일은 각 제목에 하나씩 6 개의 새 열을 만들고 Thierry_S에서 제공 한 수식의 변형을 사용하여 원하는 콘텐츠 청크를 수집하는 것뿐이었습니다. 예를 들어 "방법"열을 만들려면 다음 공식을 사용했습니다.
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "CCCCC" ),
Contains( Uppercase( :TEXT ), "DDDDD" )
-Contains( Uppercase( :TEXT ), "CCCCC" )
)
그런 다음 "결과"열을 만들기 위해 다음 공식을 사용했습니다.
Munger(
:TEXT,
Contains( Uppercase( :TEXT ), "DDDDD" ),
Contains( Uppercase( :TEXT ), "EEEEE" )
-Contains( Uppercase( :TEXT ), "DDDDD" )
)
결국, 800 개의 기사에 대한 데이터 테이블이 있는데, 각 기사에는 인용 된 초록, 소개, 방법, 결과, 토론 및 문헌의 표준 열에 정보가 있습니다. 빙고, 할렐루야!
이 접근 방식은 내 구분 기호를 PDF 파일에 삽입하는 수동 단계를 필요로했지만 그 과정은 하루 밖에 걸리지 않았습니다. 기사 형식이 엄청나게 다양하고 기사 전체에 일관된 "태그"메타 데이터가 없다는 점을 감안할 때 이것은 매우 어리석은 방법이었습니다. 섹션 기준 (예 : "methods", "results")을 충족 할 수있는 단어 목록을 검색하여 이러한 태그를 자동으로 삽입하는 방법이있을 수 있지만이 스레드의 다른 곳에서 언급했듯이 거의 모든 섹션에서 나타날 가능성이있는 저널 기사. 수동 접근 방식을 사용하면 저널의 pdf 파일로 생성되었거나 지난 30 년 동안 OCR을 거친 불량 스캔 보고서에 관계없이 모든 pdf에서 텍스트를 캡처 할 수있었습니다.
다시 한번 감사합니다 헉헉 귀하의 게시물. JMP의 유연성이 다시 한번 나타납니다!
케이시