Способността ни да решаваме НЛП проблеми с помощта на AI алгоритми е напреднала много, но разбирането ни за човешкия език тепърва ще наваксва. Това е така, защото повечето от AI алгоритмите работят като черна кутия и въпреки че знаем архитектурата на модела и всички стойности на параметрите, разгадаването на основните характеристики, които тези алгоритми използват за дадена задача, е много предизвикателство. Но за много практически приложения е необходимо ИИ да бъде обясним, без което тези фантастични алгоритми остават само академично упражнение.

През 2019 г. открихме много прост алгоритъм за класифициране на текст, който може да помогне при идентифицирането дали даден текст принадлежи към жанра художествена или нехудожествена литература. Ние наричаме това Фиктометър! Така че, ако вземете откъс от любимия си роман или любимата си научна статия, Fictometer ще може да направи разликата между двете. И това работи с невероятно висока точност (~ 96%)!



Разбира се, има и други алгоритми, които могат да изпълняват същата задача, но специалното в нашата работа е, че успяхме да разберем две много прости характеристики, които могат да помогнат за постигане на много висока точност. И тези две характеристики са просто съотношението прилагателно/местоимение и съотношението наречие/прилагателно в дадения документ.

Нека да видим как да приложим този алгоритъм, използвайки данните от Браун корпус от NLTK. Има две части на кода. Първата част е за подготовката на данни с помощта на корпуса NLTK Brown, а втората част е прилагането на логистична регресия.

Подготовка на данни с помощта на NLTK Brown Corpus

Първо идват библиотеките, които трябва да импортираме за данните. Браун корпусът е достъпен чрез NLTK.

Алгоритъмът Fictometer по същество се основава на маркиране на части от речта (POS), което е основен аспект на НЛП. Има различни начини, по които POS етикетите могат да бъдат направени за даден текст, но най-общо казано можем да имаме или универсални POS тагове (съществително, прилагателно, наречие, местоимение и т.н.) или по-фини тагове, които правят разлика между различни типове съществителни, прилагателни, и т.н. За нашата задача UPOS таговете са достатъчно добри и затова след това пишем функция за преброяване на броя различни UPOS тагове в даден текст.

След това започваме да четем текст от корпуса на NLTK Brown и създаваме DataFrame, който съдържа информация за броя на различните POS тагове за всеки текст в корпуса.

След като имаме цялата информация за UPOS етикета в нашия DataFrame, трябва да изчислим двете съотношения, които са характеристиките на нашия модел: прилагателно/местоимение и наречие/прилагателно.

Корпусът Браун има няколко подкатегории и затова трябва да идентифицираме всяка от тях като „художествена литература“ или „нехудожествена литература“ в зависимост от нейното съдържание.

Обучение и тестване с помощта на логистична регресия

Страхотен! Така че нашите данни са готови за обучение и тестване с помощта на всеки алгоритъм за машинно обучение. Ние избираме логистичната регресия заради нейната относителна простота. И работи невероятно добре!

След това премахваме всички ненужни колони от нашия DataFrame, извличаме входните и изходните стойности, разделяме ги в набор за обучение и тестване и напасваме модела на логистична регресия, използвайки данните за обучение.

Най-накрая дойде време да видим резултатите от упоритата ни работа!

Може да има много практически приложения на този алгоритъм на Fictometer, но вярвам, че най-важното е в новинарските медии, за да помогне при улавянето на манипулативни новинарски статии, които използват емоционален език, вместо да бъдат директни и просто базирани на факти. Според кратко проучване, което направихме, използвайки новинарски статии от реномирани новинарски източници, около 15% от публикуваните статии принадлежат към тази емоционално манипулативна категория.

Бележник на Юпитер: