자연어 처리에서 청킹이란 무엇입니까?

소스 노드 : 1878431

독자 여러분,

이 블로그에서는 Python에서 이론적으로나 실질적으로 청크에 대해 논의할 것입니다.

시작하겠습니다...

알림: 구현의 경우 출력이 별도의 창에 팝업되는 나무 그림이므로 Python IDLE을 사용하는 것이 좋습니다.

안건

  • 청킹이란 무엇입니까?
  • 청킹은 어디에 사용됩니까?
  • 청크의 유형
  • Python에서 청크 구현
  • 결과

청킹이란 무엇입니까?

청킹은 주어진 문장에 있는 품사와 짧은 구를 식별하는 데 사용되는 자연어 처리 프로세스로 정의됩니다.

예전 학교에서 배웠던 영어 문법 수업을 떠올리면 명사, 동사, 형용사, 부사, 전치사, 접속사, 대명사, 감탄사의 XNUMX가지 품사가 있습니다. 또한, 상기 청킹의 정의에서, 짧은 문구는 이러한 품사를 포함하여 형성된 문구를 의미한다.

예를 들어, 청킹을 수행하여 명사구 또는 명사 단독, 형용사 또는 형용사구 등을 식별하고 그룹화할 수 있습니다. 아래 문장을 고려하십시오.

“나는 아침으로 햄버거와 패스트리를 먹었습니다.”

이 경우 명사구를 그룹화하거나 청크하려면 문장의 명사 또는 명사 그룹인 "burgers", "pastry" 및 "lunch"를 얻습니다.

청킹은 어디에 사용됩니까?

널리 사용되는 곳을 모른 채 왜 무언가를 배우고 싶습니까?! 블로그의 이 섹션에서 논의된 응용 프로그램을 살펴보면 끝까지 호기심을 유지하는 데 도움이 될 것입니다!

청킹은 주어진 문장에서 필요한 구를 가져오는 데 사용됩니다. 그러나 POS 태깅은 문장의 모든 단어가 속하는 품사를 찾는 데에만 사용할 수 있습니다.

특정 단어나 관심 구에 대한 설명이나 수정이 많을 때 청킹을 사용하여 필요한 구만 가져오고 주변의 나머지는 무시합니다. 따라서 청킹은 필수 구문을 그룹화하고 분석에 필요하지 않은 모든 수식어를 주변에서 제외하는 방법을 제공합니다. 요약하면, 청킹은 긴 설명에서 중요한 단어만 추출하는 데 도움이 됩니다. 따라서 청킹은 정보 추출의 한 단계입니다.

흥미롭게도 이 NLP 청크 프로세스는 다양한 다른 응용 프로그램으로 확장됩니다. 예를 들어, 특정 범주의 과일을 그룹화하려면 단백질이 풍부한 과일을 그룹으로, 비타민이 풍부한 과일을 다른 그룹으로 분류하는 식입니다. 게다가 청킹은 유사한 자동차, 예를 들어 자동 기어를 지원하는 자동차를 한 그룹으로 그룹화하고 수동 기어를 지원하는 다른 자동차를 다른 청크로 그룹화하는 데 사용할 수도 있습니다.

청킹의 유형

크게 두 가지 유형의 청크가 있습니다.

  • 청크업
  • 청크 다운

덩어리:

여기서는 깊이 들어가지 않습니다. 대신 정보의 개요만 보고 만족합니다. 주어진 데이터에 대한 간략한 아이디어를 얻는 데 도움이 됩니다.

청크다운:

이전 유형의 청크와 달리 청크 다운은 자세한 정보를 얻는 데 도움이 됩니다.

따라서 통찰력을 원하면 "덩어리로 묶기"를 고려하고 그렇지 않으면 "덩어리로 묶기"를 선호합니다.

Python에서 청크 구현

분석을 위해 주어진 텍스트에서 모든 동사를 추출하려는 상황을 상상해 보십시오. 따라서 이 경우 동사구의 청크를 고려해야 합니다. 이는 우리의 목표가 주어진 텍스트에서 모든 동사구를 추출하는 것이기 때문입니다. 청킹은 정규식을 사용하여 수행됩니다.

"정규 표현식"이라는 용어를 처음 접하더라도 걱정하지 마십시오. 아래 표는 다음과 같습니다.

상징

의미

*

선행 문자는 XNUMX번 이상 나타날 수 있으며 이는 선행 문자가 있을 수도 있고 없을 수도 있음을 의미합니다.

ab*는 ab로 시작하여 XNUMX개 이상의 b가 뒤에 오는 모든 입력과 일치합니다. 패턴은 ab, bb, abbb 등과 일치합니다.

+

선행 문자는 적어도 한 번은 나와야 합니다.

a+는,aa,aaa 등과 일치합니다.

?

선행 문자는 전혀 발생하지 않거나 선행 문자가 선택 사항임을 의미하는 한 번만 나타날 수 있습니다.

에이브? ab, abb와 일치하지만 abbb는 일치하지 않는 식입니다.

