> 기술 주변기기 > IT산업 > 파이썬에서 자연 언어 처리를 시작합니다

파이썬에서 자연 언어 처리를 시작합니다

Joseph Gordon-Levitt
풀어 주다: 2025-02-10 10:51:09
원래의
750명이 탐색했습니다.

Getting Started with Natural Language Processing in Python 오늘날의 세계에서는 소셜 미디어 의견, 브라우징 기록 및 고객 피드백과 같은 텍스트 데이터와 같은 많은 양의 데이터가 구조화되지 않습니다. 대규모 텍스트 데이터에 직면하여 분석을 시작해야 할 곳을 모르겠습니다. Python의 NLP (Natural Language Processing) 기술이 도움이 될 수 있습니다!

이 튜토리얼은 NLP의 핵심 개념을 사용하고 Python의 텍스트 데이터를 분석하도록 안내하도록 설계되었습니다. 우리는 텍스트를 작은 단위 (단어 metamorphosis)로 나누고, 단어를 줄기 형태로 정상화하는 방법 (STEM 추출 및 형태 학적 복원) 및 추가 분석을 준비하기 위해 문서를 정리하는 방법을 배웁니다.

시작하자!

코어 포인트

Python의 자연 언어 처리 (NLP)에는 텍스트를 단어 요소로 나누고, 단어를 줄기 형태로 정상화하며, 추가 분석을 위해 문서를 청소하는 것이 포함됩니다. Python의 NLTK 라이브러리를 사용하여 이러한 작업을 수행 할 것입니다.

단어를 줄기 형태로 변환하는 두 가지 기술은 줄기 추출과 어휘 형태 복원입니다. STEM 추출은 단어 부착을 제거하는 간단한 알고리즘입니다. NLP의 데이터 청소에는 문장 부호를 제거하고 단어를 중지하는 것이 포함됩니다 (예 :“i”,“a”및“the”와 같은 일반적인 단어와 같은이 단어는 텍스트를 분석 할 때 의미가 거의 없기 때문입니다. 텍스트를 청소 한 후

클래스의 nltk 클래스를 사용하여 단어 주파수를 찾을 수 있습니다. 이것은 텍스트에서 일반적인 용어를 찾는 데 매우 유용합니다.
  • 예방 조치
  • 이 자습서는 Python의 NLTK 라이브러리를 사용하여 텍스트에서 모든 NLP 작업을 수행합니다. 이 튜토리얼을 쓸 때 NLTK 버전 3.4를 사용하고있었습니다. 터미널에서 PIP 명령을 사용하여 라이브러리를 설치할 수 있습니다.
  • 시스템에 설치된 NLTK 버전을 확인하려면 라이브러리를 Python 통역사로 가져 와서 버전을 확인할 수 있습니다.
  • 이 튜토리얼에서는 NLTK에서 특정 작업을 수행하려면 특정 리소스를 다운로드해야 할 수도 있습니다. 필요할 때 각 자원을 설명합니다.
  • 그러나 튜토리얼의 후반 단계에서 리소스 다운로드를 하나씩 다운로드하지 않으려면 이제 모든 리소스를 한 번에 다운로드 할 수 있습니다.
  • 1 단계 : 단어 metamorphosis FreqDist 컴퓨터 시스템은 자연 언어를 스스로 이해할 수 없습니다. 자연어를 다루는 첫 번째 단계는 원본 텍스트를 단어 요소로 변환하는 것입니다. 단어 요소는 연속적인 문자의 의미와 의미가 있습니다. 문장을 어휘 요소로 나누는 것은 당신에게 달려 있습니다. 예를 들어, 쉬운 방법은 문장을 공백으로 분할하여 그것을 한 단어로 분해하는 것입니다.
  • NLTK 라이브러리에서는
함수를 사용하여 문자열을 어휘 요소로 변환 할 수 있습니다. 그러나 먼저 Punkt 리소스를 다운로드해야합니다. 터미널에서 다음 명령을 실행하십시오

다음으로 에서 에서 가져와야합니다. 코드의 출력은 다음과 같습니다.
pip install nltk==3.4
로그인 후 복사
로그인 후 복사
로그인 후 복사
당신은

가 공백을 기반으로 문자열을 분할 할뿐만 아니라 문장 마크를 단어 요소로 분리한다는 것을 알 수 있습니다. 구두점 마크를 유지하거나 제거하는 것은 분석 요구에 따라 다릅니다. word_tokenize 2 단계 : 단어를 줄기 양식으로 변환 <🎜 🎜>

자연 언어를 다룰 때, 당신은 종종 같은 단어의 다양한 문법 형태가 있음을 알 수 있습니다. 예를 들어, "Go", "Going"및 "Gone"은 모두 동일한 동사 "Go"의 다른 형태입니다.

프로젝트는 다양한 문법 형태의 단어를 보존해야 할 수도 있지만 동일한 단어의 다른 문법 형태를 줄기 형태로 변환하는 방법에 대해 논의 해 봅시다. 단어를 줄기 형태로 변환하는 데 사용할 수있는 두 가지 기술이 있습니다. 첫 번째 기술은 추출을 줄이는 것입니다. STEM 추출은 단어 부착을 제거하는 간단한 알고리즘입니다. NLTK에는 사용 가능한 다양한 스템 밍 추출 알고리즘이 있습니다. 이 튜토리얼에서는 포터 알고리즘을 사용합니다. <<> 우리는 먼저 <🎜 🎜>에서

를 가져옵니다. 다음으로, 스템 밍트 추출기를 <🎜 🎜> 변수로 초기화 한 다음 <🎜 🎜> 메소드를 사용하여 <🎜 🎜>의 스템 밍 형식을 찾습니다.

위 코드의 출력은 이동입니다. 위에서 설명한 다른 형태의 "go"에 대한 스템 밍 추출기를 실행하는 경우, 스템 밍크 추출기가 동일한 스템 밍 형태 "go"를 반환한다는 것을 알 수 있습니다. 그러나 Stemming Extraction은 단어 부착을 제거하는 간단한 알고리즘이므로 단어가 언어에서 덜 자주 사용될 때 실패합니다.

예를 들어 "구성"이라는 단어에 줄기 추출기를 사용하려고 할 때 직관적이지 않은 결과를 제공합니다.

출력이 "구성"임을 알 수 있습니다.

이 문제는 주어진 맥락에서 단어의 줄기 형태를 찾는보다 복잡한 접근법을 취함으로써 해결할 수 있습니다. 이 과정을 단어 양식 감소라고합니다. 단어 모양 복원은 텍스트의 문맥과 어휘에 따라 단어를 정상화합니다. NLTK에서는

클래스를 사용하여 문장의 형태 적 복원을 수행 할 수 있습니다.

먼저, Python 터미널의 NLTK 다운로더에서 WordNet 리소스를 다운로드해야합니다.

다운로드가 완료되면 nltk.stem.porter 클래스를 가져 와서 초기화해야합니다. PorterStemmer 형태 복원기를 사용하려면 <🎜 🎜> 방법을 사용하십시오. 단어와 컨텍스트라는 두 가지 매개 변수를 허용합니다. 이 예에서는 "V"를 컨텍스트로 사용합니다. stemmer 메소드의 출력을 본 후에는 컨텍스트를 더 탐구합니다. .stem() 당신은

메소드가 "구성"이라는 단어를 스템 형태 "구성"으로 올바르게 변환한다는 것을 알 수 있습니다. 또한 알고리즘이 더 복잡하기 때문에 단어 모양 복원이 스만 추출보다 오래 걸린다는 것을 알 수 있습니다.
import nltk
print(nltk.__version__)
로그인 후 복사
로그인 후 복사
로그인 후 복사

메소드의 두 번째 매개 변수를 프로그래밍 방식으로 결정하는 방법을 확인해 봅시다. nltk에는 <🎜 🎜> 기능이있어 문장에서 단어의 맥락을 결정하는 데 도움이됩니다. 그러나 먼저 .lemmatize() 리소스 : pos_tag()를 다운로드해야합니다 averaged_perceptron_tagger 다음, <🎜 🎜> 함수를 가져 와서 문장에서 실행합니다.

출력이 쌍 목록임을 알 수 있습니다. 각 쌍에는 텍스트 전체에서 단어 요소의 컨텍스트를 나타내는 단어 요소와 태그가 포함되어 있습니다. 문장 부호의 레이블은 그 자체입니다.
pip install nltk==3.4
로그인 후 복사
로그인 후 복사
로그인 후 복사
각 단어의 문맥을 해독하는 방법은 무엇입니까? 아래는 웹의 모든 태그와 해당 의미의 전체 목록입니다. 모든 명사에는 "N"으로 시작하는 레이블이 있으며 모든 동사에는 "V"로 시작하는 레이블이 있습니다.

메소드의 두 번째 매개 변수 에서이 정보를 사용할 수 있습니다. pos_tag() 위 코드의 출력은 다음과 같습니다.

이 출력은 예상대로, "구성"과 "치안 판사"는 각각 "구성"과 "치안 판사"로 전환됩니다.
import nltk
print(nltk.__version__)
로그인 후 복사
로그인 후 복사
로그인 후 복사

<<> 3 단계 : 데이터 청소

<🎜 🎜> 데이터를 준비하는 다음 단계는 데이터를 정리하고 분석에 의미를 부여하지 않는 것을 제거하는 것입니다. 전반적으로, 우리는 분석에서 문장 부호와 중지 단어를 어떻게 제거 할 수 있는지 살펴볼 것입니다.
python -m nltk.downloader all
로그인 후 복사
로그인 후 복사

구두점 마크를 제거하는 것은 상당히 간단한 작업입니다. <<> 도서관의 <🎜 객체에는 영어로 된 모든 구두점 마크가 포함되어 있습니다.

이 코드 스 니펫의 출력은 다음과 같습니다. .lemmatize() 단어 요소에서 구두점 마크를 제거하려면 다음 코드를 간단히 실행할 수 있습니다.

다음으로, 우리는 중지 단어를 제거하는 방법에 중점을 둘 것입니다. 중지 단어는 일반적으로 "i", "a"및 "the"와 같은 언어로 일반적으로 사용되며, 텍스트를 분석 할 때이 단어는 의미가 거의 없습니다. 따라서 분석에서 중지 단어를 제거합니다. 먼저 NLTK 다운로더에서 스톱워드 리소스를 다운로드하십시오
nltk.download('punkt')
로그인 후 복사
다운로드가 완료된 후 에서 <🎜

를 가져 와서 <🎜 🎜> 메소드를 "영어"와 함께 사용하여 매개 변수로 사용하십시오. 다음은 영어로 된 179 개의 중지 단어 목록입니다.

우리는이 섹션에서 논의 된 개념과 단어 모양 복원 예제를 결합하여 다음 함수 <🎜 🎜>를 만들 수 있습니다. 또한 단어를 중지 단어 목록의 일부인지 비교하기 전에 단어를 소문자로 변환합니다. 이런 식으로, 문장의 시작 부분에 중지 단어가 나타나면 여전히 캡처 할 수 있습니다.
from nltk.tokenize import word_tokenize
print(word_tokenize("Hi, this is a nice hotel."))
로그인 후 복사
이 예제의 출력은 다음과 같습니다

보시다시피 문장 부호와 중지 단어가 제거되었습니다.

<🎜 🎜> <<> 단어 주파수 분포

이제 NLP의 기본 청소 기술에 익숙해 져서 텍스트에서 단어의 빈도를 찾으십시오. 이 연습에서는 구텐베르크 프로젝트에서 무료로 제공되는 동화 "쥐, 새 및 소시지"의 텍스트를 사용할 것입니다. 우리는이 동화의 텍스트를 끈에 보관할 것입니다.

먼저,

를 곱한 다음 위에 정의 된 함수를 사용하여 text : <🎜 🎜>를 사용하여 정리합니다.

텍스트에서 단어의 주파수 분포를 찾으려면

클래스의 nltk를 사용할 수 있습니다. 단어 요소로 클래스를 매개 변수로 초기화하십시오. 그런 다음 text 메소드를 사용하여 공통 용어를 찾으십시오. 이 경우 상위 10 가지 용어를 찾아 보겠습니다. clean_data

다음은이 동화에서 가장 자주 볼 수있는 10 가지 용어입니다.
pip install nltk==3.4
로그인 후 복사
로그인 후 복사
로그인 후 복사
기대에 따르면, 가장 일반적인 세 ​​가지 용어는 동화의 3 가지 주인공입니다.

텍스트를 분석 할 때 단어의 빈도는 중요하지 않을 수 있습니다. 일반적으로 NLP의 다음 단계는 통계 (TF-IDF (단어 주파수 inverse documpency)를 생성하는 것입니다. 이는 문서 세트에서 단어의 중요성을 나타냅니다. FreqDist <🎜 🎜> <<> 결론 .most_common()

이 튜토리얼에서는 파이썬의 자연 언어 처리에 대한 예비 이해가 있습니다. 우리는 텍스트를 어휘 요소로 변환하고, 단어를 줄기 형태로 변환하고, 마지막으로 텍스트를 정리하여 분석에 의미를 부여하지 않는 부분을 제거합니다.
import nltk
print(nltk.__version__)
로그인 후 복사
로그인 후 복사
로그인 후 복사
이 튜토리얼에서 간단한 NLP 작업을 보았지만 탐색 할 다른 기술이 많이 있습니다. 예를 들어, 텍스트가 논의 할 수있는 일반적인 주제를 찾는 것을 목표로 텍스트 데이터에 대한 주제 모델링을 수행 할 수 있습니다. NLP에서 더 복잡한 작업은 감정 분석 모델을 구현하여 텍스트의 뒤에있는 감정을 결정하는 것입니다.

의견이나 질문이 있습니까? 트위터에서 저에게 연락하십시오.

python -m nltk.downloader all
로그인 후 복사
로그인 후 복사
파이썬 (FAQ)을 사용한 자연 언어 처리에 대한 자주 묻는 질문

NLP (Natural Language Processing)와 자연어 이해 (NLU)의 주요 차이점은 무엇입니까?

자연 언어 처리 (NLP)와 자연어 이해 (NLU)는 종종 혼란스러워하는 인공 지능의 두 가지 하위 필드입니다. NLP는 자연어를 사용하여 컴퓨터와 상호 작용하는 모든 방법을 포함하는 광범위한 개념입니다. 여기에는 인간 언어를 이해하고 생성하는 것이 포함됩니다. 반면에 NLU는 측면 이해를 전문으로하는 NLP의 하위 집합입니다. 알고리즘을 사용하여 인간 언어를 귀중한 방식으로 이해하고 해석하는 것이 포함됩니다.

파이썬에서 NLP 모델의 정확도를 향상시키는 방법은 무엇입니까?

NLP 모델의 정확도 향상에는 다양한 전략이 필요합니다. 먼저, 더 많은 교육 데이터를 사용할 수 있습니다. 모델의 학습 데이터가 많을수록 성능이 향상됩니다. 둘째, 다른 NLP 기술을 사용하는 것을 고려하십시오. 예를 들어, Word (Bow) 백을 사용하는 경우 WordFrequency Inverse Document Frequency (TF-IDF) 또는 Word2Vec을 사용해보십시오. 마지막으로, 모델의 매개 변수를 미세 조정하면 상당한 개선이 발생할 수 있습니다.

현실 세계에서 NLP의 일반적인 응용은 무엇입니까?

NLP는 실제 세계에서 광범위한 응용 프로그램을 가지고 있습니다. 여기에는 언어 번역, 감정 분석, 챗봇, Siri 및 Alexa와 같은 음성 보조원, 텍스트 요약 및 이메일 스팸 탐지가 포함됩니다.

NLP의 어휘화는 어떻게 작동합니까?

단어 변태는 텍스트를 단일 단어 나 단어 요소로 분해하는 과정입니다. 모델이 텍스트를 이해하고 분석 할 수 있기 때문에 NLP의 핵심 단계입니다. 파이썬에서는 NLTK 라이브러리의

함수를 사용하여 어휘화를 수행 할 수 있습니다.

NLP에서 중지 단어의 역할은 무엇입니까?

중지 단어는 의미있는 정보가 많이 포함되지 않기 때문에 NLP의 전처리 단계에서 종종 필터링되는 일반적인 단어입니다. 예는 "is", "the", "및"등이 있습니다. 이 단어를 제거하면 NLP 모델의 성능을 향상시키는 데 도움이 될 수 있습니다.

NLP에서 여러 언어를 처리하는 방법은 무엇입니까? word_tokenize 문법, 구문 및 어휘의 차이로 인해 NLP에서 여러 언어를 처분하는 것은 어려울 수 있습니다. 그러나 Python의 NLTK 라이브러리는 여러 언어를 지원합니다. 와 같은 언어 탐지 라이브러리를 사용하여 텍스트의 언어를 식별 한 다음 처리 할 수 ​​있습니다.

NLP에서 줄기 추출 및 어휘 복원이란 무엇입니까?

줄기 추출 및 형태 학적 복원은 단어를 줄기 또는 뿌리 형태로 단순화하는 데 사용되는 기술입니다. 그들 사이의 주요 차이점은 줄기 추출이 종종 존재하지 않는 단어를 생성하는 반면, 단어 형태 복원 원리는 단어를 언어 적으로 올바른 루트 형식으로 줄인다는 것입니다.

감정 분석에 NLP를 사용하는 방법은 무엇입니까?

정서적 분석에는 본문에 표현 된 감정을 결정하는 것이 포함됩니다. 이것은 다양한 NLP 기술을 사용하여 수행 할 수 있습니다. 예를 들어, Python의 TextBlob 라이브러리를 사용하여 감정 분석을 쉽게 수행 할 수 있습니다.

NLP의 N- 메타 구문은 무엇입니까?

Metagram은 주어진 텍스트 또는 음성 샘플에서 연속적인 항목의 연속 순서입니다. 이들은 순서대로 다음 항목을 예측하기 위해 NLP에 사용됩니다. 예를 들어, 이진 문법 (n = 2)에서는 분석 또는 예측을 위해 단어 쌍을 고려합니다.

텍스트 분류에 NLP를 사용하는 방법은 무엇입니까?

텍스트 분류에는 텍스트를 사전 정의 된 범주로 분류하는 것이 포함됩니다. 이것은 다양한 NLP 기술과 기계 학습 알고리즘을 사용하여 수행 할 수 있습니다. 예를 들어, 기능 추출을 위해 단어 또는 TF-IDF 백을 사용한 다음 분류를 위해 이러한 기능을 기계 학습 모델에 입력 할 수 있습니다. langdetect

위 내용은 파이썬에서 자연 언어 처리를 시작합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