자연어 처리에는 감정 분석, 토픽 검색, 언어 감지, 핵심 구 추출 및 문서 분류와 같은 많은 애플리케이션이 있습니다.
특히 자연어 처리를 사용하여 다음을 수행할 수 있습니다.
- 문서를 분류합니다. 예를 들어 민감하거나 스팸으로 레이블을 지정할 수 있습니다.
- 자연어 처리 출력을 사용하여 후속 처리 또는 검색을 수행합니다.
- 문서에서 엔터티를 식별하여 텍스트를 요약합니다.
- 식별된 엔터티를 사용하여 키워드로 문서에 태그를 지정합니다.
- 태그를 사용하여 콘텐츠 기반 검색 및 검색을 수행합니다.
- 식별된 엔터티를 사용하여 문서의 주요 항목을 요약합니다.
- 검색된 토픽을 사용하여 탐색할 문서를 분류합니다.
- 선택한 토픽을 기반으로 관련 문서를 열거합니다.
- 텍스트 감정을 평가하여 긍정적 또는 부정적 톤을 이해합니다.
기술이 발전함에 따라 자연어 처리를 사용하여 텍스트 데이터를 분류하고 분석할 수 있습니다. 또한 이를 사용하여 다양한 도메인에서 해석 가능한 AI 기능을 향상시킬 수 있습니다. 언어 모델의 통합은 자연어 처리 기능을 크게 향상시킵니다. GPT 및 BERT와 같은 언어 모델은 인간과 유사한 컨텍스트 인식 텍스트를 생성할 수 있습니다. 이 기능을 사용하면 복잡한 언어 처리 작업에 매우 효과적입니다. 특히 Databricks의 Dolly 2.0같은 모델에서 대화 시스템과 고객 참여를 개선하는 광범위한 인지 작업을 처리하여 기존 자연어 처리 기술을 보완합니다.
언어 모델과 자연어 처리 간의 관계 및 차이점
자연어 처리는 인간 언어를 처리하기 위한 다양한 기술을 포괄하는 포괄적인 필드입니다. 반면 언어 모델은 자연어 처리의 특정 하위 집합입니다. 딥 러닝에 집중하여 높은 수준의 언어 작업을 수행합니다. 언어 모델은 고급 텍스트 생성 및 이해 기능을 제공하여 자연어 처리를 향상하지만 자연어 처리와는 동의어가 아닙니다. 대신 보다 정교한 언어 처리를 사용하도록 설정하여 광범위한 자연어 처리 도메인 내에서 강력한 도구 역할을 합니다.
비고
이 문서에서는 자연어 처리에 중점을 둡니다. 자연어 처리와 언어 모델 간의 관계는 언어 모델이 뛰어난 언어 이해 및 생성 기능을 통해 자연어 처리 프로세스를 향상시킨다는 것을 보여줍니다.
잠재적인 사용 사례
사용자 지정 자연어 처리를 활용할 수 있는 비즈니스 시나리오는 다음과 같습니다.
금융, 의료, 소매, 정부 및 기타 부문에서 필기 또는 기계로 만든 문서에 대한 인텔리전스를 문서화합니다.
NER(명명된 엔터티 인식), 분류, 요약 및 관계 추출과 같은 텍스트 처리를 위한 업계 독립적 자연어 처리 작업입니다.
이러한 작업은 텍스트 및 구조화되지 않은 데이터와 같은 문서 정보를 자동으로 검색, 식별 및 분석하는 데 도움이 됩니다. 이러한 작업의 예로는 위험 계층화 모델, 온톨로지 분류 및 소매 요약이 있습니다.
의미 체계 검색을 위한 정보 검색 및 지식 그래프 만들기 이 기능을 사용하면 약물 발견 및 임상 시험을 지원하는 의료 지식 그래프를 만들 수 있습니다.
소매, 금융, 여행 및 기타 산업 전반의 고객 지향 애플리케이션에서 대화형 AI 시스템을 위한 텍스트 번역.
분석에서 특히 브랜드 인식 및 고객 피드백 분석을 모니터링하기 위해 감정 및 향상된 감성 지능을 활용합니다.
자동화된 보고서 생성. 구조적 데이터 입력에서 포괄적인 텍스트 보고서를 합성하고 생성합니다. 이러한 작업은 철저한 설명서가 필요한 재무 및 규정 준수와 같은 부문에 도움이 됩니다.
음성 인식 및 자연어 대화 기능을 위한 자연어 처리를 통합하는 음성 활성화 인터페이스입니다. 이 통합은 사물 인터넷 애플리케이션 및 스마트 디바이스 애플리케이션에서 사용자 상호 작용을 향상시킵니다.
다양한 대상 그룹 이해 수준에 맞게 언어 출력을 동적으로 조정할 수 있는 적응 언어 모델입니다. 이 기능은 교육 콘텐츠 및 접근성 향상에 매우 중요합니다.
실시간 통신 패턴 및 언어 사용량을 분석하는 사이버 보안 텍스트 분석 이 분석은 디지털 통신에서 잠재적인 보안 위협을 식별하고 피싱 시도 또는 잘못된 정보의 검색을 개선하는 데 도움이 됩니다.
사용자 지정된 자연어 처리 프레임워크인 Apache Spark
Apache Spark는 메모리 내 처리를 사용하여 빅 데이터 분석 애플리케이션의 성능을 향상시키는 강력한 병렬 처리 프레임워크입니다. Azure Synapse Analytics, Azure HDInsight, 그리고 Azure Databricks는 Spark의 처리 기능에 대한 강력한 액세스를 제공합니다. 이 액세스는 대규모 데이터 작업을 원활하게 실행하는 데 도움이 됩니다.
Spark NLP는 사용자 지정된 자연어 처리 워크로드에 대해 대량의 텍스트를 처리할 수 있는 효율적인 프레임워크입니다. 이 오픈 소스 라이브러리는 Python, Java 및 Scala 라이브러리를 사용하여 광범위한 기능을 제공합니다. 이러한 라이브러리는 spaCy 및 Natural Language Toolkit과 같은 저명한 자연어 처리 라이브러리에서 찾을 수 있는 정교함을 제공합니다. Spark NLP에는 맞춤법 검사, 감정 분석 및 문서 분류와 같은 고급 기능이 포함되어 있습니다. 이러한 기능은 최적의 정확도와 확장성을 지속적으로 보장하는 데 도움이 됩니다.
엔터티 인식과 같은 자연어 처리 기능 영역을 보여 주는
Apache®, Apache Spark 및 불꽃 로고는 미국 및/또는 기타 국가에서 Apache Software Foundation의 등록 상표 또는 상표입니다. 이러한 표시의 사용은 Apache Software Foundation에 의한 보증을 암시하지 않습니다.
최근 공개 벤치마크는 Spark NLP의 성능을 강조합니다. 이러한 벤치마크는 다른 라이브러리에 비해 상당한 속도 향상을 보여 줍니다. Spark NLP는 사용자 지정 모델을 학습하기 위한 비교 가능한 정확도도 유지합니다. 특히, Llama 2 모델과 OpenAI Whisper의 통합은 대화형 인터페이스와 다국어 음성 인식을 향상시킵니다. 이러한 기능은 최적화된 처리 기능에서 상당한 진전을 보입니다.
Spark NLP는 Spark ML의 네이티브 확장으로 작동하고 데이터 프레임에서 직접 작동하는 분산 Spark 클러스터를 효과적으로 활용합니다. 이 통합은 클러스터에서 향상된 성능 향상을 지원하므로 문서 분류 및 위험 예측과 같은 작업을 위한 통합 자연어 처리 및 기계 학습 파이프라인을 쉽게 만들 수 있습니다. MPNet 임베딩과 광범위한 ONNX 지원은 이러한 기능을 더욱 강화하고, 정확하고 컨텍스트 인식 처리 기능을 제공합니다.
Spark NLP는 확장되는 자연어 처리 작업 배열에서 매우 정확한 결과를 제공합니다. 라이브러리에는 명명된 엔터티 인식, 문서 분류 및 감정 감지를 위한 미리 빌드된 딥 러닝 모델이 함께 제공됩니다. 기능이 풍부한 디자인에는 단어, 청크, 문장 및 문서 포함을 지원하는 미리 학습된 언어 모델이 포함되어 있습니다.
Spark NLP의 인프라는 CPU, GPU 및 최신 Intel Xeon 칩에 최적화된 빌드를 사용하여 확장되며, 이를 통해 학습 및 유추 프로세스가 Spark 클러스터를 완전히 활용할 수 있습니다. 이 기능은 다양한 환경 및 애플리케이션에서 자연어 처리 작업을 효율적으로 처리하는 데 도움이 됩니다.
과제들
리소스 처리: 자유 형식 텍스트 문서 컬렉션을 처리하려면 상당한 양의 계산 리소스가 필요합니다. 처리도 시간이 많이 걸립니다. 이러한 종류의 처리에는 종종 GPU 컴퓨팅 배포가 포함됩니다. Llama 2와 같은 Spark NLP 아키텍처의 최적화와 같이 양자화를 지원하는 최근의 발전은 리소스를 보다 효율적으로 할당하여 이러한 집약적인 작업을 간소화하는 데 도움이 됩니다.
표준화: 표준화된 문서 형식이 없으면 자유 형식 텍스트 처리를 사용하여 문서에서 특정 사실을 추출할 때 일관되게 정확한 결과를 얻기 어려울 수 있습니다. 예를 들어 다양한 송장에서 송장 번호와 날짜를 추출하면 문제가 발생합니다. M2M100과 같은 적응 가능한 자연어 처리 모델을 통합하면 여러 언어 및 형식에서 처리 정확도가 향상됩니다. 이렇게 정확도가 향상되어 결과가 더 일관됩니다.
데이터 다양성 및 복잡성: 다양한 문서 구조와 언어적 뉘앙스를 해결하는 것은 여전히 복잡합니다. MPNet 포함과 같은 혁신은 향상된 컨텍스트 이해를 제공하므로 다양한 텍스트 형식을 보다 직관적으로 처리하고 보다 안정적인 데이터 처리를 제공합니다.
주요 선택 조건
Azure에서 Azure Databricks, Microsoft Fabric 및 HDInsight와 같은 Spark 서비스는 Spark NLP와 함께 사용할 때 자연어 처리 기능을 제공합니다. Azure AI 서비스는 자연어 처리 기능을 위한 또 다른 옵션입니다. 사용할 서비스를 결정하는 데 도움이 되도록 다음 측면을 고려하세요.
미리 빌드되거나 미리 학습된 모델을 사용하려면 AI 서비스에서 제공하는 API를 사용하는 것이 좋습니다. 또는 향상된 기능을 위해 Llama 2 및 MPNet과 같은 고급 모델을 포함하는 Spark NLP를 통해 선택한 모델을 다운로드할 수 있습니다.
대규모 텍스트 데이터 컬렉션에 대해 사용자 지정 모델을 학습해야 하는 경우 Spark NLP와 함께 Azure Databricks, Fabric 또는 HDInsight를 사용하는 것이 좋습니다. 이러한 플랫폼은 광범위한 모델 학습에 필요한 계산 능력과 유연성을 제공합니다.
토큰화, 형태소 분석, lemmatization 및 TF/IDF(용어 빈도/역 문서 빈도)와 같은 낮은 수준의 자연어 처리 기능이 필요한 경우 Spark NLP에서 Azure Databricks, Fabric 또는 HDInsight를 사용하는 것이 좋습니다. 또는 선택한 처리 도구에서 오픈 소스 소프트웨어 라이브러리를 사용합니다.
엔터티 및 의도 식별, 토픽 검색, 맞춤법 검사 또는 감정 분석과 같은 간단하고 높은 수준의 자연어 처리 기능이 필요한 경우 AI 서비스에서 제공하는 API를 사용하는 것이 좋습니다. 또는 Spark NLP를 통해 선택한 모델을 다운로드하여 이러한 작업에 미리 빌드된 함수를 사용합니다.
기능 매트릭스
다음 표에는 자연어 처리 서비스의 기능의 주요 차이점이 요약되어 있습니다.
일반 기능
역량 | Spark NLP를 사용하는 Spark 서비스(Azure Databricks, Fabric, HDInsight) | AI 서비스 |
---|---|---|
미리 학습된 모델을 서비스로 제공합니다. | 예 | 예 |
REST API (REST 애플리케이션 프로그래밍 인터페이스) | 예 | 예 |
프로그래밍 기능 | 파이썬, 스칼라 | 지원되는 프로그래밍 언어 참조 |
대용량 데이터 세트 및 대용량 문서 처리 지원 | 예 | 아니오 |
주석 작성자의 기능 및 능력
역량 | Spark NLP를 사용하는 Spark 서비스(Azure Databricks, Fabric, HDInsight) | AI 서비스 |
---|---|---|
문장 감지기 | 예 | 아니오 |
심층 문장 감지기 | 예 | 예 |
토크나이저 | 예 | 예 |
N-gram 생성기 | 예 | 아니오 |
단어 구분 | 예 | 예 |
형태소 분석기 | 예 | 아니오 |
표제어 추출기 | 예 | 아니오 |
음성 부분 태그 지정 | 예 | 아니오 |
종속성 파서 | 예 | 아니오 |
번역 | 예 | 아니오 |
중지 단어 클리너 | 예 | 아니오 |
맞춤법 수정 | 예 | 아니오 |
노멀라이저 | 예 | 예 |
텍스트 검사기 | 예 | 아니오 |
TF/IDF | 예 | 아니오 |
정규식 검사기 | 예 | CLU(대화형 언어 이해) 기능에 포함됨 |
날짜 매칭 | 예 | DateTime 인식기를 통해 CLU에서 가능 |
청커(Chunker) | 예 | 아니오 |
비고
LUIS(Language Understanding)는 2025년 10월 1일에 사용 중지됩니다. 기존 LUIS 애플리케이션을 Azure AI Language의 CLU(대화형 언어 이해) 기능으로 마이그레이션하여 언어 이해 기능을 향상시키고 새로운 기능을 제공해야 합니다.
고급 자연어 처리 기능
역량 | Spark NLP를 사용하는 Spark 서비스(Azure Databricks, Fabric, HDInsight) | AI 서비스 |
---|---|---|
맞춤법 검사 | 예 | 아니오 |
요약 | 예 | 예 |
질문 답변 | 예 | 예 |
감정 감지 | 예 | 예 |
감정 감지 | 예 | 의견 분석 지원 |
토큰 분류 | 예 | 예, 사용자 지정 모델을 통해 |
텍스트 분류 | 예 | 예, 사용자 지정 모델을 통해 |
텍스트 표현 | 예 | 아니오 |
너 | 예 | 예, 텍스트 분석은 NER 집합을 제공합니다. |
개체 인식 | 예 | 예, 사용자 지정 모델을 통해 |
언어 감지 | 예 | 예 |
영어 이외의 다국어 지원 | 예, 200개 이상의 언어를 지원합니다. | 예, 97개 이상의 언어를 지원합니다. |
Azure에서 Spark NLP 설정
Spark NLP를 설치하려면 다음 코드를 사용하되 <version>
을 최신 버전 번호로 바꾸세요. 자세한 내용은 Spark NLP 설명서참조하세요.
# Install Spark NLP from PyPI.
pip install spark-natural language processing==<version>
# Install Spark NLP from Anaconda or Conda.
conda install -c johnsnowlabs spark-natural language processing
# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP as an external JAR after compiling and building Spark NLP by using SBT assembly.
spark-shell --jars spark-natural language processing-assembly-3 <version>.jar
자연어 처리 파이프라인 개발
Spark NLP는 자연어 처리 파이프라인을 실행할 때 기존 Spark ML 기계 학습 모델과 동일한 개발 개념을 따릅니다. 또한 특수한 자연어 처리 기술도 적용합니다.
문서 어셈블리, 문장 검색, 토큰화, 정규화 및 단어 포함과 같은 자연어 처리 파이프라인의 단계를 보여 주는
Spark NLP 파이프라인에는 다음과 같은 핵심 구성 요소가 포함됩니다.
DocumentAssembler Spark NLP에서 처리할 수 있는 형식으로 변환하여 데이터를 준비하는 변환기입니다. 이 단계는 모든 Spark NLP 파이프라인의 진입점입니다. DocumentAssembler는
String
열 또는Array[String]
열을 읽고, 기본적으로 꺼져 있는setCleanupMode
를 사용하여 텍스트를 전처리할 수 있습니다.SentenceDetector 미리 정의된 접근 방식을 사용하여 문장 경계를 식별하는 주석입니다.
Array
true로 설정된 경우 검색된 각 문장을explodeSentences
또는 별도의 행에서 반환할 수 있습니다.Tokenizer는 원시 텍스트를 단어, 숫자 및 기호와 같은 개별 토큰으로 나누고 이를
TokenizedSentence
로 출력하는 도구입니다. Tokenizer는 설정되지 않았으며RuleFactory
내에서 입력 구성을 통해 토큰화 규칙을 생성합니다. 기본 규칙이 부족한 경우 사용자 지정 규칙을 추가할 수 있습니다.정규화기는 토큰을 세밀히 하는 작업을 수행하는 주석자입니다. Normalizer는 정규식 및 사전 변환을 적용하여 텍스트를 정리하고 불필요한 문자를 제거합니다.
WordEmbeddings 토큰을 벡터에 매핑하고 의미 체계 처리를 용이하게 하는 조회 주석입니다. 각 줄에 토큰과 해당 벡터가 포함된
setStoragePath
사용하여 사용자 지정 포함 사전을 공백으로 구분하여 지정할 수 있습니다. 해결되지 않은 토큰은 기본적으로 벡터 0으로 설정됩니다.
Spark NLP는 기계 학습 수명 주기를 관리하는 오픈 소스 플랫폼인 MLflow기본 지원이 있는 Spark MLlib 파이프라인을 사용합니다. MLflow에는 다음과 같은 주요 구성 요소가 있습니다.
MLflow 추적 실험적 실행을 기록하고 결과를 분석하는 강력한 쿼리 기능을 제공합니다.
MLflow Projects 사용하면 다양한 플랫폼에서 데이터 과학 코드를 실행할 수 있습니다. 이 기능은 이식성과 재현성을 향상시킵니다.
MLflow 모델 일관된 프레임워크를 통해 다양한 환경에서 다양한 모델 배포를 지원합니다.
모델 레지스트리 간소화된 액세스 및 배포를 위해 버전을 중앙에 저장하여 포괄적인 모델 관리를 제공합니다. 이 단계는 프로덕션 준비 상태를 용이하게 합니다.
MLflow는 Azure Databricks와 같은 플랫폼과 통합되지만 다른 Spark 기반 환경에 설치하여 실험을 관리하고 추적할 수도 있습니다. 이 통합을 통해 MLflow 모델 레지스트리를 사용하여 프로덕션 용도로 모델을 사용할 수 있도록 할 수 있습니다. 배포 프로세스를 간소화하고 모델 거버넌스를 유지할 수 있습니다.
Spark NLP와 함께 MLflow를 사용하면 자연어 처리 파이프라인을 보다 효율적으로 관리하고 배포할 수 있습니다. 단어 포함 및 언어 모델 적응과 같은 고급 기술을 지원하면서 확장성 및 통합에 대한 최신 요구 사항을 해결할 수도 있습니다.
기여자
Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.
주요 작성자:
- 프레디 아얄라 | 클라우드 솔루션 설계자
- Moritz Steller | 선임 클라우드 솔루션 설계자
LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.
다음 단계
Spark NLP 설명서:
Azure 구성 요소:
- 패브릭
- HDInsight
- Azure Databricks
- AI 서비스
리소스 알아보기:
- microsoft Azure AI 기본 사항 : 자연어 처리 살펴보기
- AI Services 사용하여 자연어 처리 솔루션 개발
관련 리소스
- AI 서비스 기술을 선택하기
- Microsoft의 기계 학습 제품 및 기술 비교
- MLflow 및 Azure Machine Learning
- Azure AI Search 이미지 및 자연어 처리를 사용하여 AI 보강