AWS에서 Python까지 3개의 자연 언어 처리 도구

사진은 Eric KrullUnsplash에서 찍었다.
문서를 해석하고 처리하면 회사의 거의 모든 부서에 많은 가치를 제공할 수 있다.이것은 자연언어처리(NLP)가 유용하게 사용할 수 있는 많은 용례 중의 하나다.
NLP는 메신저 로봇과 Gmail이 전자메일에 무엇을 쓸지 예측하는 데만 적용되는 것이 아니다.또한 NLP를 사용하여 문서를 자동으로 분해, 분류 및 분석할 수 있습니다.예를 들어, 당신의 회사가 당신의 모든 계약을 통해 관계를 찾기를 원하거나, 블로그 게시물이나 영화 시나리오를 분류하려고 시도할 수도 있습니다.
이것이 바로 어떤 형식의 NLP 처리를 사용하는 것이 매우 편리한 곳이다.그것은 문서의 주제, 중복 주제, 대명사 등을 분해하는 데 도움을 줄 수 있다.
지금의 문제는 네가 어떻게 했느냐는 것이다.
문장, 단어, 의미, 정서 등을 분해하기 위해 사용자 정의 신경 네트워크를 처음부터 개발해야 합니까?
이것은 최선의 해결 방안이 아닐 수도 있다. 적어도 최초의 MVP에게는 그렇지 않다.반대로 문서를 분해하는 데 도움을 줄 수 있는 라이브러리와 클라우드 서비스가 많다.
본고에서 우리는 세 가지 옵션을 소개하고 Python을 사용하여 문서를 분석하는 방법을 소개할 것이다.AWS, GCP 자연 언어 및 TextBlob을 연구합니다.

이해하다
AWS Comprehend는 AWS가 제공하는 수많은 클라우드 서비스 중 하나로 귀하의 팀은 신경 네트워크와 다른 모델을 이용할 수 있고 자신의 모델을 구축할 필요가 없습니다.
이 예에서 AWS Understand는 NLP API로서 텍스트 처리를 매우 간단하게 할 수 있습니다.
AWS의 장점은 문서에 포함된 엔티티, 구문, 구문 등의 개념을 자동으로 분해한다는 점입니다.엔티티는 특히 문서에서 참조하는 이벤트, 조직, 인원 또는 제품을 분해하려는 경우에 유용합니다.
명사, 동사, 기타 어류를 쉽게 분해할 수 있는 파이톤 라이브러리가 많다.그러나 이 라이브러리의 구축은 이 명사들의 분류를 정확하게 표시하기 위한 것이 아니다.
예를 하나 봅시다.
본 문서의 모든 코드 예제에는 다음 텍스트가 사용됩니다.
If you have ever worked at a FAANG or even technology-driven start-up like Instacart, then you have probably realized that data drives everything.

To the point that analysts, PMs, and product managers are starting to understand SQL out of necessity. SQL is the language of data and if you want to interact with data, you need to know it.

Do you want to easily figure out the average amount of time a user spends on your product, but don’t want to wait for an analyst? You better figure out how to run a query.

This ability to run queries easily is also driven by the fact that SQL editors no longer need to be installed. With cloud-based data, warehouses come SaaS SQL editors. We will talk about a SaaS SQL editor more in the next section.

However, the importance here is you don’t have to wait 30 minutes to install and editor and deal with all the hassle of managing it.

Now you can just go to a URL and access your team’s data warehouse. This has allowed anyone in the company easy access to their data.

We know both from anecdotal experience as well as the fact that indeed.com’s tracking in 2019 has shown a steady requirement for SQL skill sets for the past 5 years.
이 텍스트를 예로 들면 다음 코드를 통해 실행하며 변수는 일반 텍스트입니다.

from io import StringIO
import requests
import boto3
import sys


S3_API_PUBLIC = os.environ.get("PUBLIC_KEY")
S3_API_SECRET = os.environ.get("SECRET_KEY")


