편집

다음을 통해 공유


자연어 처리 기술

Azure AI 서비스
Azure Databricks
Azure HDInsight
Azure Synapse Analytics

NLP(자연어 처리)에는 감정 분석, 토픽 검색, 언어 감지, 핵심 구 추출 및 문서 분류와 같은 많은 애플리케이션이 있습니다.

특히 NLP를 사용하여 다음을 수행할 수 있습니다.

  • 예를 들어 문서를 중요한 또는 스팸으로 레이블 지정하여 분류합니다.
  • NLP 출력을 사용하여 후속 처리 또는 검색을 수행합니다.
  • 문서에서 엔터티를 식별하여 텍스트를 요약합니다.
  • 식별된 엔터티를 활용하여 키워드를 사용하여 문서에 태그를 지정합니다.
  • 태그 지정을 통해 콘텐츠 기반 검색 및 검색을 수행합니다.
  • 식별된 엔터티를 사용하여 문서의 주요 항목을 요약합니다.
  • 검색된 토픽을 활용하여 탐색할 문서를 분류합니다.
  • 선택한 토픽을 기반으로 관련 문서를 열거합니다.
  • 텍스트 감정을 평가하여 긍정적 또는 부정적 톤을 이해합니다.

기술의 발전으로 NLP는 텍스트 데이터를 분류하고 분석하는 데 사용할 수 있을 뿐만 아니라 다양한 도메인에서 해석 가능한 AI 기능을 향상시킬 수 있습니다. LLM(큰 언어 모델)의 통합은 NLP의 기능을 크게 향상시킵니다. GPT 및 BERT와 같은 LLM은 인간과 유사한 상황에 맞는 인식 텍스트를 생성하여 복잡한 언어 처리 작업에 매우 효과적입니다. 특히 Databricks의 Dolly 2.0같은 모델에서 대화 시스템과 고객 참여를 개선하는 광범위한 인지 작업을 처리하여 기존 NLP 기술을 보완합니다.

언어 모델과 NLP 간의 관계 및 차이점

NLP는 인간의 언어를 처리하기 위한 다양한 기술을 포괄하는 포괄적인 분야입니다. 반면, 언어 모델은 NLP 내의 특정 하위 집합으로, 고급 언어 작업을 수행하기 위한 딥 러닝에 초점을 맞춥니다. 언어 모델은 고급 텍스트 생성 및 이해 기능을 제공하여 NLP를 향상하지만 NLP와는 동의어가 아닙니다. 대신, 보다 정교한 언어 처리를 가능하게 하는 광범위한 NLP 도메인 내에서 강력한 도구 역할을 합니다.

메모

이 문서에서는 NLP에 중점을 둡니다. NLP와 언어 모델 간의 관계는 언어 모델이 뛰어난 언어 이해 및 생성 기능을 통해 NLP 프로세스를 향상시킨다는 것을 보여줍니다.

Apache®, Apache Spark 및 불꽃 로고는 미국 및/또는 기타 국가에서 Apache Software Foundation의 등록 상표 또는 상표입니다. 이러한 표시는 Apache Software Foundation에 의해 묵시적으로 인증되지 않습니다.

잠재적인 사용 사례

사용자 지정 NLP를 활용할 수 있는 비즈니스 시나리오는 다음과 같습니다.

  • 금융, 의료, 소매, 정부 및 기타 부문에서 수기로 작성하거나 컴퓨터로 만든 문서에 대한 문서 인텔리전스.
  • NER(이름 엔터티 인식), 분류, 요약 및 관계 추출과 같은 텍스트 처리를 위한 업계에 구애받지 않는 NLP 작업. 이러한 작업은 텍스트 및 구조화되지 않은 데이터와 같은 문서 정보를 검색, 식별 및 분석하는 프로세스를 자동화합니다. 이러한 작업의 예로는 위험 계층화 모델, 온톨로지 분류 및 소매 요약이 있습니다.
  • 의미 체계 검색을 위한 정보 검색 및 지식 그래프 만들기 이 기능을 사용하면 약물 발견 및 임상 시험을 지원하는 의료 지식 그래프를 만들 수 있습니다.
  • 소매, 금융, 여행 및 기타 산업 전반의 고객 지향 애플리케이션에서 대화형 AI 시스템을 위한 텍스트 번역.
  • 특히 브랜드 인식 및 고객 피드백 분석을 모니터링하기 위해 분석에서 감정 및 향상된 감정 인텔리전스를 제공합니다.
  • 자동화된 보고서 생성. 구조화된 데이터 입력에서 포괄적인 텍스트 보고서를 합성하고 생성하여 철저한 설명서가 필요한 재무 및 규정 준수와 같은 분야를 지원합니다.
  • 음성 인식 및 자연스러운 대화 기능을 위해 NLP를 통합하여 IoT 및 스마트 디바이스 애플리케이션에서 사용자 상호 작용을 향상시키는 음성 활성화 인터페이스입니다.
  • 다양한 대상 그룹 이해 수준에 맞게 언어 출력을 동적으로 조정하는 적응 언어 모델이며, 이는 교육 콘텐츠 및 접근성 향상에 매우 중요합니다.
  • 사이버 보안 텍스트 분석을 통해 실시간으로 통신 패턴 및 언어 사용량을 분석하여 디지털 통신에서 잠재적인 보안 위협을 식별하여 피싱 시도 또는 잘못된 정보의 검색을 개선합니다.

