를 사용하여 Python 3의 언어 데이터를 처리하는 방법.png)
자연 언어 패키지(NLTK)를 사용하여 Python 3의 언어 데이터를 처리하는 방법
2022-06-01 last update
22 minutes reading Python Programming Project Data Analysis Development소개
텍스트 기반의 교류는 이미 가장 흔히 볼 수 있는 표현 형식 중의 하나가 되었다.우리는 매일 이메일, 문자, 트위터, 업데이트 상태를 통해따라서 비구조화된 텍스트 데이터는 이미 매우 보편화되었고 대량의 텍스트 데이터를 분석하는 것은 현재 사람들의 생각을 이해하는 관건적인 방법이다.
트위터의 트위터는 우리가 세계에서 가장 핫한 뉴스 화제를 찾을 수 있도록 도와준다.아마존의 논평은 사용자들이 등급이 가장 높은 제품을 구매하는 것을 돕는다.이러한 조직과 구조 지식의 예는 자연 언어 처리(NLP) 임무를 나타낸다.
NLP는 컴퓨터 과학의 한 분야로 컴퓨터와 인류 간의 상호작용에 전념한다.NLP 기술은 텍스트를 분석하는 데 사용되며 컴퓨터가 인류 언어를 이해하는 데 일종의 경로를 제공한다.NLP 응용 프로그램의 일부 예는 자동 요약, 주제 분할, 감정 분석을 포함한다.
이 강좌는 Natural Language Toolkit (NLTK): Python의 NLP 도구를 사용하는 방법을 소개합니다.
선결 조건
이 강좌의 경우 Python 3을 설치하고 컴퓨터에 로컬 프로그래밍 환경을 설정해야 합니다.그렇지 않으면 appropriate installation and set up guide for your operating system 에 따라 설정할 수 있습니다.
본 강좌를 충분히 이용하려면 당신은 반드시 익숙해야 합니다Python programming language.
1단계 - NLTK 가져오기
Python을 사용하기 전에 NLTK 모듈이 설치되어 있는지 확인합니다.명령줄에서 다음 명령을 실행하여 NLTK를 확인합니다.
- python -c "import nltk"
NLTK가 설치되어 있으면 이 명령은 완전무결합니다.이제 최신 버전이 설치되었는지 확인합니다.- python -c "import nltk; print(nltk.__version__)"
버전 3.2.1을 설치해야 합니다. NLTK의 트위터 패키지를 사용하기 때문에 이 패키지는 이 버전이 필요합니다.NLTK가 설치되지 않은 경우 다음 오류 메시지가 표시됩니다.
- OutputTraceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module named 'nltk'
오류 메시지는 NLTK가 설치되어 있지 않음을 나타냅니다.pip
다운로드 라이브러리를 사용하십시오.- pip install nltk
다음은 이 강좌에서 사용할 데이터와 NLTK 도구를 다운로드합니다.2단계 - NLTK 데이터 및 레이블 다운로드
이 강좌에서는 NLTK를 통해 다운로드할 수 있는 트위터 자료 라이브러리를 사용합니다.구체적으로 말하자면, 우리는 NLTK의
twitter_samples
자료 라이브러리를 사용할 것이다.명령줄을 통해 다음과 같이 자료 라이브러리를 다운로드합니다.- python -m nltk.downloader twitter_samples
명령이 성공적으로 실행되면 다음 출력을 받게 됩니다.Output[nltk_data] Downloading package twitter_samples to
[nltk_data] /Users/sammy/nltk_data...
[nltk_data] Unzipping corpora/twitter_samples.zip.
다음으로 POS 태그를 다운로드합니다.어성 표기는 텍스트의 단어를 특정 어성 표기에 대응하는 과정인 명사, 동사, 형용사, 부사 등으로 표기하는 것이다. 본 강좌에서 우리는 NLTKaveraged_perceptron_tagger
를 전문적으로 사용할 것이다.평균 감지기 표기기는 감지기 알고리즘을 사용하여 어떤 어성 표기가 단어에 부여될 가능성이 가장 높은지 예측한다.다음과 같이 tagger를 다운로드합니다.- python -m nltk.downloader averaged_perceptron_tagger
명령이 성공적으로 실행되면 다음 출력을 받게 됩니다.Output[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data] /Users/sammy/nltk_data...
[nltk_data] Unzipping taggers/averaged_perceptron_tagger.zip.
자료 라이브러리의 다운로드가 정확한지 다시 한 번 확인하겠습니다.터미널에서 Python 상호 작용 환경을 엽니다.python
Python의 상호 작용 환경에서 가져오기twitter_samples
자료 라이브러리:- from nltk.corpus import twitter_samples
NLTK의 트위터 자료 라이브러리는 현재 트위터 흐름 API에서 검색한 20000개의 트위터 샘플을 포함하고 있다.전체 트윗은 행 구분JSON으로 저장됩니다.우리는 twitter_samples.fileids()
방법을 사용하여 자료 라이브러리에 JSON 파일이 얼마나 있는지 확인할 수 있습니다.- twitter_samples.fileids()
우리의 출력은 다음과 같다.Output[u'negative_tweets.json', u'positive_tweets.json', u'tweets.20150430-223406.json']
이러한 파일 ID를 사용하여 트위터로 돌아갈 수 있습니다strings.- twitter_samples.strings('tweets.20150430-223406.json')
이 작업을 실행하면 대량의 출력이 되돌아옵니다.일반적으로 다음과 같습니다.Output[u'RT @KirkKus: Indirect cost of the UK being in the EU is estimated to be costing Britain \xa3170 billion per year! #BetterOffOut #UKIP'...]
우리는 지금 우리의 자료 라이브러리 다운로드가 성공했다는 것을 안다.따라서 바로 가기ctrl
+D
를 사용하여 Python 상호작용 환경을 종료합니다.이제 우리는
twitter_samples
자료 라이브러리에 접근할 수 있고, 트위터를 처리하기 위한 스크립트를 작성할 수 있다.우리의 스크립트의 목표는 통계
twitter_samples
자료 라이브러리의 정자에 얼마나 많은 형용사와 명사가 집중되어 있는지이다.명사는 가장 기본적인 정의에서 일반적으로 사람, 장소 또는 사물로 정의된다.예를 들어 영화, 책, 햄버거는 모두 명사다.명사를 계산하는 것은 얼마나 많은 다른 주제를 토론했는지 확정하는 데 도움이 된다.
형용사는 명사(또는 대명사)를 수식하는 단어이다. 예를 들어 공포영화, 웃긴 책이나 맛있는 햄버거 등이다.형용사를 계산하면 사용하는 언어 유형을 확정할 수 있다. 즉, 관점은 종종 사실이 아니라 더 많은 형용사를 포함한다.
우리는 다음 단계에서 스크립트를 작성하기 시작할 것이다.
단계 3 - 문장 표시
우선, 선택한 텍스트 편집기에서 우리가 사용할 스크립트를 만들고 이름을
nlp.py
로 지정합니다.파일에서 먼저 자료 라이브러리를 가져옵니다.그리고
tweets
variable 파일을 만들고 positive_tweets.json
파일에 있는 트위터 문자열 list 을 지정합니다.nlp.회사 명
from nltk.corpus import twitter_samples
tweets = twitter_samples.strings('positive_tweets.json')
우리가 처음으로 추문 목록을 불러올 때, 모든 추문은 문자열로 표시됩니다.우리가 추문 중의 어떤 단어가 형용사인지 명사인지 확인하기 전에, 우리는 우선 추문을 표기해야 한다.태그화는 문자열 시퀀스를 단어, 키워드, 단어, 기호 및 기타 요소로 분해하는 행위로 이러한 요소를 태그라고 합니다.
tweets_tokens
라는 새 변수를 만듭니다. 태그화된 트위터 목록을 할당합니다.nlp.회사 명
from nltk.corpus import twitter_samples
tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')
이 새 변수 tweets_tokens
는 목록입니다. 목록의 모든 요소는 표시 목록입니다.현재 우리는 모든 트위터의 표시를 가지고 있으며, 우리는 적당한 POS로 이 표시를 표시할 수 있다.단계 4 - 문장 표시
NLTK의 POS 태그에 액세스하려면 이 태그를 가져와야 합니다.모든 import statements 은 스크립트 시작 부분에 놓아야 합니다.이 새로운 가져오기를 다른 가져오기 문장 아래에 두자.
nlp.회사 명
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents
tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')
현재, 우리는 모든 영패를 표시할 수 있다.NLTK는 pos_tag_sents()
모든 작업을 한 번에 수행할 수 있도록 허용합니다.태그 목록을 저장하는 데 사용할 새 변수 tweets_tagged
를 만듭니다.이 새 줄은 현재 스크립트의 끝에 바로 놓을 수 있습니다.tweets_tagged = pos_tag_sents(tweets_tokens)
표시된 영패가 어떤 모양인지 알아야 합니다. 다음은 저희 tweets\u 표시 목록의 첫 번째 요소가 어떤 모양인지 알아야 합니다.[(u'#FollowFriday', 'JJ'), (u'@France_Inte', 'NNP'), (u'@PKuchly57', 'NNP'), (u'@Milipol_Paris', 'NNP'), (u'for', 'IN'), (u'being', 'VBG'), (u'top', 'JJ'), (u'engaged', 'VBN'), (u'members', 'NNS'), (u'in', 'IN'), (u'my', 'PRP$'), (u'community', 'NN'), (u'this', 'DT'), (u'week', 'NN'), (u':)', 'NN')]
우리의 트위터는 하나의 목록으로 표시되고 모든 영패에 대해 포스 라벨에 대한 정보를 가지고 있음을 알 수 있다.각 영패/표시 쌍은 tuple 로 저장됩니다.NLTK에서 형용사의 줄임말은
JJ
이다.NLTK 표기기는 단수 명사(
NN
를 복수 명사(NNS
와 다른 표기로 표시한다.간소화하기 위해서, 우리는 추적 NN
표시를 통해서만 단수 명사를 계산할 것이다.다음 단계에서 우리는 전체 어료 라이브러리에 나타난 횟수
JJ
와NN
를 통계할 것이다.단계 5 - POS 레이블 통계
누적기 (count) 변수 추적
JJ
과 NN
이 나타나는 횟수를 사용합니다. 표시를 찾을 때마다 이 변수를 계속 추가합니다.우선, 스크립트의 밑에 계수를 만들고, 먼저 그것을 0으로 설정합니다.nlp.회사 명
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents
tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')
JJ_count = 0
NN_count = 0
변수를 생성하면 두 개 for
loops를 생성합니다.첫 번째 순환은 목록의 모든 트윗을 훑어볼 것입니다.두 번째 순환은 모든 트위터의 모든 태그/태그 쌍을 훑어볼 것입니다.모든 쌍에 대해 우리는 적당한 메타그룹 인덱스를 사용하여 표시를 찾을 것이다.그리고 conditional statements 를 사용하여 태그가 문자열
'JJ'
또는 'NN'
과 일치하는지 확인합니다.태그가 일치하면 적절한 누적기+= 1
를 추가합니다.nlp.회사 명
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents
tweets = twitter_samples.strings('positive_tweets.json')
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')
JJ_count = 0
NN_count = 0
for tweet in tweets_tagged:
for pair in tweet:
tag = pair[1]
if tag == 'JJ':
JJ_count += 1
elif tag == 'NN':
NN_count += 1
이 두 순환을 끝낸 후에 우리는 어료 라이브러리에서 형용사와 명사의 총수를 알아야 한다.스크립트에서 형용사와 명사를 얼마나 찾았는지 보려면 스크립트 끝에 print 문장을 추가합니다.nlp.회사 명
...
for tweet in tweets_tagged:
for pair in tweet:
tag = pair[1]
if tag == 'JJ':
JJ_count += 1
elif tag == 'NN':
NN_count += 1
print('Total number of adjectives = ', JJ_count)
print('Total number of nouns = ', NN_count)
이 때, 우리 프로그램은 자료 라이브러리에서 찾은 형용사와 명사의 수량을 출력할 수 있습니다.6단계- NLP 스크립트 실행
파일을 저장하고 실행하여 형용사와 명사를 얼마나 찾았는지 확인합니다.
- python nlp.py
스크립트가 실행되기까지 몇 초가 걸릴 수 있으니 기다려 주십시오.만약 모든 것이 순조롭다면, 우리가 스크립트를 실행할 때 다음과 같은 출력을 얻을 수 있을 것이다.OutputTotal number of adjectives = 6094
Total number of nouns = 13180
출력 결과가 같으면 이 강좌를 성공적으로 마쳤음을 나타냅니다.축하완성된 코드
우리가 완성한 코드에 대해 우리는 다른 사람과 우리의 미래 자신이 더욱 쉽게 따를 수 있도록 주석을 추가해야 한다.우리의 스크립트는 다음과 같다.
nlp.회사 명
# Import data and tagger
from nltk.corpus import twitter_samples
from nltk.tag import pos_tag_sents
# Load tokenized tweets
tweets_tokens = twitter_samples.tokenized('positive_tweets.json')
# Tag tagged tweets
tweets_tagged = pos_tag_sents(tweets_tokens)
# Set accumulators
JJ_count = 0
NN_count = 0
# Loop through list of tweets
for tweet in tweets_tagged:
for pair in tweet:
tag = pair[1]
if tag == 'JJ':
JJ_count += 1
elif tag == 'NN':
NN_count += 1
# Print total numbers for each adjectives and nouns
print('Total number of adjectives = ', JJ_count)
print('Total number of nouns = ', NN_count)
이 강좌에서 NLTK를 통해 다운로드된 트위터 자료 라이브러리를 사용했지만 자신의 데이터를 읽을 수 있습니다.Python의 파일 읽기에 익숙하려면 “How To Handle Plain Text Files in Python 3" 의 안내서를 참조하십시오.실제 트위터 데이터 사용에도 관심이 있을 수 있습니다.Twitter API 액세스에 대한 자세한 내용은 "How To Create a Twitter App 를 참조하십시오.그리고 “How To Create a Twitterbot with Python 3 and the Tweepy Library” 에서 Tweepy Python 라이브러리를 사용하여 특정 해시 태그가 포함된 트윗을 수집하는 방법을 보여 줍니다.그리고 NLTK를 사용하여 수집한 데이터를 분석할 수 있습니다.
여기에서 복수와 단수 명사를 계산하고 형용사에 대해 감정 분석을 하거나 Python and matplotlib 시각화 데이터를 사용할 수 있는 코드를 확장할 수 있습니다.
결론
이 강좌에서 Python의 NLTK 라이브러리를 사용하여 텍스트를 분석하는 자연 언어 처리 기술을 배웠습니다.이제 Python의 corpora, tokenize, tag, count POS 태그를 다운로드할 수 있습니다.이 강좌를 이용하여 Python에서 자신의 텍스트 데이터를 처리하는 과정을 간소화할 수 있습니다.