중화사전망 - 자전 검색 - 파이썬 및 정규식을 사용하여 텍스트 구조화 정보를 추출하는 방법은 무엇입니까?

파이썬 및 정규식을 사용하여 텍스트 구조화 정보를 추출하는 방법은 무엇입니까?

통점

많은 사람들이 일상 업무에서 대량의 본문을 처리해야 한다.

예를 들어, 학자들은 영감, 데이터, 논거를 찾기 위해 대량의 문헌 자료를 읽어야 한다.

학생들은 많은 교과서와 논문을 읽고 직접 보고서를 작성하거나 슬라이드를 만들어야 한다.

재무 분석가는 대량의 뉴스 보도에서 업계 발전 추세와 대상 기업의 동태에 대한 단서를 찾아야 한다.

모든 워드 프로세싱이 이렇게 신선하고 재미있는 것은 아니다.

중요하지만 번거로운 작업은 대량의 텍스트에서 구조화된 정보를 추출하는 것입니다.

많은 데이터 분석 시나리오에서는 구조화된 정보를 입력해야 합니다.

예를 들어, "대출 여부: Python 과 기계 학습을 사용하여 의사 결정을 도울 수 있습니까?" -응? 그리고 "Python 과 심도신경망을 이용하여 유실될 고객을 어떻게 잠글 수 있을까? 보시다시피 기계 모델은 구조화된 테이블 정보를 선호합니다.

하지만 구조화된 정보가 반드시 거기에 있는 것은 아닙니다. 당신이 사용하기를 기다리고 있습니다. 과거에 생성된 구조화되지 않은 텍스트에 숨겨져 있는 경우가 많습니다.

텍스트 정보를 수동으로 읽고, 키를 추출하고, 복사하여 표에 붙여넣는 것에 익숙해질 수 있습니다. 원칙적으로 이것은 이해할 수 있다. 하지만 실제로 작동하면 효율성이 너무 낮고 번거롭습니다.

대다수의 사람들은 이런 단순하고 반복적인 무미건조한 일에 종사하는 것을 원하지 않는다.

마우스를 반복하여 텍스트 범위, "Ctrl+C" 를 반복적으로 지정하고 양식 문서로 전환하여 입력 위치를 정확히 찾은 다음 "CTRL+V" 를 찾습니다 ...

이런 일을 많이 하면 어깨 팔꿈치 관절, 심지어 심신 건강에도 좋지 않은 영향을 미칠 수 있다.

좀 더 간단한 자동화 방법을 사용하여 이러한 성가신 작업 단계를 신속하게 완료하시겠습니까? (존 F. 케네디, 자동화, 자동화, 자동화, 자동화, 자동화, 자동화, 자동화) -응?

이 문장 다 보고 나면 답을 찾을 수 있기를 바랍니다.

견본

여기서는 매우 단순화된 중국어 텍스트 정보 추출의 예를 보여 줍니다.

이렇게 하는 이유는 데이터를 해석하는 데 너무 많은 시간이 걸리지 않기 위해서이다.

방법에 초점을 맞추고 새로운 지식을 습득할 수 있기를 바랍니다.

한 고교 담임 선생님이 반장에게 수능 후 졸업행방을 집계하게 했다고 가정해 봅시다. 반장은 진지한 조사를 한 후 다음과 같은 보고를 했다.

장화는 북경대학에 입학했다.

이핑은 중등 기술 학교에 입학했다.

한매메이가 백화점에 들어갔다.

......

예를 익히기 위해서, 심지어 * * * 음까지 있습니다. 여기서 나는 1998 신화사전의 일부 내용을' 차용' 했다.

그거 달콤하지 않나요?

실생활에서는 한 반에 세 명 이상이 있을 가능성이 높기 때문에 이것이 긴 문장이라고 상상할 수 있다.

그러나 사실 담임 선생님은 아직 표현하지 못한 함축적 의미가 하나 더 있다.

표 한 장 주세요!

그래서 이 긴 문장을 보면 그의 표정을 상상할 수 있다.

반장도 어색할 것 같아요.

만약 당신이 양식을 원한다면, 당신은 말해야 합니다!

이때, 당신이 반장이라고 가정하면, 당신은 어떻게 해야 합니까?

정보는 모두 본문에 있다. 그러나 테이블로 변환해야 하는 경우 하나씩 찾고 하나씩 처리해야 합니다.

