PROWADZĄCY: dr inż. Witold Paluszyński
AUTOR: Karolina Krzyszowisz IV rok Nr albumu 133113
Data: 21 czerwca 2007
Metody i algorytmy sztucznej inteligencji.
RAPORT
"Rozwiązywanie prostych zadań z matematyki z procentami"
- Wstęp
- Sposób realizacji projektu
- Przykłady działania programu
- Wnioski
- Materiały wykorzystane przy budowie bota
1. Opis zadania
Celem zadania projektowego było stworzenie programu rozwiązujacego proste zadania matematyczne na poziomie ucznia gimnazjum. Zakres zadań ograniczony został jedynie do zadan z procentami.
2.Sposób realizacji projektu
Projekt został zrealizowany w języku AIML (Artificial Intelligence Markup Language) przy użyciu interpretera CharlieBot ProgramD, który został napisany w języku java. Wybrałam ten właśnie interpreter ze wzgledu na to, że można w kodzie programu umieszczać skrypty napisane w języku java, co było bardzo istotne przy realizacji projektu, ponieważ przy użyciu samego języka AIML nie możemy wykonywać obliczeń. Zalożeniem projektu było stworzenie programu, który odczytuje fakty zawierające się w zadaniu i co należy obliczyć. Na podstawie tego, zadanie dopasowujemy do pewnego wzorca i podstawiamy dane do wzoru.
Przykład
Jaki procent liczby 200 stanowi liczba 5
Jaki procent liczby * stanowi liczba *
Realizacja w programie
<category>
<pattern> JAKI PROCENT LICZBY * STANOWI LICZBA *</pattern>
<template> stanowi
<think> <set name="liczba1"> <star index="1"/> </set>
<set name="liczba2"> <star index="2"/> </set> </think>
</template>
</category>
W zadaniach z procentami są 3 grupy zadań: obliczanie procentu danej liczby, obliczanie liczby gdy dany jest jej procent oraz obliczanie jakim procentem jednej liczby jest druga liczba. Tak samo pogrupowałam zadania w bazie wiedzy, czerpiąc ich treść z podręcznika do matematyki dla gimnazjum. W każdej takiej grupie jest jeszcze wiele kategorii zadań, do których dopasowywana jest treść.
3. Przykład działania programu
Przykłady zadań zaczerpnięte z książki, na podstawie której powstała baza wiedzy
[23:53:24] [Testy 2] user> miesiac temu sukienka kosztowala 340 zl pozniej podrozala o 56 zl. Iloprocentowa byla podwyzka
[23:56:09] user> miesiac temu sukienka kosztowala 340 zl teraz podrozala o 56 zl. : * : * : TestBot-2
[23:56:09] Match: * KOSZTOWALA * ZL * PODROZALA O * ZL : * : * : TestBot-2
[23:56:09] Symbolic Reduction:
[23:56:09] user> O ILE PROCENT : * : * : TestBot-2
[23:56:09] Match: O ILE PROCENT : * : * : TestBot-2
[23:56:09] user> Iloprocentowa byla podwyzka : * : * : TestBot-2
[23:56:09] No match found for path "Iloprocentowa byla podwyzka".
[23:56:09] Response 38 in 16 ms. (Average: 18.631578 ms.)
[23:56:09] Testy 2>Wynosila 16.470588235294116%
Jest to zadanie typu jakim procentem jednej liczby jest inna liczba. Pytanie zadania nie zostało wczytane, ponieważ przyjęłam, że tylko jedna zmienną można tu wyznaczyć.
[0:23:50] [Testy 2] user> kowalski wplacil do banku 2000 zl gdzie oprocentowanie wynosi 12 procent jaka kwote bedzie mial po roku
[0:24:18] user> kowalski wplacil do banku 2000 zl gdzie oprocentowanie wynosi 12 procent jaka kwote bedzie mial po roku : * : * : TestBot-2
[0:24:18] Match: * WPLACIL DO BANKU * ZL * OPROCENTOWANIE WYNOSI * PROCENT JAKA KWOTE BEDZIE MIAL PO * : * : * : TestBot-2
[0:24:18] Filename: "C:\Documents and Settings\Karolina\Desktop\ProgramD\aiml\standard\procent.aiml"
[0:24:18] Response 6 in 15 ms. (Average: 38.833332 ms.)
[0:24:18] Testy 2>kwota: 2240.0
Zadanie typu obliczanie procentu danej liczby. Pobranie pytania wydało się niezbędne, ponieważ pytania moga być dwa : jakie odsetki uzyskał lub jaką kwotę będzie miał
Zadania z testów kompetencji
[0:37:04] [Testy 2] user> oblicz 15 procent liczby 14500
[0:49:54] user> oblicz 15 procent liczby 14500 : Nowe wynagrodzenie 2300 : * : TestBot-2
[0:49:54] Match: OBLICZ * PROCENT LICZBY * : * : * : TestBot-2
[0:49:54] Filename: "C:\Documents and Settings\Karolina\Desktop\ProgramD\aiml\standard\procent.aiml"
[0:49:54] Response 8 in 16 ms. (Average: 33.125 ms.)
[0:49:54] Testy 2> 2175.0
Program rozwiazał zadanie poprawnie, znalazł wzorzec pasujący do schematu zadania
[0:51:27] [Testy 2] user> Grazyna zaczela czytac ksiazke. Ile procent pozostalo jej do konca, jezeli juz przeczytala dokladnie 30%,
[0:54:14] user> Grazyna zaczela czytac ksiazke. : * : * : TestBot-2
[0:54:14] No match found for path "Grazyna zaczela czytac ksiazke".
[0:54:14] user> Ile procent pozostalo jej do konca jezeli juz przeczytala dokladnie 30%, : * : * : TestBot-2
[0:54:14] No match found for path "Ile procent pozostalo jej do konca jezeli juz przeczytala dokladnie 30".
[0:54:14] Response 10 in 0 ms. (Average: 31.2 ms.)
[0:54:14] Testy 2>
Niestety program nie potrafił dopasować zadania do żadnego typu zadania z bazy.
4. Wnioski i podsumowanie
Zadanie zrealizowania chatbota rozwizującego zadania z procentami jest łatwe jeśli ograniczymy się do najprostszych, podstawowych zadań (oblicz procent danej liczby itp.). Kombinacja składni wyrazów w takim zadaniu jest możliwa do przewidzenia i zaimplementowania przy pomocy języka AIML. Natomiast jeśli bot ma za zadanie rozwiazywać zadania z dłuższą treścią jego baza wiedzy musi był bardzo duża. Zadania z procentami mogą się odnosił do bardzo wielu sytuacji a co za tym idzie będą używały wielu różnych wyrazów. Baza wiedzy naszego bota wyposażona jest jedynie w słownictwo z jednej ksiażki (cena, kwota, odsetki, podrożeć, stanieć itp.). Kolejnym utrudnieniem w tworzeniu bazy wiedzy może być trudność jezyka polskiego. W zadaniach z treścią rzeczowniki i czasowniki są odmieniane, więc dla tego samego zadania musimy rozpatrzyć kilka możliwych wzorców zadania.
5. Materiały wykorzystane przy budowie bota