You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ML-For-Beginners/translations/bg/6-NLP/1-Introduction-to-NLP
leestott e4050807fb
🌐 Update translations via Co-op Translator
2 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 2 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 2 weeks ago

README.md

Въведение в обработката на естествен език

Този урок обхваща кратка история и важни концепции на обработката на естествен език, подполе на компютърната лингвистика.

Тест преди лекцията

Въведение

Обработката на естествен език (NLP), както често се нарича, е една от най-известните области, в които машинното обучение е приложено и използвано в производствен софтуер.

Можете ли да се сетите за софтуер, който използвате всеки ден и вероятно има вградена обработка на естествен език? А какво ще кажете за програмите за текстообработка или мобилните приложения, които използвате редовно?

Ще научите за:

  • Идеята за езиците. Как са се развили езиците и кои са основните области на изследване.
  • Дефиниции и концепции. Ще научите дефиниции и концепции за това как компютрите обработват текст, включително парсинг, граматика и идентифициране на съществителни и глаголи. В този урок има някои задачи за програмиране, както и няколко важни концепции, които ще научите да програмирате в следващите уроци.

Компютърна лингвистика

Компютърната лингвистика е област на изследване и развитие през последните десетилетия, която изучава как компютрите могат да работят с, и дори да разбират, превеждат и комуникират с езици. Обработката на естествен език (NLP) е свързана област, която се фокусира върху това как компютрите могат да обработват „естествени“, или човешки, езици.

Пример - диктовка на телефон

Ако някога сте диктували на телефона си вместо да пишете или сте задавали въпрос на виртуален асистент, вашата реч е била преобразувана в текстова форма и след това обработена или парсирана от езика, на който сте говорили. Откритите ключови думи след това са били обработени във формат, който телефонът или асистентът могат да разберат и да действат според него.

разбиране

Истинското езиково разбиране е трудно! Изображение от Jen Looper

Как е възможна тази технология?

Това е възможно, защото някой е написал компютърна програма, която да го направи. Преди няколко десетилетия някои писатели на научна фантастика предсказаха, че хората ще говорят предимно с компютрите си и компютрите винаги ще разбират точно какво имат предвид. За съжаление, се оказа, че това е по-труден проблем, отколкото мнозина си представяха, и въпреки че днес проблемът е много по-добре разбран, има значителни предизвикателства за постигане на „перфектна“ обработка на естествен език, когато става въпрос за разбиране на значението на изречение. Това е особено труден проблем, когато става въпрос за разбиране на хумор или откриване на емоции като сарказъм в изречение.

В този момент може би си спомняте училищни часове, в които учителят е разглеждал частите на граматиката в изречение. В някои страни учениците изучават граматика и лингвистика като отделен предмет, но в много други тези теми са включени като част от изучаването на език: или първия ви език в началното училище (учене на четене и писане), а може би и втори език в гимназията. Не се притеснявайте, ако не сте експерт в разграничаването на съществителни от глаголи или наречия от прилагателни!

Ако се затруднявате с разликата между простото сегашно време и сегашно продължително време, не сте сами. Това е предизвикателство за много хора, дори за носители на езика. Добрата новина е, че компютрите са наистина добри в прилагането на формални правила и ще научите как да пишете код, който може да парсира изречение толкова добре, колкото човек. По-голямото предизвикателство, което ще разгледате по-късно, е разбирането на значението и настроението на изречение.

Предпоставки

За този урок основната предпоставка е да можете да четете и разбирате езика на този урок. Няма математически задачи или уравнения за решаване. Въпреки че оригиналният автор е написал този урок на английски, той е преведен и на други езици, така че може би четете превод. Има примери, в които се използват различни езици (за сравнение на различните граматически правила на различните езици). Те не са преведени, но обяснителният текст е, така че значението трябва да е ясно.

За задачите за програмиране ще използвате Python, а примерите са с Python 3.8.

В този раздел ще ви трябват и ще използвате:

  • Разбиране на Python 3. Разбиране на програмния език Python 3, този урок използва входни данни, цикли, четене на файлове, масиви.

  • Visual Studio Code + разширение. Ще използваме Visual Studio Code и неговото разширение за Python. Можете също да използвате Python IDE по ваш избор.

  • TextBlob. TextBlob е опростена библиотека за обработка на текст за Python. Следвайте инструкциите на сайта на TextBlob, за да го инсталирате на вашата система (инсталирайте и корпусите, както е показано по-долу):

    pip install -U textblob
    python -m textblob.download_corpora
    

💡 Съвет: Можете да изпълнявате Python директно в средите на VS Code. Проверете документацията за повече информация.

Говорене с машини

Историята на опитите да се накарат компютрите да разбират човешки език се простира десетилетия назад, а един от най-ранните учени, които разглеждат обработката на естествен език, е Алън Тюринг.

Тестът на Тюринг