사용자 지정된 NLP 프레임워크로서의 Apache Spark

Apache Spark는 메모리 내 처리를 통해 빅 데이터 분석 애플리케이션의 성능을 향상시키는 강력한 병렬 처리 프레임워크입니다. Azure Synapse Analytics, Azure HDInsight, Azure Databricks 계속해서 Spark의 처리 기능에 대한 강력한 액세스를 제공하여 대규모 데이터 작업의 원활한 실행을 보장합니다.

사용자 지정된 NLP 워크로드의 경우 Spark NLP는 방대한 양의 텍스트를 처리할 수 있는 효율적인 프레임워크로 남아 있습니다. 이 오픈 소스 라이브러리는 Python, Java 및 Scala 라이브러리를 통해 광범위한 기능을 제공합니다. 이 라이브러리는 spaCy 및 NLTK와 같은 저명한 NLP 라이브러리에 있는 정교함을 제공합니다. Spark NLP에는 맞춤법 검사, 감정 분석 및 문서 분류와 같은 고급 기능이 포함되어 있어 최첨단 정확도와 확장성을 일관되게 보장합니다.

엔터티 인식과 같은 NLP 기능 영역을 보여 주는 다이어그램. 다양한 상자에 N L P 주석, 모델 및 지원되는 언어가 나열됩니다.

최근 공개 벤치마크는 Spark NLP의 성능을 강조하여 다른 라이브러리에 비해 상당한 속도 향상을 보여주면서 사용자 지정 모델 학습에 대한 비교 가능한 정확도를 유지합니다. 특히, Llama-2 모델과 OpenAI Whisper의 통합은 대화형 인터페이스와 다국어 음성 인식을 향상시켜 최적화된 처리 기능에서 상당한 진전을 이루었습니다.

특히 Spark NLP는 분산 Spark 클러스터를 효과적으로 활용하여 데이터 프레임에서 직접 작동하는 Spark ML의 네이티브 확장으로 작동합니다. 이 통합은 클러스터에서 향상된 성능 향상을 지원하여 문서 분류 및 위험 예측과 같은 작업을 위한 통합 NLP 및 기계 학습 파이프라인을 쉽게 만들 수 있습니다. MPNet 포함 및 광범위한 ONNX의 도입으로 이러한 기능이 더욱 보강되어 정확하고 컨텍스트 인식 처리가 가능합니다.

성능상의 이점 외에도 Spark NLP는 확장되는 NLP 작업 배열에서 최첨단 정확도를 제공합니다. 라이브러리에는 명명된 엔터티 인식, 문서 분류, 감정 감지 등에 대한 미리 빌드된 딥 러닝 모델이 함께 제공됩니다. 기능이 풍부한 디자인에는 단어, 청크, 문장 및 문서 포함을 지원하는 미리 학습된 언어 모델이 포함되어 있습니다.

CPU, GPU 및 최신 Intel Xeon 칩에 최적화된 빌드를 통해 Spark NLP의 인프라는 확장성을 위해 설계되어 학습 및 유추 프로세스가 Spark 클러스터를 완전히 활용할 수 있도록 합니다. 이렇게 하면 다양한 환경 및 애플리케이션에서 NLP 작업을 효율적으로 처리하여 NLP 혁신의 최전선에 서게 됩니다.

과제

  • 처리 리소스: 자유 형식 텍스트 문서 컬렉션을 처리하려면 상당한 양의 계산 리소스가 필요하며 처리도 시간이 많이 걸립니다. 이러한 종류의 처리에는 종종 GPU 컴퓨팅 배포가 포함됩니다. 양자화를 지원하는 Llama-2와 같은 Spark NLP 아키텍처의 최적화와 같은 최근의 발전은 이러한 집약적인 작업을 간소화하여 리소스 할당을 보다 효율적으로 만드는 데 도움이 됩니다.

  • 표준화 문제: 표준화된 문서 형식이 없으면 자유 형식 텍스트 처리를 사용하여 문서에서 특정 사실을 추출할 때 일관되게 정확한 결과를 얻기 어려울 수 있습니다. 예를 들어 다양한 송장에서 송장 번호와 날짜를 추출하면 문제가 발생합니다. M2M100과 같은 적응 가능한 NLP 모델의 통합으로 여러 언어 및 형식에서 처리 정확도가 향상되어 결과의 일관성이 향상되었습니다.

  • 데이터 다양성 및 복잡성: 다양한 문서 구조 및 언어적 뉘앙스 해결은 여전히 복잡합니다. MPNet 포함과 같은 혁신은 향상된 컨텍스트 이해를 제공하여 다양한 텍스트 형식을 보다 직관적으로 처리하고 전반적인 데이터 처리 안정성을 향상시킵니다.

