brunch

You can make anything
by writing

C.S.Lewis

by 이종우 Peter Lee Nov 19. 2018

[번역] 자연어 처리에 대한 쉬운 소개

An easy introduction to Natural Language

원본 URL :https://towardsdatascience.com/an-easy-introduction-to-natural-language-processing-b1e2801291c1

자연어 처리에 대한 쉬운 소개

컴퓨터를 사용하여 인간 언어 이해

컴퓨터는 데이터베이스 테이블 및 재무 기록과 같은 표준화되고 구조화 된 데이터로 작업하는 데 적합합니다. 그들은 우리가 할 수있는 것보다 훨씬 빨리 데이터를 처리 할 수 있습니다. 그러나 우리 인간은 "구조화 된 데이터"로 의사 소통을하지 않으며 바이너리로도 이야기하지 않습니다! Google은 구조화되지 않은 데이터의 한 형태 인 단어를 사용하여 커뮤니케이션 합니다.

안타깝게도 컴퓨터는 구조화되지 않은 데이터를 처리 할 때 표준화 된 기술이 없기 때문에 컴퓨터를 빨아들입니다. C ++, Java 또는 Python과 같은 것을 사용하여 컴퓨터를 프로그래밍 할 때 우리는 본질적으로 컴퓨터가 작동해야하는 규칙 집합을 컴퓨터에 제공합니다. 구조화되지 않은 데이터의 경우 이러한 규칙은 매우 추상적이어서 구체적으로 정의하기가 어렵습니다.


인터넷에는 구조화되지 않은 자연어가 많이 있습니다. 때때로 Google은 당신이 찾고있는 것을 알지 못합니다!

인간 대 언어의 컴퓨터 이해

인간은 수천년 동안 일들을 쓰고 있습니다. 그 시간에 우리의 뇌는 자연 언어를 이해하는 데 엄청난 경험을 쌓았습니다. 우리가 종이에 쓰거나 인터넷상의 블로그 포스트에 글을 읽을 때, 우리 는 그것이 실제 세계에서 실제로 무엇을 의미 하는지를 이해 합니다. 우리는 그 것을 읽는 것이 빠져 나가는 감정을 느낍니다 . 우리는 실제 상황에서 어떻게 보이는지 종종 시각화합니다.

자연어 처리 ( Natural Language Processing , NLP) 는 인공 지능 의 하위 분야 로, 컴퓨터가 인간 언어를 이해하고 처리하여 인간 수준의 언어 이해에 가까워 지도록합니다. 컴퓨터는 아직 인간이하는 자연 언어에 대해 직관적으로 이해하지 못합니다. 그들은 실제로 언어가 말 하고자하는 것을 이해할 수 없습니다 . 요컨대, 컴퓨터 는 라인 사이를 읽을 수 없습니다 .

즉, 컴퓨터 학습 (ML)의 최근 발전으로 인해 컴퓨터는 자연 언어로 많은 유용한 것들을 할 수있게되었습니다. Deep Learning은 언어 번역, 의미 이해, 텍스트 요약 등의 작업을 수행하는 프로그램을 작성할 수있게 해줍니다. 이 모든 것들이 실제 가치를 더해 주므로 수동 작업 없이도 큰 텍스트 블록에 대한 계산을 쉽게 이해하고 수행 할 수 있습니다.

NLP가 어떻게 개념적으로 작동하는지에 대한 간단한 입문서부터 시작합시다. 이후에 우리는 파이썬 코드를 배우기 때문에 직접 NLP를 시작할 수 있습니다!

NLP가 어려운 이유

언어를 읽고 이해하는 과정은 처음 보이는 것보다 훨씬 복잡합니다. 현실 세계에서 텍스트의 의미 를 진정으로 이해하는 데는 많은 것들이 있습니다 . 예를 들어, 다음 텍스트가 의미하는 바는 무엇이라고 생각하십니까?

"Steph Curry가 마지막으로 좋았습니다. 그는 다른 팀을 완전히 파괴했습니다. "

인간에게는 아마도이 문장이 의미하는 바가 분명 할 것입니다. Steph Curry는 농구 선수입니다. 또는 비록 당신이 모르더라도 우리는 그가 어떤 종류의 팀 (아마도 스포츠 팀)에서 뛰는 것을 압니다. 우리가 "불"과 "파괴 된"것을 볼 때, 우리는 그것이 지난 밤에 Steph Curry가 정말로 잘 연주했고 다른 팀을 이겼음을 의미한다는 것을 압니다.

컴퓨터는 조금 더 문자 그대로 받아들이는 경향이 있습니다. 말 그대로 컴퓨터처럼 물건을 보면 우리는 "Steph Curry"를보고 대문자를 기반으로 사람, 장소 또는 다른 중요한 것을 가정합니다. 그러나 그 다음 우리는 Steph Curry가 "불 붙었다"고 안다. 어쩌면 컴퓨터가 어제 Steph Curry에 불을 피웠다 고 말할 것입니다! ... 예. 그 후, 컴퓨터는 카레 씨가 다른 팀을 물리적으로 파괴했다고 말할지도 모릅니다. 그들은이 컴퓨터에 따르면 더 이상 존재하지 않습니다 ... 훌륭한 ...