사실, 40 ~ 50 명 수업에는 수동 조작이 그리 어렵지 않습니다.

하지만 여러분이 처리해야 할 데이터의 양이 이 예의 10 배, 100 배, 심지어 천만 배라면 어떨까요?

계속 수작업으로 처리할까요?

이것은 번거로울 뿐만 아니라 비현실적이다.

우리는 우리가 자동으로 해당 정보를 추출할 수 있도록 간단한 방법을 찾아야 한다.

우리가 여기서 사용하는 방법은 정규 표현식입니다.

규칙적

"정규식" 이라는 이름은 언뜻 신비롭게 들린다. 사실, 그것은 영어 "정규 표현식" 에서 번역됩니다.

백어로 번역하면' 정규식 형식' 이다.

이거, 좀 더 접지된 것 같나요?

하지만' 가짜 전문가 10 1' 이라는 과목을 보충해 드리겠습니다.

다른 사람이 알아들을 수 있는 말을 하면 누구를 속일 수 있습니까?

관례에 따르면,' 정규식' 으로 계속 호칭하자.

출시 이후 텍스트 처리에 효율성을 제공했습니다.

하지만 이를 사용하는 주요 인파는 글을 자주 다루는 작가, 편집자, 학자, 문원이 아니라 ...

프로그램 편성자

프로그래머가 쓴 코드는 텍스트입니다. 프로그래머가 처리하는 많은 데이터도 텍스트 형식입니다. 따라야 할 많은 중요한 법칙이 있습니다.

정규식의 독특한 비밀이 있어 많은 사람들이 어둠 속에서 일주일 내내 임무를 수행해야 한다. 프로그래머는 30 분 만에 완성할 수 있고 커피를 마시고 일을 기다릴 수 있다.

범인공지능의 오늘날에도 정규식은 여전히 예상치 못한 응용이 많다.

예를 들어, 인간-기계 대화 시스템.

당신은 뉴스 보도를 읽었을 수도 있고, 인간-기계 대화가 지식지도나 심도 있는 학습으로 만들어졌다고 생각했을지도 모릅니다.

위의 쿨파 기술의 참여가 없다고 말할 수는 없다. 하지만 그들은 기껏해야 그 중 일부일 뿐, 아마도 아주 작은 부분일 것이다.

생산 관행에서 대량의 대화 규칙 뒤에는 신비하고 깊은 신경망이 아니라 정규식 한 무더기가 있다.

이렇게 고급스러운 응용 기술을 직접 습득할 수 있을지 걱정이 되실 겁니다.

대답은 다음과 같습니다.

물론이죠!

정규식은 배우기 어렵지 않다.

특히 당신이 그것을 파이썬과 결합하면, 그것은 단순히 효율성 신기이다.

정규식이 샘플 텍스트에서 "이름" 과 "이동" 정보를 식별하는 데 어떻게 도움이 되는지 살펴보겠습니다.

재판 실천

브라우저를 열고 이 URL (/) 을 입력하십시오.

다음 인터페이스가 표시됩니다.

정규 표현식 실험을 위한 무기가 될 수 있습니다. 제가 INFO 573 1 을 가르쳤을 때, 학생들은 이 도구를 익힌 후 곧 정규식을 했습니다.

이렇게 좋은 도구는 틀림없이 비싸겠죠?

아니요, 무료입니다. 대담하게 사용할 수 있습니다.

먼저 왼쪽의 프로그래밍 언어를 기본 PHP 에서 Python 으로 조정합시다.

그런 다음 처리할 텍스트를 가운데 빈 큰 텍스트 상자에 붙여넣습니다.

우리 한번 코디해 보자.

일치란 무엇입니까?

즉, 표현식을 작성하면 컴퓨터가 닭털을 화살로 삼고, 문자 행마다 표현식에 맞는 문자 단락이 있는지 꼼꼼히 찾아본다. (윌리엄 셰익스피어, 햄릿, 컴퓨터명언)

있는 경우 강조 표시됩니다.

여기서 한 번 관찰해 보니, 모든 말 속에 사람 앞에' 자' 라는 글자가 하나 있는 것을 발견하였다. (윌리엄 셰익스피어, 햄릿, 언어명언)

자, 가운데 위에 있는 작은 텍스트 상자에' 자' 라는 글자를 입력하자.

