이 기사는 Wern Ancheta가 동료 검토했습니다. Sitepoint 컨텐츠를 최대한 활용 한 Sitepoint의 모든 동료 검토 자에게 감사합니다!
최근에 모든 사람이 기계 학습에 대해 이야기하고있는 것 같습니다. 소셜 미디어 스트림은 ML, Python, Tensorflow, Spark, Scala, Go 등에 대한 게시물로 가득 차 있습니다. 예, 기계 학습과 PHP는 어떻습니까? 다행스럽게도 누군가는이 질문을 제기 할뿐만 아니라 다음 프로젝트에서 사용할 수있는 일반적인 기계 학습 라이브러리를 개발하는 것에 열중했습니다. 이 게시물에서는 PHP를위한 기계 학습 라이브러리 인 PHP-ML을 살펴 보겠습니다. 나중에 우리 자신의 챗봇이나 Twitterbots에 대해 재사용 할 수있는 감정 분석 클래스를 작성합니다. 이 기사의 주요 목표는 다음과 같습니다
머신 러닝 및 감정 분석에 관한 일반적인 개념을 탐색하십시오
php-ml 의 함수와 단점을 검토하십시오
우리가 다루는 문제를 정의하십시오
PHP에서 머신 러닝을 시도하는 시도는 완전히 미친 목표가 아님을 증명합니다 (선택 사항)
더 나은 PHP 개발 도구 및 기술을 읽어서 더 나은 개발자가 되십시오! 이 책을 읽으 십시오이 책을 읽으십시오!
키 포인트
PHP-ML은 감정 분석과 같은 소규모 응용 프로그램에 적합한 범용 PHP 머신 러닝 라이브러리입니다.
이 튜토리얼은 PHP-ML을 사용하여 감독 학습 기술에 중점을 둔 트윗 분석 전용 감정 분석 도구를 구축하는 방법을 보여줍니다.
감정 분석의 핵심 단계는 데이터 세트에서 관련 기능과 레이블을 선택하는 데이터를 준비하는 것입니다.
텍스트 데이터는 트윗을 기계 학습 모델에 적합한 형식으로 변환하기 위해 토큰 화 및 벡터화와 같은 특정 전처리가 필요합니다.
순진한 베이 즈 분류기는 분류 된 데이터를 간단하고 효율적으로 처리하기 때문에 예제에서 사용됩니다.
이 기사는 정확한 정서적 분류를 보장하기 위해 교육 모델에 대한 깨끗하고 관련된 데이터 세트의 중요성을 강조합니다.
반면 에이 유형의 학습은 처음부터 표지되지 않은 데이터를 사용합니다. 우리는 데이터 세트의 필요한 출력 값을 알지 못하므로 데이터에서 숨겨진 패턴을 찾기 위해 데이터 세트에서 알고리즘이 데이터 세트에서 추론을 드러내도록합니다.
php-ml
PHP Machine Learning의 새로운 방법이라고 주장하는 라이브러리 인 PHP-ML을 알고 있습니다. 라이브러리는 데이터 전처리, 교차 검증 및 특징 추출을위한 알고리즘, 신경망 및 도구를 구현합니다.
나는 언어의 장점이 기계 학습 애플리케이션에 적합하지 않기 때문에 PHP가 기계 학습에 특이한 선택임을 인정합니다. 즉, 모든 기계 학습 애플리케이션이 PEB 레벨 데이터를 처리하고 많은 계산을 수행 해야하는 것은 아닙니다. 간단한 응용 프로그램을 위해 PHP 및 PHP-ML을 사용할 수 있어야합니다.
지금 볼 수있는이 라이브러리의 최상의 사용 사례는 스팸 필터 또는 감정 분석이든 분류기의 구현입니다. 우리는 분류 문제를 정의하고 프로젝트에서 PHP-ML 사용 방법을 이해하기 위해 단계별로 해결책을 구축합니다.
질문
PHP-ML을 구현하고 애플리케이션에 기계 학습을 추가하는 과정의 예를 제시하려면 해결할 흥미로운 문제를 찾고 Twitter 감정 분석 클래스를 구축하는 것보다 더 좋은 방법을 찾고 싶었습니다. 분류기 표시?
성공적인 기계 학습 프로젝트를 구축하는 데 필요한 주요 요구 사항 중 하나는 좋은 시작 데이터 세트입니다. 데이터 세트는 분류 된 예제에 대해 분류기를 훈련시킬 수 있기 때문에 중요합니다. 최근 항공사의 대규모 소음으로 인해 항공사에 고객 트윗을 사용하는 것보다 더 나은 데이터 세트는 무엇입니까?
운 좋게도 Kaggle.io 덕분에 트윗 데이터 세트를 이미 사용할 수 있습니다. 이 링크를 사용하여 Twitter를 다운로드 할 수 있습니다. 웹 사이트에서 미국 항공사 감정 데이터베이스
.
솔루션
먼저 작업 할 데이터 세트를 살펴 보겠습니다. 원래 데이터 세트에는 다음 열이 포함되어 있습니다
텍스트
tweet_coord
tweet_created
tweet_location
user_timezone
및 다음 예제 (옆으로 스크롤 할 수있는 테이블)처럼 보입니다.
weet_id
airline_sentiment
airline_sentiment_confidence
부정적인
Negativereason_Confidence
Negativereason_confidence
airline
airline_sentiment_gold
이름
NEGATIVEROSON_GOLD redweet_count
text
tweet_coord
user_timezone
57030613333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333337760513 (미국 및 캐나다) 5703011308888122368 긍정적 인 0.3486 0.0 Virgin America Jnardino 0 @virginamerica plus 경험에 광고를 추가했습니다… 미국 yvonnalynn 0 @virginamerica 나는 오늘하지 않았다… 다른 여행을해야한다는 것을 의미합니다! jnardino 0“@virginamerica 손님의 얼굴에 불쾌한 ""엔터테인먼트 ""를 폭파하는 것은 정말 공격적이며 "2015-02-24 11:15:36 -0800 p Acific Time (US & Canada) 570300817074462722 음성 1.0 1.0 Virgin America Jnardino 0 @virginamerica에 대해 말할 수 없습니다. 그것은 그것에 대해 정말로 큰 나쁜 일입니다. 0“@virginamerica는 진지 하게이 경기를하지 않은 좌석에 대한 비행기를 진지하게 지불 할 것입니다. 긍정적 인 0.6745 0.0 Virgin America Cjmcginnis 0“@virginamerica 예 거의마다 내가 vx를 비행 할 때 마다이“귀 웜”이 사라지지 않을 것입니다. :) 2015-02-24 11:13:57-0800 샌프란시스코 CA 태평양 시간 (US & & 캐나다) 570300248553349120 중립 0.634 Virgin America Pilot 0“@virginamerica는 모자 패러디가없는 남성의 주요 기회를 놓쳤다 11:12:29 -0800 로스 앤젤레스 태평양 시간 (US & Canada)이 파일에는 14,640 개의 트윗이 포함되어 있으므로 우리에게는 좋은 작업 데이터 세트입니다. 이제 우리가 보유한 열의 수를 사용하면 실용적인 목적보다 더 많은 데이터가 있습니다.
텍스트
<_ _> airline_sentiment
텍스트가 우리의 특성이되고 Airline_sentiment가 우리의 목표가 될 것입니다. 나머지 열은 우리의 운동에 사용되지 않기 때문에 폐기 할 수 있습니다. 프로젝트를 만들고 다음 파일로 작곡가를 초기화하여 시작하겠습니다.
작곡가 소개가 필요한 경우 여기를 참조하십시오.
올바르게 설정하려면 Tweets.csv 데이터 파일을로드하고 필요한 데이터가 있는지 확인하는 빠른 스크립트를 작성하겠습니다. 프로젝트 루트 디렉토리에서 다음 코드를 ReviewDataset.php로 복사하십시오.
이제 PHP ReviewDataset.php를 사용하여 스크립트를 실행하고 출력을 보자 :
표지되지 않은 데이터 세트를 취하고 교육 데이터를 기반으로 라벨 세트를 할당하는 예측 함수.
프로젝트의 루트 디렉토리에서 classifytweets.php라는 스크립트를 만듭니다. 이 스크립트를 사용하여 감정 분석 클래스를 인스턴스화하고 테스트합니다. 우리가 사용할 템플릿은 다음과 같습니다
1 단계 : 데이터 세트를로드하십시오
우리는 이미 이전 예제에서 CSV를 데이터 세트 객체에로드하는 데 사용할 수있는 코드가 이미 있습니다. 우리는 동일한 코드를 사용하고 약간의 조정을 할 것입니다 :
이것은 분류기를 훈련시키는 데 사용할 기능 (이 경우 트윗 텍스트) 만 포함 된 평평한 배열을 생성합니다.
2 단계 : 데이터 세트 준비 <🎜 🎜>
이제 원래 텍스트를 갖고 해당 텍스트를 분류기에 전달하는 것은 유용하거나 정확하지 않습니다. 각 트윗은 본질적으로 다르기 때문입니다. 다행히도 분류 또는 기계 학습 알고리즘을 적용 할 때 텍스트를 처리하는 방법이 있습니다. 이 예에서는 다음 두 클래스를 사용합니다.
토큰 수 벡터 라이저 : 텍스트 샘플을 토큰 수 벡터로 변환합니다. 본질적으로, 트윗의 각 단어는 고유 한 숫자가되어 특정 텍스트 샘플에 단어가 나타나는 횟수를 추적합니다.
TF-IDF 변환기 : 기간 주파수-반대 거부 문서 주파수는 주파수의 약어이며, 이는 수집 또는 코퍼스의 문서에 대한 단어의 중요성을 반영하도록 설계된 수치 통계입니다.
텍스트 벡터 라이저부터 시작하겠습니다 : <🎜 🎜>
다음으로 TF-IDF 변환기를 적용하십시오 : <🎜 🎜>
우리의 샘플 배열은 이제 분류기가 쉽게 이해할 수있는 형식을 사용합니다. 우리는 아직 완료되지 않았으며, 각 샘플을 해당 감정으로 표시해야합니다.
3 단계 : 훈련 데이터 세트를 생성하십시오
운 좋게도, PHP-ML은 이미이 요구 사항을 다루고 있으며 코드는 매우 간단합니다.
우리는이 데이터 세트를 계속 사용하고 분류기를 훈련시킬 수 있습니다. 그러나 검증으로 사용 된 테스트 데이터 세트가 부족하므로 원래 데이터 세트를 교육 데이터 세트와 모델의 정확도 세트를 테스트하기위한 훨씬 작은 데이터의 두 부분으로 분할 할 것입니다.
이 방법을 교차 검증이라고합니다. 이 용어는 통계에서 나오며 다음과 같이 정의 할 수 있습니다.
<,> 회전 추정이라고도하는 교차 검증은 통계 분석 결과가 독립적 인 데이터 세트로 일반화되는 방법을 평가하는 데 사용되는 모델 검증 기술입니다. 주로 예측 목표 설정에 사용되며 실제로 예측 모델의 정확도를 추정하려고합니다. - wikipedia.com
이 기사는 또한 PHP-ML 라이브러리에 대한 소개 역할을하며 라이브러리의 기능과 자신의 프로젝트에이를 포함시키는 방법을 잘 이해하기를 희망합니다.
마지막으로,이 기사는 결코 포괄적이지 않으며, 배우고 개선하고 실험 할 수있는 많은 것들이 있습니다.
순진한 베이 즈 알고리즘을 지원 벡터 머신 알고리즘으로 바꾸십시오.
전체 데이터 세트 (14,000 행)에 대해 실행하려고하면 프로세스의 메모리 강도를 알 수 있습니다. 실행할 때마다 훈련 할 필요가 없도록 모델 지속성을 구현하십시오.
데이터 세트 생성을 자체 도우미 클래스로 이동하십시오.
이 기사가 유용하다는 것을 알기를 바랍니다. PHP-ML에 대한 응용 프로그램 아이디어 나 질문이 있으시면 아래 의견 섹션에서 자유롭게 언급하십시오!
트윗 감정 분석 (FAQ)을위한 PHP 머신 러닝에 대한 FAQ
감정 분석의 정확도를 향상시키는 방법은 무엇입니까?
감정 분석의 정확도 개선에는 다양한 전략이 필요합니다. 먼저 교육 데이터가 최대한 깨끗하고 관련이 있는지 확인하십시오. 이는 중지 단어, 문장 부호 및 URL과 같은 관련없는 데이터를 삭제하는 것을 의미합니다. 둘째,보다 복잡한 알고리즘을 사용하는 것을 고려하십시오. 순진한 Bayes 분류기는 훌륭한 출발점이지만 SVMS (Support Vector Machines) 또는 딥 러닝 모델과 같은 다른 알고리즘이 더 나은 결과를 제공 할 수 있습니다. 마지막으로 교육을 위해 더 큰 데이터 세트를 사용하는 것을 고려하십시오. 모델이 배울 수있는 데이터가 많을수록 더 정확합니다.
감정 분석에 PHP 이외의 다른 언어를 사용할 수 있습니까?
예, 감정 분석에 다른 프로그래밍 언어를 사용할 수 있습니다. 예를 들어, Python은 NLTK, TextBlob 및 Scikit-Learn과 같은 광범위한 기계 학습 라이브러리에 인기있는 선택이되었습니다. 그러나 PHP는 특히 언어에 익숙하거나 프로젝트가 PHP 프레임 워크를 기반으로하는 경우 감정 분석에 효과적으로 사용할 수 있습니다.
감정적 분석에서 아이러니와 반의어를 다루는 방법은 무엇입니까?
감정 분석에서 아이러니와 반의어 문제를 해결하는 것은 어려운 작업입니다. 이러한 언어 특징은 종종 무언가를 말하지만 반대를 의미하는 것은 기계 학습 모델이 이해하기 어렵습니다. 한 가지 방법은 딥 러닝 모델과 같은 상황을 이해할 수있는보다 복잡한 모델을 사용하는 것입니다. 또 다른 접근법은 풍자적 인 주석 데이터 세트를 사용하여 교육을받을 수있는 특수 풍자 탐지 모델을 사용하는 것입니다.
다른 소셜 미디어 플랫폼에 감정 분석을 사용하는 방법은 무엇입니까?
감정 분석의 원칙은 다른 소셜 미디어 플랫폼의 게시물을 포함한 텍스트 데이터에 적용될 수 있습니다. 주요 차이점은 데이터를 수집하는 방법입니다. 각 소셜 미디어 플랫폼에는 사용자 게시물에 액세스하기위한 자체 API가 있으므로 관심있는 플랫폼의 API에 익숙해야합니다.
영어 이외의 언어에 대한 감정 분석을 사용할 수 있습니까?
예, 정서 분석은 모든 언어로 사용할 수 있습니다. 그러나 분석의 효과는 교육 데이터의 품질에 따라 다릅니다. 영어 이외의 언어를 사용하는 경우 해당 언어의 데이터 세트를 사용하여 모델을 훈련시켜야합니다. 일부 기계 학습 라이브러리는 여러 언어를 직접 지원합니다.
감정 분석 결과를 시각화하는 방법은 무엇입니까?
감정 분석 결과를 시각화하는 방법에는 여러 가지가 있습니다. 일반적인 접근법은 막대 차트를 사용하여 양수, 음수 및 중립 트윗의 수를 보여주는 것입니다. 또 다른 방법은 Word Cloud를 사용하여 데이터에서 가장 일반적으로 사용되는 단어를 시각화하는 것입니다. PHP에는 PCHART 및 GD와 같은 이러한 시각화를 만들기위한 몇 가지 라이브러리가 있습니다.
실제 응용 프로그램에서 감정 분석을 사용하는 방법은 무엇입니까?
감정적 분석에는 많은 실용적인 응용이 있습니다. 기업은 제품이나 서비스에 대한 고객의 의견을 모니터링하기 위해이를 사용할 수 있으며, 정치인은이를 사용하여 정책 문제에 대한 여론을 측정 할 수 있으며 연구원은이를 사용하여 사회적 트렌드를 연구 할 수 있습니다. 가능성은 끝이 없습니다.
감정 분석에서 이모티콘을 다루는 방법은 무엇입니까?
이모티콘은 중요한 감정 정보를 가지고 다닐 수 있으므로 분석에 포함시키는 것이 중요합니다. 한 가지 방법은 데이터를 모델에 입력하기 전에 각 이모티콘을 텍스트 설명으로 바꾸는 것입니다. PHP의 이모 지온과 같이이 작업을 도울 수있는 라이브러리가 있습니다.
감정 분석에서 철자 오류를 처리하는 방법은 무엇입니까?
Spellow 오류는 감정 분석에서 어려운 일이 될 수 있습니다. 한 가지 방법은 주문 검사기를 사용하여 데이터를 모델에 입력하기 전에 오류를 수정하는 것입니다. 또 다른 방법은 딥 러닝 모델과 같은 철자 오류를 처리 할 수있는 모델을 사용하는 것입니다.
내 감정 분석 모델을 최신 상태로 유지하는 방법은 무엇입니까?
감정 분석 모델을 최신 상태로 유지하려면 새로운 데이터를 사용하여 정기적으로 재교육해야합니다. 이를 통해 모델이 언어 사용 및 정서적 변화와 동기화되도록합니다. 모델을 재교육하려는 계획을 설정 하여이 프로세스를 자동화 할 수 있습니다.
위 내용은 PHP 머신 러닝으로 트윗 감정을 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!