Steph Curry 말 그대로!

그러나 모든 것이 무섭지는 않습니다! Machine Learning 덕분에 우리는 자연 언어의 정보를 빠르게 추출하고 이해하기 위해 실제로 영리한 것을 할 수 있습니다! 몇 가지 간단한 파이썬 라이브러리를 사용하여 몇 줄의 코드에서이를 수행 할 수있는 방법을 살펴 보겠습니다.

파이썬 코드로 NLP하기 -

NLP 파이프 라인이 어떻게 작동하는지 살펴 보려면 Wikipedia의 다음 텍스트를 실행 예제로 사용합니다.

Amazon.com으로 일하는 Amazon.com은 1994 년 7 월 5 일 Jeff Bezos가 설립 한 미국 워싱턴 주 시애틀에 본사를 둔 미국의 전자 상거래 및 클라우드 컴퓨팅 회사이다.이 기술 거인은 세계에서 가장 큰 인터넷 소매 업체이다. 매출 및 시가 총액으로 측정되며, 총 판매량에서 Alibaba Group 다음으로 두 번째로 많습니다. amazon.com 웹 사이트는 온라인 서점으로 시작하여 나중에 비디오 다운로드 / 스트리밍, MP3 다운로드 / 스트리밍, 오디오 북 다운로드 / 스트리밍, 소프트웨어, 비디오 게임, 전자 제품, 의류, 가구, 식품, 장난감 및 보석을 판매하기 위해 다양 화되었습니다. 이 회사는 또한 킨들 전자 리더기, 소방서, 소방 TV 및 에코와 같은 소비자 가전 제품을 생산하며 세계 최대의 클라우드 인프라 서비스 제공 업체 (IaaS 및 PaaS)입니다.

약간의 의존성

먼저이 텍스트를 분석하는 데 도움이되는 몇 가지 유용한 Python NLP 라이브러리를 설치합니다.

### spaCy 설치, 일반 Python NLP lib 
pip3 설치 spacy

### spaCy 
python3 -m spacy 다운로드를 위한 영어 사전 모델 다운로드 en_core_web_lg

### 텍스쳐를 설치하기, 기본적으로 spaCy 
pip3 install textacy 에 유용한 애드온

엔티티 분석

모든 것이 설치되었으므로 텍스트의 빠른 엔티티 분석을 수행 할 수 있습니다. 엔티티 분석은 텍스트를 살펴보고 텍스트의 중요한 단어 또는 "엔터티"를 모두 식별합니다. 우리가 "중요하다"고 말할 때 우리가 실제로 의미하는 것은 실제 의미 론적 의미 또는 중요성을 지닌 단어입니다.

아래의 코드는 우리를 위해 모든 엔티티 분석을 수행합니다.


먼저 spaCy의 학습 된 ML 모델을 로드 하고 처리 할 텍스트를 초기화합니다. 엔티티 추출을 위해 본문에서 ML 모델을 실행합니다. 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Amazon.com, Inc. ORG 
Amazon ORG 
미국 NORP 
Seattle GPE 
워싱턴 GPE 
Jeff Bezos 
1994 년 7 월 5 일 날짜 
두 번째 ORDINAL 
Alibaba Group ORG 
amazon.com ORG 
Fire TV ORG 
Echo - LOC 
PaaS ORG 
Amazon ORG 
AmazonBasics ORG

3 개 문자 코드 의 텍스트 옆에이 표시 라벨 (label) 유형 우리가보고있는 엔티티의를. 우리 모델이 꽤 잘 된 것처럼 보입니다! Jeff Bezos는 실제로 사람이며, 날짜는 정확하게 식별되고, Amazon은 조직이며, 시애틀과 워싱턴은 모두 지정 학적 엔티티 (예 : 국가, 도시, 주 등)입니다. 화재 TV와 에코 (Echo)와 같은 것들이 실제로는 제품이 아니라 조직이 아니라는 점이 잘못되었다는 것이 유일한 교묘 한 문제입니다. 또한 Amazon이 " 비디오 다운로드 / 스트리밍, MP3 다운로드 / 스트리밍, 오디오 북 다운로드 / 스트리밍, 소프트웨어, 비디오 게임, 전자 제품, 의류, 가구, 식품, 장난감 및 보석 "을 판매하는 다른 것들도 놓치게 되었습니다. 커다란 자본이없는 명단에 올랐기 때문에 상당히 중요하지 않게 보였다.

전반적으로 우리 모델은 우리가 원하는 것을 성취했습니다. 우리가 수백 페이지의 텍스트로 가득 찬 거대한 문서를 가지고 있다고 상상해보십시오. 이 NLP 모델은 문서의 내용과 그 안에있는 핵심 엔터티에 대한 개요를 신속하게 제공합니다.

엔티티에서 작동 중

조금 더 적용 할 수있는 것을 시도하고 해봅시다. 위와 같은 텍스트 블록이 있지만 개인 정보 보호를 위해 모든 사람과 조직의 이름을 자동으로 제거하려고한다고 가정 해 보겠습니다. spaCy 라이브러리에는 