보시다시피, 세 문장 중 "다 켜졌다" 는 것을 볼 수 있습니다.

이것은 당신이 접촉한 첫 번째 일치 방법입니다. 문자의 본의에 따라 일관된 내용을 찾습니다.

견본문의 규칙성 때문에, 우리는' 다' 를 로케이터로 볼 수 있다. 그 후, 문장의 끝까지, 바로' 가' 라는 메시지다.

이것은 우리가 찾고 있는 구조화된 정보의 절반이 아닌가?

우리는 "to" 를 일치시키려고 노력합니다.

어떻게 코디하나요? 이번에는 라인마다 글자가 다르죠?

괜찮습니다. 정규식의 위력이 이때 드러납니다.

점을 사용할 수 있습니다. 즉, 그렇습니다. 을 눌러 모든 문자를 나타냅니다.

글자, 숫자, 구두점 ... 심지어 중국어도 덮어쓸 수 있다.

그럼 우리 계속 생각해 봅시다. 여기에 몇 글자가 있을까요?

잘 모르겠어요.

이 간단한 세 문장에는' 네 글자' 나' 여섯 글자' 라는 두 가지 상황이 있다.

따라서 대상 정보에 문자 길이를 지정할 수 없습니다.

하지만 괜찮아요. 나타나는 횟수를 나타내는 별표 (*) 만 있으면 되나요? 0 에서 무한대까지 일치 할 수 있습니다.

물론 실제로 무한대는 실제로 나타나지 않는다.

우리는 덧붙였다. * 방금 입력 한 결과는 다음과 같습니다.

나쁘지 않아요!

그러나 목적지 정보와 "끝" 이라는 단어는 같은 색으로 강조 표시된 것 같습니다. 그건 헷갈리지 않나요?

우리는 이렇게 하고 싶지 않다.

우리는 무엇을 할까요

가 주시겠습니까? 의 양쪽에 괄호 한 쌍을 추가해 봅니다 (중국어 전각 기호는 사용하지 않도록 주의).

이번에는 파란색이고, 뒤의 목적지 정보는 녹색으로 변하는 것을 발견할 수 있을 것이다. (윌리엄 셰익스피어, 햄릿, 지혜명언)

이것은 괄호에 매우 중요합니다. 그룹화라고 하며 정보를 추출하는 기본 단위입니다.

우리는 이미 임무의 절반을 완성했다, 그렇지 않니?

이름을 함께 추출해 봅시다.

우리 이름의 닻을 찾아보자.

자세히 살펴보면, 너는 모든 이름 뒤에 동사가 있다는 것을 쉽게 발견할 수 있다.

고등 학교에 입학한 학생은' 시험' 자를 쓰고 취업한 학생은' 진입' 을 사용한다.

먼저 "시험" 이라는 단어를 시도해 봅시다.

여기서 우리는 "시험" 이라는 글자를 "시험" 이라는 글자 바로 앞에 두려고 노력한다. 하지만 일치하지 않는다는 것을 알 수 있습니다.

왜요

자료를 돌아보면 다른 사람이 쓰는 원어가' 합격' 이라는 것을 알 수 있다.

물론 여기에 "위" 라는 단어를 입력할 수 있습니다. 그러나 너는 좀 더 일반적인 상황을 고려해야 한다.

예를 들어 시험에 합격하면 어떡하죠? "입학" 은요?

더 좋은 방법은 우리가 방금 배운' 큰 수법' 을 계속 사용하고' 시험' 과' 끝' 사이에. * 을 삽입하는 것이다.

이때 너의 정규 표현식은 어떻게 생겼니? 나는 시험에 합격했다. * (.*)

보세요, 첫 줄의 정보가 성공적으로 일치했습니까?

그러나 두 선이 일치하지 않습니다. 어떻게 해야 할까요?

만약 우리가 같은 패턴을 따른다면, 우리는 그것이 사용된다는 것을 알게 될 것이다. * (.*)? 마지막 두 줄을 정확히 일치시킬 수 있습니다.

문제가 생겼습니다.

첫 번째 행과 일치하는 것은 마지막 두 줄과 일치할 수 없으며, 그 반대의 경우도 마찬가지입니다.

이것은 좋지 않다. 우리는 좀 더 일반적인 표현을 쓰고 싶다.

우리는 무엇을 할까요