주요 선택 조건

Azure에서 Azure Databricks, Microsoft Fabric 및 Azure HDInsight와 같은 Spark 서비스는 Spark NLP와 함께 사용할 때 NLP 기능을 제공합니다. Azure AI 서비스는 NLP 기능에 대한 또 다른 옵션입니다. 사용할 서비스를 결정하려면 다음 질문을 고려합니다.

  • 미리 작성된 모델 또는 미리 트레이닝된 모델을 사용하려고 하십니까? 그렇다면 Azure AI 서비스에서 제공하는 API를 사용하거나 Spark NLP를 통해 선택한 모델을 다운로드하는 것이 좋습니다. 이제 향상된 기능을 위해 Llama-2 및 MPNet과 같은 고급 모델이 포함됩니다.

  • 대량의 텍스트 데이터에 대해 사용자 지정 모델을 학습해야 하나요? 그렇다면 Spark NLP와 함께 Azure Databricks, Microsoft Fabric 또는 Azure HDInsight를 사용하는 것이 좋습니다. 이러한 플랫폼은 광범위한 모델 학습에 필요한 계산 능력과 유연성을 제공합니다.

  • 토큰화, 형태소 분석, 기본형 찾기 및 TF/IDF(용어 빈도/역 문서 빈도) 같은 기본적인 NLP 기능이 필요한가요? 그렇다면 Spark NLP와 함께 Azure Databricks, Microsoft Fabric 또는 Azure HDInsight를 사용하는 것이 좋습니다. 또는 선택한 처리 도구에서 오픈 소스 소프트웨어 라이브러리를 사용합니다.

  • 엔터티 및 의도 식별, 토픽 감지, 맞춤법 검사 또는 감성 분석 같은 간단한 고급 NLP 기능이 필요한가요? 그렇다면 Azure AI services에서 제공하는 API를 사용하는 것이 좋습니다. 또는 Spark NLP를 통해 선택한 모델을 다운로드하여 이러한 작업에 미리 빌드된 함수를 활용합니다.

기능 매트릭스

다음 표에서는 NLP 서비스의 기능에서 주요 차이점을 요약합니다.

일반 기능

기능 Spark NLP를 사용하는 Spark 서비스(Azure Databricks, Microsoft Fabric, Azure HDInsight) Azure AI 서비스
미리 학습된 모델을 서비스로 제공합니다.
REST API
프로그래밍 기능 Python, Scala 지원되는 언어는 추가 리소스를 참조하세요.
빅 데이터 집합 및 대형 문서의 처리를 지원합니다.

하위 수준 NLP 기능

Annotators의 기능

기능 Spark NLP를 사용하는 Spark 서비스(Azure Databricks, Microsoft Fabric, Azure HDInsight) Azure AI 서비스
문장 감지기
심층 문장 감지기
토크나이저
N-gram 생성기
단어 구분
형태소 분석기
기본형 분석기
음성 부분 태그 지정
종속성 파서
Translation
중지 단어 클리너
맞춤법 수정
노멀라이저
텍스트 검사기
TF/IDF
정규식 검사기 CLU(Conversational Language Understanding)에 포함됨
날짜 일치자 DateTime 인식기를 통해 CLU에서 가능
청커(Chunker)

메모

LUIS(Microsoft Language Understanding)는 2025년 10월 1일에 사용 중지됩니다. 기존 LUIS 애플리케이션은 언어 이해 기능을 향상시키고 새로운 기능을 제공하는 Azure AI Services for Language의 기능인 CLU(Conversational Language Understanding)로 마이그레이션하는 것이 좋습니다.

높은 수준의 NLP 기능

기능 Spark NLP를 사용하는 Spark 서비스(Azure Databricks, Microsoft Fabric, Azure HDInsight) Azure AI 서비스
맞춤법 검사
요약
질문 답변
감정 감지
감정 감지 오피니언 마이닝 지원
토큰 분류 예, 사용자 지정 모델을 통해
텍스트 분류 예, 사용자 지정 모델을 통해
텍스트 표현
NER 예- 텍스트 분석은 NER 집합을 제공하고 사용자 지정 모델은 엔터티 인식에 있습니다.
엔터티 인식 예, 사용자 지정 모델을 통해
언어 감지
영어 이외의 다국어 지원 예, 200개 이상의 언어를 지원합니다. 예, 97개 이상의 언어를 지원합니다.

