자연어 처리-Python

이 장에서는 Python을 사용한 언어 처리에 대해 배웁니다.

다음 기능은 Python을 다른 언어와 다르게 만듭니다.

  • Python is interpreted − 인터프리터가 런타임에 Python을 처리하기 때문에 Python 프로그램을 실행하기 전에 컴파일 할 필요가 없습니다.

  • Interactive − 인터프리터와 직접 상호 작용하여 Python 프로그램을 작성할 수 있습니다.

  • Object-oriented − Python은 본질적으로 객체 지향적이며이 프로그래밍 기술의 도움으로 객체 내에서 코드를 캡슐화하기 때문에이 언어가 프로그램을 작성하기 더 쉽습니다.

  • Beginner can easily learn − Python은 이해하기 매우 쉽기 때문에 초보자 용 언어라고도하며 다양한 응용 프로그램의 개발을 지원합니다.

전제 조건

릴리스 된 Python 3의 최신 버전은 Windows, Mac OS 및 대부분의 Linux OS 버전에서 사용할 수있는 Python 3.7.1입니다.

  • Windows의 경우 www.python.org/downloads/windows/ 링크로 이동하여 Python을 다운로드하고 설치할 수 있습니다.

  • MAC OS의 경우 www.python.org/downloads/mac-osx/ 링크를 사용할 수 있습니다 .

  • Linux의 경우 다른 Linux 버전은 새 패키지 설치를 위해 다른 패키지 관리자를 사용합니다.

    • 예를 들어, Ubuntu Linux에 Python 3을 설치하려면 터미널에서 다음 명령을 사용할 수 있습니다.

$sudo apt-get install python3-minimal

Python 프로그래밍에 대해 자세히 알아 보려면 Python 3 기본 자습서 – Python 3을 읽어보세요.

NLTK 시작하기

영어로 텍스트 분석을 수행하기 위해 Python 라이브러리 NLTK (Natural Language Toolkit)를 사용할 것입니다. 자연어 툴킷 (NLTK)은 영어와 같은 자연어 텍스트에서 발견되는 품사 부분을 식별하고 태그를 지정하기 위해 특별히 설계된 Python 라이브러리 모음입니다.

NLTK 설치

NLTK 사용을 시작하기 전에 설치해야합니다. 다음 명령을 사용하여 Python 환경에 설치할 수 있습니다.

pip install nltk

Anaconda를 사용하는 경우 다음 명령을 사용하여 NLTK 용 Conda 패키지를 빌드 할 수 있습니다.

conda install -c anaconda nltk

NLTK의 데이터 다운로드

NLTK를 설치 한 후, 또 다른 중요한 작업은 미리 설정된 텍스트 저장소를 다운로드하여 쉽게 사용할 수 있도록하는 것입니다. 그러나 그 전에 다른 Python 모듈을 가져 오는 방식으로 NLTK를 가져와야합니다. 다음 명령은 NLTK 가져 오기에 도움이됩니다.

import nltk

이제 다음 명령을 사용하여 NLTK 데이터를 다운로드하십시오.

nltk.download()

사용 가능한 모든 NLTK 패키지를 설치하는 데 시간이 걸립니다.

기타 필요한 패키지

다음과 같은 다른 Python 패키지 gensimpattern또한 NLTK를 사용하여 자연어 처리 응용 프로그램을 구축 할뿐만 아니라 텍스트 분석에도 매우 필요합니다. 패키지는 아래와 같이 설치할 수 있습니다.

Gensim

gensim은 많은 애플리케이션에 사용할 수있는 강력한 의미 론적 모델링 라이브러리입니다. 다음 명령으로 설치할 수 있습니다.

pip install gensim

무늬

만드는 데 사용할 수 있습니다. gensim패키지가 제대로 작동합니다. 다음 명령은 패턴 설치에 도움이됩니다-

pip install pattern

토큰 화

토큰 화는 주어진 텍스트를 토큰이라고하는 더 작은 단위로 나누는 프로세스로 정의 할 수 있습니다. 단어, 숫자 또는 구두점은 토큰이 될 수 있습니다. 단어 분할이라고도합니다.

Input − 침대와 의자는 가구의 일종입니다.

NLTK에서 제공하는 토큰 화를위한 다양한 패키지가 있습니다. 요구 사항에 따라 이러한 패키지를 사용할 수 있습니다. 패키지 및 설치 세부 사항은 다음과 같습니다.

sent_tokenize 패키지

이 패키지는 입력 텍스트를 문장으로 나누는 데 사용할 수 있습니다. 다음 명령을 사용하여 가져올 수 있습니다.

from nltk.tokenize import sent_tokenize

word_tokenize 패키지

이 패키지는 입력 텍스트를 단어로 나누는 데 사용할 수 있습니다. 다음 명령을 사용하여 가져올 수 있습니다.

from nltk.tokenize import word_tokenize

WordPunctTokenizer 패키지

이 패키지는 입력 텍스트를 단어와 구두점으로 나누는 데 사용할 수 있습니다. 다음 명령을 사용하여 가져올 수 있습니다.