정규 표현식에서 "or" 관계의 표현을 살펴 보겠습니다.

여기서 우리는 세로줄을 사용하여 두 문자를 분리하고 괄호로 묶어 둘 중 하나가 나타나고 일치한다는 것을 나타낼 수 있습니다.

정규 표현식을 [Kao | Jin] 으로 쓰는 것입니다. * 음악. *).

좋아, 세 줄 모두 잘 어울렸어.

여기서는 동사구와 시제를 중간 앵커 정보로 사용하므로 안전하고 대담하게 이전 이름 정보를 추출할 수 있습니다.

즉 이렇게 쓴 것이다: (. *) [시험 |]. * 예 (. *).

이때 이름 그룹화는 녹색이고 목적 그룹화는 빨간색입니다.

우리는 두 그룹의 정보를 성공적으로 추출했습니다! 축하해!

그러나, 만약 당신이 이곳의 성적을 담임 선생님께 보여 준다면, 그도 만족스럽지 못할 것 같습니다.

표! 나는 양식을 원한다!

서두르지 마, 파이썬 차례야.

파이썬으로 정식으로 데이터를 추출해 봅시다.

환경

이 문장 소스 코드는 내가 Github 에 올려놓았다.

제 위챗 공식 계정인' nkwangshuyi' 배경에서' regex' 에 응답하여 전체 코드 링크를 볼 수 있습니다.

만약 당신이 나의 튜토리얼에 만족한다면, 페이지 오른쪽 위에 있는 별을 클릭해서 별 하나를 추가해 주세요. 감사합니다

이 페이지의 중앙에는 "Colab 에서 열림" 이라고 적혀 있는 버튼이 있습니다. 클릭하세요.

그런 다음 Google Colab 이 자동으로 열립니다.

위 그림에서 빨간색 원으로 표시된 "드라이브에 복사" 버튼을 클릭하는 것이 좋습니다. 이렇게 하면 쉽게 사용하고 볼 수 있도록 자신의 구글 드라이브에 저장할 수 있습니다.

Colab 은 완벽한 운영 환경을 제공합니다. 코드를 순서대로 실행하기만 하면 이 자습서의 실행 결과를 재현할 수 있다.

구글 콜라브에 익숙하지 않다면 괜찮습니다. Google Colab 의 특징과 사용법을 전문적으로 설명하는 자습서가 있습니다.

코드를 더 깊이 배우고 이해할 수 있도록 구글 콜라브에서 새로운 노트북을 열고 코드를 입력해 아래와 같이 실행하는 것이 좋습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), Northern Exposure (미국 TV 드라마), 공부명언) 이 과정에서 코드의 의미를 충분히 이해하다.

이런 어색해 보이는 방식은 사실 효과적인 학습 방식이다.

암호

먼저 파이썬 정규식 패키지를 읽습니다.

수입 re

그런 다음 데이터를 준비합니다. 코드의 공통성을 보여주기 위해 이전 텍스트 규칙과는 달리 코드를 올바르게 처리할 수 있는지 확인하기 위해 이 끝에 텍스트 줄을 추가했습니다. (윌리엄 셰익스피어, 템플릿, 코드, 코드, 코드, 코드, 코드, 코드, 코드, 코드, 코드, 코드)

데이터 = ""장화는 북경대학교 시험에 합격했다.

이핑은 중등 기술 학교에 입학했다.

한매메이가 백화점에 들어갔다.

그들은 모두 아름다운 미래를 가지고 있다.

그런 다음 정규 표현식을 쓸 때입니다. 정말 직접 손으로 써야 하나요?

물론 아닙니다.

강력한 regex 10 1 웹 사이트를 통해 준비를 마칠 수 있습니다.

위 그림에서 빨간색으로 동그라미를 친 버튼을 클릭하면 사이트에서 원하는 패턴에 맞는 초기 코드 템플릿을 준비할 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)

코드를 완전히 복사할 필요는 없습니다. 이런 말이 있으면 매우 중요하다. 직접 복사해서 Colab 노트북에 붙여넣으면 됩니다.

Regex = r "(. *) [입학 시험 |]. * 없어졌어요. *) "

이것이 바로 Python 에서의 정규 표현식의 모습입니다.

우리는 데이터를 받을 빈 목록을 준비했다.

내 목록 = []

그런 다음 루프를 작성합니다.