client_comprehend = boto3.client(
   'comprehend',
   region_name = 'eu-west-1',
   aws_access_key_id = S3_API_PUBLIC,
   aws_secret_access_key = S3_API_SECRET
)
plain_text = # PUT TEST TEXT HERE

dominant_language_response = client_comprehend.detect_dominant_language(
       Text=plain_text)

dominant_language = sorted(dominant_language_response['Languages'], key=lambda k: k['LanguageCode'])[0]['LanguageCode']


if dominant_language not in ['en','es']:
           dominant_language = 'en'

response = client_comprehend.detect_entities(
           Text=plain_text,
           LanguageCode=dominant_language)
print(response)

AWS 종합 출력
위의 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.이것은 단축판이다.하지만 출력을 볼 수 있습니다.예를 들어 QUANTITY는 30분과 5년으로 표시되어 있다. 이 두 가지는 모두 시간량이다.
{
   "Entities":[
      {
         "Score":0.9316830039024353,
         "Type":"ORGANIZATION",
         "Text":"FAANG",
         "BeginOffset":30,
         "EndOffset":35
      },
      {
         "Score":0.7218282222747803,
         "Type":"TITLE",
         "Text":"Instacart",
         "BeginOffset":76,
         "EndOffset":85
      },
      {
         "Score":0.9762992262840271,
         "Type":"TITLE",
         "Text":"SQL",
         "BeginOffset":581,
         "EndOffset":584
      },
      {
         "Score":0.997804582118988,
         "Type":"QUANTITY",
         "Text":"30 minutes",
         "BeginOffset":801,
         "EndOffset":811
      },
      {
         "Score":0.5189864635467529,
         "Type":"ORGANIZATION",
         "Text":"indeed.com",
         "BeginOffset":1079,
         "EndOffset":1089
      },
      {
         "Score":0.9985176920890808,
         "Type":"DATE",
         "Text":"2019",
         "BeginOffset":1104,
         "EndOffset":1108
      },
      {
         "Score":0.6815792322158813,
         "Type":"QUANTITY",
         "Text":"5 years",
         "BeginOffset":1172,
         "EndOffset":1179
      }
]
     }
보시다시피 AWS는 조직과 다른 실체를 분해하는 데 매우 잘하고 있습니다.마찬가지로 그것은 실체를 분해하는 데만 국한된 것이 아니다.그러나 문서 간의 관계를 찾으려고 시도할 때 이 기능은 더욱 유용한 기능 중 하나이다.

자연 언어
구글은 Cloud Natural Language라는 아주 유사한 NLP 클라우드 서비스를 만들었다.
그것은 실체 검측, 사용자 정의 실체 검측, 내용 분류 등 많은 유사한 기능을 제공했다.
GCP 버전의 자연스러운 언어로 문자열을 처리합니다.다음 코드는 GCP를 사용하여 엔티티를 테스트하는 예제를 보여 줍니다.

from googleapiclient import discovery
import httplib2
from oauth2client.client import GoogleCredentials

DISCOVERY_URL = ('https://{api}.googleapis.com/'
                '$discovery/rest?version={apiVersion}')

def gcp_nlp_example():

    http = httplib2.Http()

    credentials = GoogleCredentials.get_application_default().create_scoped(
     ['https://www.googleapis.com/auth/cloud-platform'])

    http=httplib2.Http()
    credentials.authorize(http)

    service = discovery.build('language', 'v1beta1',
                           http=http, discoveryServiceUrl=DISCOVERY_URL)

    service_request = service.documents().analyzeEntities(
    body={
     'document': {
        'type': 'PLAIN_TEXT',
        'content': # PUT TEXT HERE
    }
   })

    response = service_request.execute()
    print(response)
    return 0

gcp_nlp_example()

자연 언어 출력
GCP 출력은 AWS 출력과 유사합니다.그러나 GCP는 이와 유사한 단어를 분해하고 원본 단어와 관련된 메타데이터를 찾으려고 시도합니다.
//sample

