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"

  1. Wstęp
  2. Sposób realizacji projektu
  3. Przykłady działania programu
  4. Wnioski
  5. 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

Valid HTML 4.01 Transitional