Data.split 에 있는 행 ('n') 의 경우:

-응? Mysearch = re.search(regex, line)

-응? 내가 검색한다면:

Name = mysearch.group( 1)

Dest = mysearch.group(2)

Mylist.append ((이름, dest))

이 주기의 각 문장의 의미를 설명해 드리겠습니다.

Data.split('n')? 텍스트 데이터를 행으로 분할합니다. 그래서 우리는 모든 행의 데이터를 얻을 수 있습니다. Mysearch = re.search(regex, line)? 이 문장은 패턴과 선을 맞추려고 한다. 내가 검색한다면? 이 판단문은 프로그램이 이 선에 우리가 찾고자 하는 패턴이 있는지 구분할 수 있도록 하기 위해서이다. 예를 들어, 마지막 텍스트 줄에는 앞에서 분석한 텍스트 패턴이 없습니다. 이런 대사를 만나면 바로 건너뛰세요. Name = mysearch.group( 1)? 첫 번째 일치하는 내용, 즉 regex 10 1 웹 사이트의 녹색 대표 이름이 그룹으로 저장된다는 말인가요? 이름? 변수에서. 다음 문장 등등. 주의? 단체? 괄호가 정규식에 나타나는 순서에 따라 1 부터 계산합니다. Mylist.append ((이름, dest))? 이 행에서 추출한 정보를 이전에 정의한 빈 목록에 저장합니다.

주의하세요, 추가하지 않으면? Mysearch = re.search(regex, line)? 이 문장에서 프로그램은 각 행을 일치시키고 그룹화된 내용을 추출하려고 합니다. 그러면 다음과 같은 오류가 발생합니다.

그래서 정규식으로 정보를 추출할 때 난폭해서는 안 된다는 것을 알 수 있다.

동시에, 우리가 좀 볼 수 있을까요? 내 목록? 이 목록의 내용:

내 목록

결과는 다음과 같습니다.

[('장화',' 북경대학교'), ('이핑',' 중등학교'), ('한매매',' 백화점')]

예, 하나는 많지 않고, 하나는 적지 않습니다. 바로 우리가 필요로 하는 것입니다.

우리는 그것을 하나의 표로 내보낼 것이다. 방법에는 여러 가지가 있지만 가장 간단한 방법은 Pandas 데이터 분석 소프트웨어 패키지를 사용하는 것입니다.

판다를 PD 로 수입하다

그냥 사용하세요? 경찰. 데이터 프레임? 함수, 위의 연결된 목록과 튜플로 구성된 2 차원 구조를 데이터 프레임으로 바꿀 수 있습니다.

Df = PD 입니다. 데이터 프레임 (내 목록)

Df.columns = ['이름',' 설명']

우리는 여기서도 제목을 매우 세심하게 수정했다는 점에 유의하십시오.

당신의 노동 성과를 보세요.

Df

데이터 상자의 경우 한 줄의 코드만 있으면 Excel 형식으로 변환할 수 있습니다.

Df.to_excel("dest.xlsx ",index=False)

파일 탭으로 이동하여 현재 디렉토리의 내용을 새로 고치고 확인합니다.

이거? Dest.xlsx? 출력의 결과입니다. 다운로드 후 엑셀로 열 수 있습니다.

임무 완수!

너는 성적을 담임 선생님께 제출하여 그의 만족스러운 미소를 볼 수 있다.

요약

이 자습서에서는 텍스트 문자 법칙과 파이썬, 정규식을 사용하여 구조화된 정보를 추출하는 방법에 대해 설명했습니다.

나는 네가 이미 다음과 같은 기교를 익혔으면 좋겠다.

정규 표현식의 역할을 이해합니다.

Regex 10 1 웹 사이트를 정규식으로 일치시키고 예비 코드를 생성합니다.

파이썬 배치 추출 정보를 사용하여 필요에 따라 구조화된 데이터를 지정된 형식으로 내보냅니다.

아니면 그 말, 이렇게 간단한 예로, 위의 방법으로 모기의 대폭격이다.

그러나 처리해야 할 데이터의 양이 많으면 이 방법으로 시간을 절약할 수 있습니다.

네가 일거수일투족을 들어 자신의 일에 융통성 있게 운용할 수 있기를 바란다.

파이썬에 대한 자세한 내용은 파이썬 독학망에 주목해 주세요! !