{
   "entities":[
      {
         "name":"SaaS SQL",
         "type":"OTHER",
         "metadata":{
            "mid":"/m/075st",
            "wikipedia_url":"https://en.wikipedia.org/wiki/SQL"
         },
         "salience":0.36921546,
         "mentions":[
            {
               "text":{
                  "content":"SQL",
                  "beginOffset":-1
               },
               "type":"COMMON"
            },
            {
               "text":{
                  "content":"SQL",
                  "beginOffset":-1
               },
               "type":"PROPER"
            },
            {
               "text":{
                  "content":"language",
                  "beginOffset":-1
               },
               "type":"COMMON"
            }
           ]
      }

TextBlob 및 Python
클라우드 서비스 공급자를 사용하는 것 외에 문서에서 정보를 추출할 수 있는 라이브러리도 있다.특히 파이톤TextBlob library은 매우 유용하다.개인적으로 이것은 내가 NLP 파이프를 개발하는 것을 배운 첫 번째 라이브러리이다.
이것은 아직 완벽하지 못하다.그러나 그것은 문서를 해석하는 데 매우 잘한다.
AWS 이해와 GCP 자연 언어, 감정 분석 등 음성 분석을 제공한다.그러나 그 자체로 존재하는 실체를 분류하지 않는다.
그것은 여전히 기본 단어의 유형을 분해하는 좋은 도구이다.
이 라이브러리를 사용하면 개발자는 동사, 명사 또는 다른 어류를 분해한 후에 패턴을 찾을 수 있다.무슨 단어를 자주 씁니까?어떤 특정한 단어나 단어가 독자를 끌어들입니까?어떤 단어가 다른 명사와 같습니까?
최종 목표에 따라 당신은 여전히 많은 질문에 대답하고 제품을 개발할 수 있다.
TextBlob 라이브러리를 구현하는 것은 매우 간단합니다.
이 경우 API에 연결할 필요가 없습니다.라이브러리를 가져오고 몇 개의 클래스를 호출하기만 하면 됩니다.
코드는 다음과 같습니다.
from textblob import TextBlob
t=#PUT YOUR TEXT HERE
blob = TextBlob(t)
for i in blob.noun_phrases:
    print(i)

TextBlob 출력
다음은 TextBlob의 출력입니다.AWS와 GCP를 사용하여 추출한 비슷한 단어가 많이 보일 것이다.그러나 API에는 추가적인 레이블과 메타데이터가 모두 포함되어 있지 않습니다.이것이 바로 당신이 AWS 및 GCP에서 구매한 것(그리고 기타 유용한 기능들)입니다.
faang
technology-driven start-up
instacart
pms
product managers
sql
sql
average amount
don ’ t
query.this ability
sql
saas sql
saas sql
don ’ t
url
team ’ s data warehouse
easy access
anecdotal experience
indeed.com ’ s
steady requirement
Sql
이를 바탕으로 문서나 원본 텍스트에 NLP를 사용하는 세 가지 다른 방법을 소개했다.

NLP가 꼭 어려운 것은 아니다. 좀 어렵다
NLP는 문서를 처리하고 분류하며 관계를 찾는 데 도움을 줄 수 있는 좋은 도구다.AWS와 GCP 덕분에 기술 함량이 낮은 개발자들은 NLP 기능을 이용할 수 있다.
그럼에도 불구하고 NLP는 어려운 점이 많다.예를 들어 대화와 상하문을 추적하는 데 능한 채팅 로봇을 개발해야 하는 것은 쉬운 일이 아니다.사실 이 점을 포괄하는 위대한 시리즈가 이곳 매체Adam Geitgey에 있다.너는 문장Natural Language Processing Is Fun.에서 더 많은 내용을 읽을 수 있다
다음 NLP 프로젝트에 행운을 빕니다.
데이터 과학과 데이터 공학에 관한 더 많은 내용을 읽고 싶다면다음 기사와 동영상을 보십시오.
How To Analyze Data Without Complicated ETLs For Data Scientists
What Is A Data Warehouse And Why Use It
Kafka Vs RabbitMQ
SQL Best Practices --- Designing An ETL Video
5 Great Libraries To Manage Big Data With Python

좋은 웹페이지 즐겨찾기