위의 표에는 가장 일반적으로 사용되는 정규식이 포함되어 있습니다. 정규식은 특히 파일을 삭제, 찾기, 이름 바꾸기 또는 이동하는 동안 명령줄에서 매우 유용합니다.

어쨌든 이 구현에서는 *만 사용할 것입니다. 위의 표를 보고 기호에 익숙해지십시오!

가장 인기 있는 NLP 라이브러리인 nltk를 사용하여 청킹을 수행합니다. 그럼 먼저 import 해보자.

수입품

내가 직접 만든 아래 샘플 텍스트를 고려해 보겠습니다. 청킹을 구현하고 싶은 샘플 텍스트로 아래를 자유롭게 바꾸십시오!

sample_text=""" Rama는 Lanka에서 Sita를 구하기 위해 Ravana를 죽였습니다. Ramayan의 전설은 가장 인기 있는 인도 서사시입니다. 많은 영화와 연재물이 이미 Ramayana를 기반으로 인도에서 여러 언어로 촬영되었습니다. """

분명히 데이터는 문장을 토큰화한 다음 계속 진행하기 전에 단어를 토큰화해야 합니다. 토큰화는 주어진 텍스트를 문장 토큰화의 경우 문장과 같은 더 작은 단위로, 단어 토큰화의 경우 단어로 나누는 과정일 뿐입니다.

토큰화에 이어 각 단어에 대해 품사 태깅을 수행하여 모든 단어의 품사를 식별합니다. 이제 우리는 동사 품사에만 관심이 있고 동일한 것을 추출하고자 합니다.

따라서 다음과 같이 필요한 정규식을 사용하여 관심 품사를 지정합니다.

VB: {}

tokenized=nltk.sent_tokenize(sample_text) for i in tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}" "" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

정규식(RE)은 꺾쇠괄호()로 묶이고 차례로 중괄호({ 및 })로 묶입니다.

알림: 필요한 POS에 따라 RE를 지정하십시오.

VB는 동사 POS를 나타냅니다. VB 다음에 오는 점은 VB 다음에 오는 모든 문자와 일치한다는 의미입니다. 점 뒤의 물음표는 B 뒤의 모든 문자가 한 번만 나타나거나 전혀 나타나지 않아야 함을 지정합니다. 그러나 이전에 본 표에서 이 문자는 선택 사항입니다. NLTK에서 동사 구에 다음 POS 태그가 포함되기 때문에 정규 표현식을 이러한 방식으로 구성했습니다.

POS

의미

VB

기본 형태의 동사

VBD

동사의 과거형

GBV

현재 시제의 동사

VBN

과거분사 형태의 동사

VBP

현재 시제의 동사이지만 XNUMX인칭 단수는 아님

VBZ

현재 시제의 동사이며 XNUMX인칭 단수입니다.

따라서 동사구는 위의 모든 POS에 속할 수 있습니다. 이것이 정규식이 VB로 프레임되는 이유입니다.? 여기에는 위의 모든 범주가 ​​포함됩니다. RegexpParser 패키지는 POS가 이전에 RE를 사용하여 언급한 필수 패턴을 충족하는지 확인하는 데 사용됩니다.

전체 코드는 다음과 같이 볼 수 있습니다.

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Rama는 Lanka에서 Sita를 구하기 위해 Ravana를 죽였습니다. Ramayan의 전설은 가장 인기 있는 인도 서사시입니다. 많은 영화와 연재물이 이미 여러 언어로 촬영되었습니다. 인도의 라마야나 기반 """ tokenized=nltk.sent_tokenize(sample_text) for i in tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram =r"""VB: {}""" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

결과

청킹 결과
청킹 결과

마지막으로, 주어진 RE와 POS가 일치하는 단어와 함께 단어의 POS의 트리 형태를 얻습니다. 우리가 전달한 샘플 텍스트에 대해 얻은 출력의 스냅샷은 위 그림에서 볼 수 있습니다.

동사구에 대한 RE를 충족하는 단어가 출력에서 ​​명확하게 강조 표시되는지 확인하십시오. 따라서 동사 구의 청크가 성공적으로 수행되었습니다.

내 기사가 유용했기를 바랍니다.

감사합니다!

참고자료

1. 파이썬에서 청크 구현하기

2. 청킹의 이론

3. NLP에서 사용 가능한 전체 POS 목록

소개

저는 BTech 컴퓨터 공학 및 공학 대학원생인 Nithyashree V입니다. 저는 그러한 멋진 기술을 배우고 실행하는 것을 좋아합니다. 특히 이 기술이 사회의 도전적인 문제를 해결하는 데 어떻게 도움이 되는지 관찰하는 것을 좋아합니다. 제 관심 분야는 인공 지능, 데이터 과학 및 자연어 처리입니다.

내 LinkedIn 프로필은 다음과 같습니다. 내 링크드인

Analytics Vidhya에서 내 다른 기사를 읽을 수 있습니다. 여기에서 지금 확인해 보세요..

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

출처: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

타임 스탬프 :

더보기 분석 Vidhya