Azure에서 Spark NLP 설정

Spark NLP를 설치하려면 다음 코드를 사용하되 <version>을 최신 버전 번호로 바꾸세요. 자세한 내용은 Spark NLP 설명서를 참조하세요.

# Install Spark NLP from PyPI.
pip install spark-nlp==<version>

# Install Spark NLP from Anacodna or Conda.
conda install -c johnsnowlabs spark-nlp

# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.nlp:spark-nlp_<version>

# Load Spark NLP as an external JAR after compiling and building Spark NLP by using sbt assembly.
spark-shell --jars spark-nlp-assembly-3 <version>.jar

NLP 파이프라인 개발

NLP 파이프라인의 실행 순서에 대해 Spark NLP는 기존 Spark ML 기계 학습 모델과 동일한 개발 개념을 따르고 특수한 NLP 기술을 적용합니다.

문서 어셈블리, 문장 검색, 토큰화, 정규화 및 단어 포함과 같은 NLP 파이프라인 단계를 보여 주는 다이어그램.

Spark NLP 파이프라인의 핵심 구성 요소는 다음과 같습니다.

  • DocumentAssembler: Spark NLP에서 처리할 수 있는 형식으로 변환하여 데이터를 준비하는 변환기입니다. 이 단계는 모든 Spark NLP 파이프라인의 진입점입니다. DocumentAssembler는 기본적으로 꺼져 있는 String사용하여 텍스트를 전처리하는 옵션을 사용하여 Array[String] 열 또는 setCleanupMode읽습니다.

  • SentenceDetector: 미리 정의된 방법을 사용하여 문장 경계를 식별하는 주석입니다. 검색된 각 문장은 Array반환하거나, explodeSentences true로 설정된 경우 별도의 행에서 반환할 수 있습니다.

  • Tokenizer: 원시 텍스트를 개별 토큰(단어, 숫자 및 기호)으로 나누어 이를 TokenizedSentence출력하는 주석입니다. Tokenizer는 적합하지 않으며 RuleFactory 내에서 입력 구성을 사용하여 토큰화 규칙을 만듭니다. 기본값이 부족한 경우 사용자 지정 규칙을 추가할 수 있습니다.

  • Normalizer: 토큰 구체화 작업을 수행하는 주석입니다. Normalizer는 정규식 및 사전 변환을 적용하여 텍스트를 정리하고 불필요한 문자를 제거합니다.

  • WordEmbeddings: 토큰을 벡터에 매핑하는 조회 주석으로 의미 체계 처리를 용이하게 합니다. 각 줄에 토큰과 해당 벡터가 포함된 setStoragePath사용하여 사용자 지정 포함 사전을 공백으로 구분하여 지정할 수 있습니다. 해결되지 않은 토큰은 기본적으로 벡터 0으로 설정됩니다.

Spark NLP는 기계 학습 수명 주기를 관리하는 오픈 소스 플랫폼인 MLflow기본 지원을 통해 Spark MLlib 파이프라인을 활용합니다. MLflow의 주요 구성 요소는 다음과 같습니다.

  • MLflow 추적: 실험적 실행을 기록하고 결과를 분석하기 위한 강력한 쿼리 기능을 제공합니다.

  • MLflow 프로젝트: 다양한 플랫폼에서 데이터 과학 코드를 실행하여 이식성과 재현성을 향상합니다.

  • MLflow 모델: 일관된 프레임워크를 통해 다양한 환경에서 다양한 모델 배포를 지원합니다.

  • 모델 레지스트리: 포괄적인 모델 관리를 제공하여 간소화된 액세스 및 배포를 위해 버전을 중앙에 저장하여 프로덕션 준비 상태를 용이하게 합니다.

MLflow는 Azure Databricks와 같은 플랫폼과 통합되지만 다른 Spark 기반 환경에 설치하여 실험을 관리하고 추적할 수도 있습니다. 이러한 통합을 통해 MLflow 모델 레지스트리를 사용하여 모델을 프로덕션 용도로 사용할 수 있게 하여 배포 프로세스를 간소화하고 모델 거버넌스를 유지 관리할 수 있습니다.

Spark NLP와 함께 MLflow를 사용하면 NLP 파이프라인의 효율적인 관리 및 배포를 보장하고 확장성 및 통합에 대한 최신 요구 사항을 해결하는 동시에 단어 포함 및 대규모 언어 모델 적응과 같은 고급 기술을 지원할 수 있습니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

주요 작성자:

다음 단계