24 KiB
Превод и анализ на настроения с машинно обучение
В предишните уроци научихте как да създадете основен бот, използвайки TextBlob
, библиотека, която включва машинно обучение зад кулисите, за да изпълнява основни задачи в обработката на естествен език, като извличане на съществителни фрази. Друго важно предизвикателство в компютърната лингвистика е точният превод на изречение от един говорим или писмен език на друг.
Тест преди лекцията
Преводът е много трудна задача, усложнена от факта, че съществуват хиляди езици, всеки със свои уникални граматически правила. Един подход е да се преобразуват формалните граматически правила на един език, например английски, в структура, независима от езика, и след това да се преведе, като се преобразува обратно на друг език. Този подход включва следните стъпки:
- Идентификация. Идентифицирайте или маркирайте думите в входния език като съществителни, глаголи и т.н.
- Създаване на превод. Създайте директен превод на всяка дума във формат на целевия език.
Примерно изречение, от английски към ирландски
На 'английски', изречението I feel happy се състои от три думи в следния ред:
- подлог (I)
- глагол (feel)
- прилагателно (happy)
Въпреки това, на 'ирландски' език същото изречение има много различна граматическа структура - емоции като "happy" или "sad" се изразяват като нещо, което е върху теб.
Английската фраза I feel happy
на ирландски би била Tá athas orm
. Буквален превод би бил Happy is upon me
.
Ирландски говорител, превеждащ на английски, би казал I feel happy
, а не Happy is upon me
, защото разбира значението на изречението, дори ако думите и структурата на изречението са различни.
Формалният ред на изречението на ирландски е:
- глагол (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
Ако моделът за машинно обучение има достатъчно човешки преводи, върху които да изгради модел, той може да подобри точността на преводите, като идентифицира общи модели в текстове, които преди това са били преведени от експертни говорители на двата езика.
Упражнение - превод
Можете да използвате 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."
В този случай преводът, информиран от машинно обучение, се справя по-добре от човешкия преводач, който ненужно добавя думи в устата на оригиналния автор за 'яснота'.
Какво се случва тук? И защо TextBlob е толкова добър в превода? Е, зад кулисите той използва Google Translate, сложен AI, способен да анализира милиони фрази, за да предскаже най-добрите низове за задачата. Тук няма нищо ръчно и ви е необходима интернет връзка, за да използвате
blob.translate
.
✅ Опитайте още няколко изречения. Кое е по-добро, машинно обучение или човешки превод? В кои случаи?
Анализ на настроения
Друга област, в която машинното обучение може да работи много добре, е анализът на настроения. Неподходът с машинно обучение за анализ на настроения е да се идентифицират думи и фрази, които са 'положителни' и 'отрицателни'. След това, при нов текст, се изчислява общата стойност на положителните, отрицателните и неутралните думи, за да се идентифицира общото настроение.
Този подход лесно се подвежда, както може би сте видели в задачата на Марвин - изречението 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" по различни начини, за да откриете как вашият глас предава значение.
Подходи с машинно обучение
Подходът с машинно обучение би бил ръчно събиране на отрицателни и положителни текстове - туитове, или ревюта на филми, или каквото и да е, където човек е дал оценка и писмено мнение. След това могат да се приложат техники за обработка на естествен език към мненията и оценките, така че да се появят модели (например, положителните ревюта на филми често съдържат фразата 'Oscar worthy' повече от отрицателните ревюта на филми, или положителните ревюта на ресторанти казват 'gourmet' много повече от 'disgusting').
⚖️ Пример: Ако работите в офиса на политик и се обсъжда нов закон, избирателите може да пишат до офиса с имейли в подкрепа или против конкретния нов закон. Да кажем, че сте натоварени да четете имейлите и да ги сортирате в 2 купчини, за и против. Ако има много имейли, може да се почувствате претоварени, опитвайки се да ги прочетете всички. Не би ли било хубаво, ако бот може да ги прочете вместо вас, да ги разбере и да ви каже в коя купчина принадлежи всеки имейл?
Един начин да постигнете това е да използвате машинно обучение. Ще обучите модела с част от имейлите против и част от имейлите за. Моделът би асоциирал фрази и думи с противната страна и страната за, но няма да разбира съдържанието, само че определени думи и модели са по-вероятни да се появят в имейл против или за. Можете да го тествате с някои имейли, които не сте използвали за обучение на модела, и да видите дали стига до същото заключение като вас. След това, когато сте доволни от точността на модела, можете да обработвате бъдещи имейли, без да се налага да четете всеки един.
✅ Звучи ли този процес като процеси, които сте използвали в предишни уроци?
Упражнение - изречения с настроения
Настроението се измерва с полярност от -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 е абсолютно положителна или отрицателна съответно.
Стъпки:
- Изтеглете копие на Гордост и предразсъдъци от Project Gutenberg като .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!
- По-специално, съгласни ли сте или не с абсолютната положителна полярност на следните изречения?
✅ Всеки почитател на Джейн Остин ще разбере, че тя често използва книгите си, за да критикува по-нелепите аспекти на английското общество от епохата на Регентството. Елизабет Бенет, главната героиня в Гордост и предразсъдъци, е проницателен социален наблюдател (като авторката) и нейният език често е силно нюансиран. Дори г-н Дарси (любовният интерес в историята) отбелязва игривото и закачливо използване на езика от страна на Елизабет: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own."
🚀Предизвикателство
Можете ли да направите Марвин още по-добър, като извлечете други характеристики от потребителския вход?
Тест след лекцията
Преглед и самостоятелно обучение
Има много начини за извличане на емоционален тон от текст. Помислете за бизнес приложенията, които биха могли да използват тази техника. Помислете за това как тя може да се обърка. Прочетете повече за усъвършенствани системи, готови за предприятия, които анализират емоционален тон, като Azure Text Analysis. Тествайте някои от изреченията от "Гордост и предразсъдъци" по-горе и вижте дали може да улови нюансите.
Задача
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.