Когато Тюринг изследваше изкуствения интелект през 50-те години на миналия век, той се замисли дали може да се проведе разговорен тест между човек и компютър (чрез писмена кореспонденция), при който човекът в разговора не е сигурен дали разговаря с друг човек или с компютър.

Ако след определена дължина на разговора човекът не може да определи дали отговорите са от компютър или не, може ли да се каже, че компютърът мисли?

Вдъхновението - „играта на имитация“

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

Разработване на Eliza

През 60-те години учен от MIT, наречен Джозеф Вайзенбаум, разработва Eliza, компютърен „терапевт“, който задава въпроси на човека и създава впечатление, че разбира отговорите му. Въпреки това, докато Eliza можеше да парсира изречение и да идентифицира определени граматически конструкции и ключови думи, за да даде разумен отговор, не можеше да се каже, че тя разбира изречението. Ако на Eliza се представи изречение във формат "Аз съм тъжен", тя може да пренареди и замени думи в изречението, за да формира отговора "От колко време ти си тъжен?".

Това създава впечатление, че Eliza разбира изказването и задава последващ въпрос, докато в действителност тя просто променя времето и добавя някои думи. Ако Eliza не може да идентифицира ключова дума, за която има отговор, тя вместо това дава случаен отговор, който може да бъде приложим за много различни изказвания. Eliza може лесно да бъде заблудена, например ако потребителят напише "Ти си велосипед", тя може да отговори с "От колко време аз съм велосипед?", вместо с по-разумен отговор.

Разговор с Eliza

🎥 Кликнете върху изображението по-горе за видео за оригиналната програма ELIZA

Забележка: Можете да прочетете оригиналното описание на Eliza, публикувано през 1966 г., ако имате акаунт в ACM. Алтернативно, прочетете за Eliza в Wikipedia.

Упражнение - програмиране на основен разговорен бот

Разговорен бот, като Eliza, е програма, която получава вход от потребителя и създава впечатление, че разбира и отговаря интелигентно. За разлика от Eliza, нашият бот няма да има множество правила, които да му придават вид на интелигентен разговор. Вместо това, нашият бот ще има само една способност - да поддържа разговора с произволни отговори, които могат да работят в почти всяка тривиална беседа.

Планът

Вашите стъпки при изграждането на разговорен бот:

  1. Отпечатайте инструкции, които съветват потребителя как да взаимодейства с бота.
  2. Започнете цикъл:
    1. Приемете вход от потребителя.
    2. Ако потребителят поиска да излезе, прекратете.
    3. Обработете входа на потребителя и определете отговор (в този случай отговорът е произволен избор от списък с възможни общи отговори).
    4. Отпечатайте отговора.
  3. Върнете се към стъпка 2.

Създаване на бота

Нека създадем бота. Ще започнем с дефиниране на някои фрази.

  1. Създайте този бот сами в Python с помощта на следните произволни отговори:

    random_responses = ["That is quite interesting, please tell me more.",
                        "I see. Do go on.",
                        "Why do you say that?",
                        "Funny weather we've been having, isn't it?",
                        "Let's change the subject.",
                        "Did you catch the game last night?"]
    

    Ето примерен изход, който да ви насочи (входът на потребителя е на редовете, започващи с >):

    Hello, I am Marvin, the simple robot.
    You can end this conversation at any time by typing 'bye'
    After typing each answer, press 'enter'
    How are you today?
    > I am good thanks
    That is quite interesting, please tell me more.
    > today I went for a walk     
    Did you catch the game last night?
    > I did, but my team lost
    Funny weather we've been having, isn't it?
    > yes but I hope next week is better
    Let's change the subject.
    > ok, lets talk about music
    Why do you say that?
    > because I like music!
    Why do you say that?
    > bye
    It was nice talking to you, goodbye!
    

    Едно възможно решение на задачата е тук.

    Спрете и помислете

    1. Смятате ли, че произволните отговори биха „заблудили“ някого да мисли, че ботът всъщност го разбира?
    2. Какви функции би трябвало да има ботът, за да бъде по-ефективен?
    3. Ако ботът наистина може да „разбере“ значението на изречение, би ли трябвало да „запомни“ значението на предишни изречения в разговора?

🚀Предизвикателство

Изберете един от елементите „спрете и помислете“ по-горе и опитайте да го приложите в код или напишете решение на хартия, използвайки псевдокод.

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

Тест след лекцията

Преглед и самостоятелно обучение

Разгледайте препратките по-долу като възможности за допълнително четене.

Препратки

  1. Schubert, Lenhart, "Computational Linguistics", The Stanford Encyclopedia of Philosophy (Spring 2020 Edition), Edward N. Zalta (ed.), URL = https://plato.stanford.edu/archives/spr2020/entries/computational-linguistics/.
  2. Princeton University "About WordNet." WordNet. Princeton University. 2010.

Задание

Търсене на бот


Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за недоразумения или погрешни интерпретации, произтичащи от използването на този превод.