scrub

보고 싶지 않은 엔티티 카테고리를 제거하는



사용할 수


있는 매우 유용한


기능이 있습니다.


그 모양은 다음과 같습니다.


1994 년 7 월 5 일 [개인]에 의해 설립 된 워싱턴 주 시애틀에 본사를 둔 미국의 전자 상거래 및 클라우드 컴퓨팅 회사 인 [사설]은 세계 최대의 인터넷 소매 업체입니다. 매출 및 시가 총액을 기준으로 측정 한 결과이며, 총 판매량 기준으로 [개인] 다음으로 두 번째로 많습니다. [사설] 웹 사이트는 온라인 서점으로 시작하여 비디오 다운로드 / 스트리밍, MP3 다운로드 / 스트리밍, 오디오 북 다운로드 / 스트리밍, 소프트웨어, 비디오 게임, 전자 제품, 의류, 가구, 식품, 장난감 및 보석 등을 판매하기 위해 다양 화되었습니다. 이 회사는 또한 킨들 전자 리더기, 소방서, [사생활] 및 에코와 같은 소비자 전자 제품을 생산하며 세계 최대의 클라우드 인프라 서비스 제공 업체 (IaaS 및 [사생활])입니다.

그게 잘됐다! 이것은 실제로 엄청나게 강력한 기술입니다. 사람들 

ctrl + f

은 자신의 컴퓨터에서이 기능을


사용하여


문서의 단어를 찾아 교체합니다.


그러나 NLP를 사용하면


원시 텍스트뿐만 아니라 의미 론적 의미를 고려하여


특정 엔터티를


찾고 바꿀 수 있습니다


.

텍스트에서 정보 추출하기

이전에 설치 한 라이브러리는 

textacy

spaCy 위에 몇 가지 일반적인 NLP 정보 추출 알고리즘을 구현합니다.


그것은 단순한 상자 밖의 것들보다 더 진보 된 몇 가지 일을 할 것입니다.

그것이 구현하는 알고리즘 중 하나는 Semi-structured Statement Extraction이라고합니다. 이 알고리즘은 기본적으로 spaCy의 NLP 모델이 추출 할 수 있었던 정보 중 일부를 파싱하고이를 토대로 특정 엔티티에 대한 특정 정보를 얻을 수 있습니다. 간단히 말해, 우리는 우리가 선택한 실체에 대해 특정한 "사실"을 추출 할 수 있습니다.

코드에서 어떻게 보이는지 봅시다. 이 기사에서는 워싱턴 D.C의 Wikipedia 페이지 전체를 요약 해 보겠습니다 .


**** 워싱턴 위키 백과 페이지의 정보 **** 
1 - 진술 : (워싱턴은 미국의 수도입니다.) [4] 
1 - 사실 : 미국의 수도 [4 
2 - 진술 : (워싱턴은 6,131,977 명의 인구를 가진 워싱턴 대도시의 주요 도시이다.) [6] 
사실 - 인구는 6,131,977 명인 워싱턴 대도시의 주요 도시 [6 
3 - 진술 : (워싱턴은 주로 내셔널 몰 또는 그 주변에 위치한 많은 국립 기념물 및 박물관이 있습니다.) 
3 - 사실 : 주로 내셔널 몰 또는 그 주변에 위치한 많은 국립 기념물 및 박물관이 있습니다.

NLP 모델은 워싱턴 DC에 관한 3 가지 유용한 사실을 다음 텍스트에서 발견했습니다.

(1) 워싱턴은 미국의 수도이다.

(2) 워싱턴의 인구와 그것이 대도시라는 사실

(3) 많은 국립 기념물과 박물관

이것에 대한 가장 중요한 부분은 모두 그 텍스트 블록 내에서 정보가 가장 중요한 부분이라는 것입니다!

NLP로 더 깊이 들어가기

이것으로 NLP에 대한 간단한 소개를 마칩니다! We 've는 1 톤을 배웠다. 그러나 이것은 단지 작은 맛이었다. ..

언어 번역, 채팅 봇, 텍스트 문서에 대한보다 구체적이고 복잡한 분석 등 NLP의 훌륭한 응용 프로그램이 많이 있습니다. 이 중 많은 부분은 심층 학습, 특히 RNN (Recurrent Neural Networks) 및 LSTM (Long-Short Term Memory) 네트워크를 사용하여 수행됩니다.

더 많은 NLP를 가지고 놀고 싶다면 spaCy 문서 및 텍스트 문서 를보고 시작하는 것이 좋습니다! 파싱 된 텍스트로 작업하고 그로부터 매우 유용한 정보를 추출 할 수있는 많은 예제를 보게 될 것입니다. spaCy를 사용하면 모든 것이 빠르고 쉽고 빠져 나갈 수 있습니다. 일단 당신이 그것을 얻었 으면, 깊이있는 학습으로 더 크고 더 좋은 것을 할 때입니다!

매거진의 이전글 [번역] 개발자 생산성을 파괴하는 12 가지
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari