|
2 weeks ago | |
---|---|---|
.. | ||
solution | 3 weeks ago | |
README.md | 2 weeks ago | |
assignment.md | 3 weeks ago |
README.md
기계 학습을 활용한 번역 및 감정 분석
이전 강의에서는 TextBlob
라이브러리를 사용하여 기본적인 NLP 작업(예: 명사구 추출)을 수행하는 간단한 봇을 만드는 방법을 배웠습니다. TextBlob
은 기계 학습을 백그라운드에서 활용합니다. 계산 언어학에서 또 다른 중요한 과제는 문장을 한 언어에서 다른 언어로 정확하게 _번역_하는 것입니다.
강의 전 퀴즈
번역은 매우 어려운 문제입니다. 전 세계에는 수천 개의 언어가 존재하며, 각 언어는 매우 다른 문법 규칙을 가질 수 있기 때문입니다. 한 가지 접근법은 영어와 같은 한 언어의 형식적 문법 규칙을 언어에 독립적인 구조로 변환한 다음, 이를 다시 다른 언어로 변환하는 것입니다. 이 접근법은 다음 단계를 포함합니다:
- 식별. 입력 언어의 단어를 명사, 동사 등으로 태깅합니다.
- 번역 생성. 대상 언어 형식으로 각 단어를 직접 번역합니다.
예문: 영어에서 아일랜드어로
'영어'에서 _I feel happy_라는 문장은 다음과 같은 순서를 가집니다:
- 주어 (I)
- 동사 (feel)
- 형용사 (happy)
하지만 '아일랜드어'에서는 같은 문장이 매우 다른 문법 구조를 가집니다. "happy"나 "sad"와 같은 감정은 당신 위에 있다는 방식으로 표현됩니다.
영어 문장 I feel happy
는 아일랜드어로 Tá athas orm
입니다. 이를 직역하면 Happy is upon me
가 됩니다.
아일랜드어 화자가 영어로 번역할 때는 Happy is upon me
가 아니라 I feel happy
라고 말할 것입니다. 이는 단어와 문장 구조가 다르더라도 문장의 의미를 이해하기 때문입니다.
아일랜드어 문장의 형식적 순서는 다음과 같습니다:
- 동사 (Tá 또는 is)
- 형용사 (athas, 또는 happy)
- 주어 (orm, 또는 upon me)
번역
단순한 번역 프로그램은 문장 구조를 무시하고 단어만 번역할 수 있습니다.
✅ 성인이 되어 두 번째(또는 세 번째 이상의) 언어를 배운 적이 있다면, 모국어로 생각한 후 개념을 단어 단위로 머릿속에서 번역하고, 번역한 내용을 말하는 방식으로 시작했을 가능성이 높습니다. 이는 단순한 번역 컴퓨터 프로그램이 하는 것과 비슷합니다. 유창함을 얻으려면 이 단계를 넘어서는 것이 중요합니다!
단순한 번역은 종종 잘못된(때로는 웃긴) 번역을 초래합니다. 예를 들어, I feel happy
를 아일랜드어로 직역하면 Mise bhraitheann athas
가 됩니다. 이는 문자 그대로 me feel happy
를 의미하며, 올바른 아일랜드어 문장이 아닙니다. 영어와 아일랜드어는 서로 가까운 섬에서 사용되는 언어임에도 불구하고, 문법 구조가 매우 다릅니다.
아일랜드어 언어 전통에 대한 비디오를 여기에서 시청할 수 있습니다.
기계 학습 접근법
지금까지 자연어 처리를 위한 형식적 규칙 접근법에 대해 배웠습니다. 또 다른 접근법은 단어의 의미를 무시하고, _대신 기계 학습을 사용하여 패턴을 감지하는 것_입니다. 원본 언어와 대상 언어로 된 많은 텍스트(코퍼스 또는 코퍼라)가 있다면, 이 접근법은 번역에 효과적일 수 있습니다.
예를 들어, 제인 오스틴이 1813년에 쓴 유명한 영어 소설 오만과 편견을 생각해 봅시다. 이 책의 영어 원본과 프랑스어로 된 인간 번역본을 비교하면, 한 언어의 구문이 다른 언어로 관용적으로 번역된 것을 감지할 수 있습니다. 곧 이를 실습해 볼 것입니다.
예를 들어, 영어 문장 I have no money
를 프랑스어로 직역하면 Je n'ai pas de monnaie
가 될 수 있습니다. "Monnaie"는 프랑스어에서 '거짓 친구'로, 'money'와 'monnaie'는 동의어가 아닙니다. 인간 번역자가 더 나은 번역을 한다면 Je n'ai pas d'argent
가 될 것입니다. 이는 '돈이 없다'는 의미를 더 잘 전달하기 때문입니다(반면 'monnaie'는 '잔돈'을 의미합니다).
이미지 제공: Jen Looper
충분한 인간 번역본을 기반으로 모델을 구축한 ML 모델은 이전에 전문가가 번역한 텍스트에서 공통 패턴을 식별하여 번역 정확도를 향상시킬 수 있습니다.
실습 - 번역
TextBlob
을 사용하여 문장을 번역할 수 있습니다. 오만과 편견의 유명한 첫 문장을 시도해 보세요:
from textblob import TextBlob
blob = TextBlob(
"It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!"
)
print(blob.translate(to="fr"))
TextBlob
은 다음과 같은 번역을 제공합니다: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!".
사실, TextBlob의 번역은 1932년 V. Leconte와 Ch. Pressoir가 번역한 프랑스어 번역보다 훨씬 정확하다고 주장할 수 있습니다:
"C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles."
이 경우, ML에 기반한 번역은 원작자의 의도를 불필요하게 왜곡한 인간 번역자보다 더 나은 결과를 제공합니다.
TextBlob이 번역을 잘하는 이유는 무엇일까요? TextBlob은 Google 번역을 백그라운드에서 사용합니다. Google 번역은 수백만 개의 구문을 분석하여 작업에 가장 적합한 문자열을 예측할 수 있는 정교한 AI입니다. 여기에는 수작업이 전혀 포함되지 않으며,
blob.translate
를 사용하려면 인터넷 연결이 필요합니다.
✅ 몇 가지 문장을 더 시도해 보세요. ML 번역과 인간 번역 중 어느 것이 더 나은가요? 어떤 경우에 더 나은가요?
감정 분석
기계 학습이 매우 효과적으로 작동할 수 있는 또 다른 영역은 감정 분석입니다. 비-ML 접근법으로 감정을 분석하려면 '긍정적' 또는 '부정적'인 단어와 구문을 식별합니다. 그런 다음, 새로운 텍스트가 주어지면 긍정적, 부정적, 중립적 단어의 총합을 계산하여 전체 감정을 식별합니다.
이 접근법은 쉽게 속을 수 있습니다. 예를 들어, Marvin 과제에서 본 것처럼 Great, that was a wonderful waste of time, I'm glad we are lost on this dark road
라는 문장은 비꼬는 부정적 감정의 문장이지만, 간단한 알고리즘은 'great', 'wonderful', 'glad'를 긍정적으로, 'waste', 'lost', 'dark'를 부정적으로 감지합니다. 상반된 단어들로 인해 전체 감정이 왜곡됩니다.
✅ 인간 화자로서 우리가 비꼬는 감정을 어떻게 전달하는지 잠시 생각해 보세요. 억양이 큰 역할을 합니다. "Well, that film was awesome"이라는 문장을 다양한 방식으로 말해 보며, 목소리가 의미를 어떻게 전달하는지 알아보세요.
ML 접근법
ML 접근법은 부정적이고 긍정적인 텍스트(예: 트윗, 영화 리뷰 등)를 수집하는 것입니다. 여기서 인간이 점수와 의견을 작성합니다. 그런 다음 NLP 기술을 적용하여 패턴을 도출합니다(예: 긍정적인 영화 리뷰에는 'Oscar worthy'라는 구문이 부정적인 리뷰보다 더 자주 나타남).
⚖️ 예시: 정치인의 사무실에서 새로운 법안에 대한 찬반 의견을 담은 이메일을 분류하는 작업을 맡았다고 가정해 봅시다. 이메일이 많다면 모든 이메일을 읽는 것이 부담스러울 수 있습니다. 봇이 이메일을 읽고 찬성과 반대 그룹으로 분류해 준다면 얼마나 좋을까요?
이를 달성하는 한 가지 방법은 기계 학습을 사용하는 것입니다. 모델을 일부 찬성 이메일과 일부 반대 이메일로 훈련시킵니다. 모델은 특정 단어나 패턴이 찬성 또는 반대 이메일에 더 자주 나타나는 경향이 있음을 학습합니다. 그런 다음, 훈련에 사용되지 않은 이메일로 테스트하여 모델이 동일한 결론에 도달하는지 확인합니다. 모델의 정확성에 만족하면, 이후 이메일을 읽지 않고도 처리할 수 있습니다.
✅ 이전 강의에서 사용한 프로세스와 유사한 점이 있나요?
실습 - 감정 문장
감정은 -1에서 1까지의 극성으로 측정됩니다. -1은 가장 부정적인 감정, 1은 가장 긍정적인 감정을 나타냅니다. 감정은 또한 0에서 1까지의 점수로 객관성(0)과 주관성(1)을 측정합니다.
제인 오스틴의 오만과 편견을 다시 살펴보세요. 이 텍스트는 Project Gutenberg에서 확인할 수 있습니다. 아래 샘플은 책의 첫 문장과 마지막 문장의 감정을 분석하고, 감정 극성과 주관성/객관성 점수를 표시하는 짧은 프로그램을 보여줍니다.
다음 작업에서 TextBlob
라이브러리를 사용하여 sentiment
를 결정하세요(직접 감정 계산기를 작성할 필요는 없습니다).
from textblob import TextBlob
quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife."""
quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them."""
sentiment1 = TextBlob(quote1).sentiment
sentiment2 = TextBlob(quote2).sentiment
print(quote1 + " has a sentiment of " + str(sentiment1))
print(quote2 + " has a sentiment of " + str(sentiment2))
다음과 같은 출력이 표시됩니다:
It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146)
Darcy, as well as Elizabeth, really loved them; and they were
both ever sensible of the warmest gratitude towards the persons
who, by bringing her into Derbyshire, had been the means of
uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8)
도전 과제 - 감정 극성 확인
오만과 편견에서 절대적으로 긍정적인 문장이 절대적으로 부정적인 문장보다 더 많은지 감정 극성을 사용하여 확인하세요. 이 작업에서는 극성 점수가 1 또는 -1인 경우를 절대적으로 긍정적이거나 부정적이라고 가정합니다.
단계:
- 오만과 편견의 사본을 .txt 파일로 다운로드합니다. 파일 시작과 끝의 메타데이터를 제거하고 원본 텍스트만 남깁니다.
- Python에서 파일을 열고 내용을 문자열로 추출합니다.
- 책 문자열을 사용하여 TextBlob을 생성합니다.
- 책의 각 문장을 루프에서 분석합니다.
- 극성이 1 또는 -1인 경우, 문장을 긍정적 또는 부정적 메시지의 배열 또는 리스트에 저장합니다.
- 마지막에 모든 긍정적 문장과 부정적 문장(별도로) 및 각 문장의 수를 출력합니다.
다음은 샘플 솔루션입니다.
✅ 지식 점검
- 감정은 문장에서 사용된 단어를 기반으로 하지만, 코드가 단어를 이해하나요?
- 감정 극성이 정확하다고 생각하나요? 즉, 점수에 동의하나요?
- 특히, 다음 문장의 절대 긍정적 극성에 동의하나요, 아니면 동의하지 않나요?
- “What an excellent father you have, girls!” said she, when the door was shut.
- “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect.
- How wonderfully these sort of things occur!
- I have the greatest dislike in the world to that sort of thing.
- Charlotte is an excellent manager, I dare say.
- “This is delightful indeed!
- I am so happy!
- Your idea of the ponies is delightful.
- 다음 3개의 문장은 절대 긍정적 감정으로 점수가 매겨졌지만, 자세히 읽어보면 긍정적인 문장이 아닙니다. 감정 분석이 왜 이 문장을 긍정적으로 판단했을까요?
- Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power.
- If I could but see you as happy!
- Our distress, my dear Lizzy, is very great.
- 다음 문장의 절대 부정적 극성에 동의하나요, 아니면 동의하지 않나요?
- Everybody is disgusted with his pride.
- “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful.
- The pause was to Elizabeth’s feelings dreadful.
- It would be dreadful!
- 특히, 다음 문장의 절대 긍정적 극성에 동의하나요, 아니면 동의하지 않나요?
✅ 제인 오스틴의 팬이라면 그녀가 종종 책을 통해 영국 섭정 시대 사회의 더 우스꽝스러운 측면을 비판한다는 것을 이해할 것입니다. 오만과 편견의 주인공 엘리자베스 베넷은 예리한 사회 관찰자(작가와 마찬가지)이며, 그녀의 언어는 종종 매우 미묘합니다. 심지어 이야기의 사랑스러운 상대인 Mr. Darcy조차도 엘리자베스의 장난스럽고 놀리는 언어 사용을 언급합니다: "나는 당신이 때때로 자신의 의견이 아닌 의견을 즐겁게 표현하는 것을 즐긴다는 것을 알 만큼 충분히 오래 당신을 알고 있습니다."
🚀도전 과제
사용자 입력에서 다른 특징을 추출하여 Marvin을 더 개선할 수 있나요?
강의 후 퀴즈
복습 및 자기 학습
텍스트에서 감정을 추출하는 방법은 여러 가지가 있습니다. 이 기술을 활용할 수 있는 비즈니스 응용 프로그램에 대해 생각해 보세요. 또한 이 기술이 어떻게 잘못될 수 있는지에 대해서도 고민해 보세요. 감정을 분석하는 정교한 기업용 시스템에 대해 더 알아보세요, 예를 들어 Azure Text Analysis. 위의 '오만과 편견' 문장 중 일부를 테스트해 보고, 미묘한 뉘앙스를 감지할 수 있는지 확인해 보세요.
과제
면책 조항:
이 문서는 AI 번역 서비스 Co-op Translator를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있으나, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서를 해당 언어로 작성된 상태에서 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 당사는 책임을 지지 않습니다.