1. Nauka
  2. /
  3. Kursy
  4. /
  5. Tworzenie chatbotów w Pythonie

Connected

ćwiczenie

Podstawowa negacja

Użytkownicy często mówią ci, czego nie chcą – i warto to dobrze rozumieć! Negacja to na ogół trudny problem w przetwarzaniu języka naturalnego. Tutaj zastosujemy bardzo proste podejście, które sprawdza się w wielu przypadkach.

Została dla ciebie zdefiniowana lista testów o nazwie tests. Zbadaj ją w powłoce – przekonasz się, że każdy test to krotka składająca się z:

  • Ciągu znaków zawierającego wiadomość z encjami.
  • Słownika, w którym encje są kluczami, a wartości to wartości logiczne określające, czy dana encja jest zanegowana.

Twoim zadaniem jest zdefiniowanie funkcji negated_ents(), która wyszukuje zanegowane encje w wiadomości.

Instrukcje

100 XP
  • Używając wyrażenia listowego, sprawdź, czy w wiadomości pojawiają się słowa "south" lub "north", i wyodrębnij te encje.
  • Podziel zdanie na fragmenty kończące się każdą z encji. W tym celu:
    • Użyj metody .index() na phrase, aby znaleźć indeks początku każdej encji e, a następnie dodaj do niego długość encji, by uzyskać indeks jej końca.
    • Zaczynając od start=0, pobieraj wycinki ciągu od start do end dla każdego end w ends. Dołączaj każdy wycinek zdania do listy chunks. Pamiętaj, aby przy każdej iteracji aktualizować pozycję startową.
  • Dla każdej encji – jeśli w danym fragmencie pojawia się "not" lub "n't" – uznaj tę encję za zanegowaną.