from nltk.tokenize import WordPuncttokenizer

어간

문법적인 이유로 언어에는 많은 변형이 포함됩니다. 언어, 영어뿐만 아니라 다른 언어도 다른 형태의 단어를 가지고 있다는 의미의 변형입니다. 예를 들어, 다음과 같은 단어democracy, democratic, 및 democratization. 기계 학습 프로젝트의 경우 위와 같이 서로 다른 단어가 동일한 기본 형식을 가지고 있음을 기계가 이해하는 것이 매우 중요합니다. 그렇기 때문에 텍스트를 분석하면서 단어의 기본 형태를 추출하는 것이 매우 유용합니다.

형태소 분석은 단어의 끝 부분을 잘게 썰어 단어의 기본 형태를 추출하는 데 도움이되는 휴리스틱 프로세스입니다.

NLTK 모듈에서 제공하는 형태소 분석을위한 다양한 패키지는 다음과 같습니다.

PorterStemmer 패키지

Porter의 알고리즘은이 형태소 분석 패키지에서 단어의 기본 형식을 추출하는 데 사용됩니다. 다음 명령을 사용하여이 패키지를 가져올 수 있습니다.

from nltk.stem.porter import PorterStemmer

예를 들면 ‘write’ 단어의 출력이 될 것입니다 ‘writing’ 이 형태소 분석기의 입력으로 제공됩니다.

LancasterStemmer 패키지

Lancaster의 알고리즘은이 형태소 분석 패키지에서 단어의 기본 형식을 추출하는 데 사용됩니다. 다음 명령을 사용하여이 패키지를 가져올 수 있습니다.

from nltk.stem.lancaster import LancasterStemmer

예를 들면 ‘writ’ 단어의 출력이 될 것입니다 ‘writing’ 이 형태소 분석기의 입력으로 제공됩니다.

SnowballStemmer 패키지

Snowball의 알고리즘은이 형태소 분석 패키지에서 단어의 기본 형식을 추출하는 데 사용됩니다. 다음 명령을 사용하여이 패키지를 가져올 수 있습니다.

from nltk.stem.snowball import SnowballStemmer

예를 들면 ‘write’ 단어의 출력이 될 것입니다 ‘writing’ 이 형태소 분석기의 입력으로 제공됩니다.

주형 화

어휘 및 형태 학적 분석을 사용하여 어미 어미를 제거하는 것을 목표로하는 기본 형태의 단어를 추출하는 또 다른 방법입니다. lemmatization 후 모든 단어의 기본 형식을 기본형이라고합니다.

NLTK 모듈은 lemmatization을 위해 다음 패키지를 제공합니다.

WordNetLemmatizer 패키지

이 패키지는 단어가 명사로 사용되는지 동사로 사용되는지에 따라 단어의 기본 형식을 추출합니다. 다음 명령을 사용하여이 패키지를 가져올 수 있습니다.

from nltk.stem import WordNetLemmatizer

POS 태그 계산 – 청킹

품사 (POS) 및 짧은 구의 식별은 청킹을 사용하여 수행 할 수 있습니다. 자연어 처리에서 중요한 프로세스 중 하나입니다. 토큰 생성을위한 토큰 화 프로세스에 대해 알고 있듯이 청킹은 실제로 해당 토큰에 레이블을 지정하는 것입니다. 즉, 청킹 과정의 도움으로 문장의 구조를 얻을 수 있다고 말할 수 있습니다.

다음 예제에서는 NLTK Python 모듈을 사용하여 문장에서 명사구 청크를 찾는 청킹 범주 인 Noun-Phrase 청킹을 구현합니다.

명사구 청킹을 구현하려면 다음 단계를 고려하십시오.

Step 1: Chunk grammar definition

이 단계에서는 청킹에 대한 문법을 ​​정의해야합니다. 그것은 우리가 따라야 할 규칙들로 구성 될 것입니다.

Step 2: Chunk parser creation

다음으로 청크 파서를 생성해야합니다. 문법을 구문 분석하고 출력을 제공합니다.

Step 3: The Output

이 단계에서는 출력을 트리 형식으로 얻습니다.

NLP 스크립트 실행

NLTK 패키지를 가져 와서 시작하십시오-

import nltk

이제 문장을 정의해야합니다.

여기,

  • DT는 결정자입니다.

  • VBP는 동사입니다.

  • JJ는 형용사입니다.

  • IN은 전치사입니다.

  • NN은 명사

sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),
   ("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]

다음으로 문법은 정규 표현식으로 주어져야합니다.

grammar = "NP:{<DT>?<JJ>*<NN>}"

이제 문법을 파싱하기위한 파서를 정의해야합니다.

parser_chunking = nltk.RegexpParser(grammar)

이제 파서는 다음과 같이 문장을 구문 분석합니다.

parser_chunking.parse(sentence)

다음으로 출력은 다음과 같이 변수에 있습니다.

Output = parser_chunking.parse(sentence)

이제 다음 코드는 출력을 트리 형태로 그리는 데 도움이됩니다.

output.draw()