Presentation is loading. Please wait.

Presentation is loading. Please wait.

Грамматический разбор английского предложения. Игры на Прологе

Similar presentations


Presentation on theme: "Грамматический разбор английского предложения. Игры на Прологе"— Presentation transcript:

1 Грамматический разбор английского предложения. Игры на Прологе
Грамматический разбор английского предложения. Игры на Прологе Лекция № 09

2 Грамматический разбор английского предложения
Подключить словарь Чтение строки Превращение предложения в список слов Разбор предложения Вывод результата

3 Словарь det("a") det("an") det("the") det("some") det("all")
det("every") det("this") det("that") det("her") det("his") det("their") det("my") det("your") det("big") det("small") det("red") det("blue") noun("John") noun("Susan") noun("cat") noun("food") noun("fish") noun("Prolog") noun("man") noun("woman") noun("mother") noun("children") noun("house") noun("computer") noun("tree") noun("dog") noun("dan") noun("kathy") noun("foot“) noun("you") noun("I") noun("me") rel("that") rel("who") rel("whom") rel("which") verb("love") verb("like") verb("hate") verb("live") verb("eat") verb("ate") verb("sleep") verb("sit") verb("run") verb("drink“) verb("read") verb("jump") verb("is") verb("are") verb("am")

4 База данных и домены facts - senan_db det(string) noun(string)
rel(string) verb(string) domains DETERM = none;determ(string) NOUNP = nounp(DETERM,string,RELCL) RELCL = none;relcl(string,VERBP) SENTENCE = sent(NOUNP,VERBP) VERBP = verb(string);verbp(string,NOUNP) TOKL = string*

5 Предикаты Описание различных форм слов is_det(string) is_noun(string)
is_rel(string) is_verb(string) Парсер nondeterm s_determ(TOKL,TOKL,DETERM) nondeterm s_nounp(TOKL,TOKL,NOUNP) nondeterm s_relcl(TOKL,TOKL,RELCL) nondeterm s_sentence(TOKL,TOKL,SENTENCE) nondeterm s_verbp(TOKL,TOKL,VERBP) Сканер check(string) tokl(string,TOKL)

6 Clauses Является ли предложение набором слов
s_sentence(TOKL,TOKL2,sent(NOUNP,VERBP)):- s_nounp(TOKL,TOKL1,NOUNP), s_verbp(TOKL1,TOKL2,VERBP), TOKL2=[], !. s_sentence(_,_,_):- write("Sentence not recognized\n"), fail.

7 Группа подлежащего, определение
s_nounp(TOKL,TOKL2,nounp(DETERM,NOUN,RELCL)):- s_determ(TOKL,[NOUN|TOKL1],DETERM), is_noun(NOUN), s_relcl(TOKL1,TOKL2,RELCL). s_determ([DETERM|TOKL],TOKL,determ(DETERM)):- is_det(DETERM). s_determ(TOKL,TOKL,none).

8 Придаточное предложение, глагольная группа
s_relcl([REL|TOKL],TOKL1,relcl(REL,VERBP)):- is_rel(REL), s_verbp(TOKL,TOKL1,VERBP). s_relcl(TOKL,TOKL,none). s_verbp([VERB|TOKL],TOKL1,verbp(VERB,NOUNP)):- is_verb(VERB), s_nounp(TOKL,TOKL1,NOUNP). s_verbp([VERB|TOKL],TOKL,verb(VERB)):- is_verb(VERB).

9 Принадлежность к какой-нибудь части речи
is_noun(X):-noun(X),!. is_noun(X):-noun(Y),concat(Y,"s",X),!. is_det(X):-det(X),!. is_rel(X):-rel(X),!. is_verb(X):-verb(X),!. is_verb(X):-verb(Y),concat(Y,"s",X),!. is_verb(X):-verb(Y),concat(Y,"ed",X),!. is_verb(X):-verb(Y),concat(Y,"es",X),!. is_verb(X):-verb(Y),concat(Y,"ing",X),!.

10 Преобразование строки в список слов
tokl(STR,[TOK|TOKL]):- fronttoken(STR,TOK,STR1), check(TOK), !, tokl(STR1,TOKL). tokl(_,[]).

11 Является ли слово частью речи и какой
check(WORD):- is_noun(WORD), !. is_det(WORD), is_rel(WORD), is_verb(WORD), write("Unknown word: ",WORD), nl.

12 Раздел цели goal consult("sen_an.dba",senan_db),
write("Try: every man that lives loves a woman\n"), write("Write a sentence: "), readln(STR), tokl(STR,TOKL), s_sentence(TOKL,RESTTOKL,SENT), RESTTOKL=[], write(SENT).

13 Игра «Быки и коровы» Каждый из игроков задумывает и записывает тайное 4-значное число с неповторяющимися цифрами. Игрок, который начинает игру по жребию, делает первую попытку отгадать число. Попытка - это 4-значное число с неповторяющимися цифрами, сообщаемое противнику. Противник сообщает в ответ, сколько цифр угадано без совпадения с их позициями в тайном числе (количество коров) и сколько угадано вплоть до позиции в тайном числе (количество быков). Игроки делают попытки угадать по очереди. Побеждает тот, кто угадает число первым, при условии, что он не начинал игру. Если же отгадавший начинал игру, его противнику предоставляется последний шанс угадать последовательность.

14 «Быки и коровы» play :- rnd(X1,X2,X3,X4), int2char(X1,C1),
WRITE("Ваши ходы: "),nl, move([C1,C2,C3,C4],1).

15 Загадывание компьютером числа
rnd(X1,X2,X3,X4) :- rand(X1), rand(X2), NOT(find([X1],X2)), rand(X3), NOT(find([X1,X2],X3)), rand(X4), NOT(find([X1,X2,X3],X4)). rnd(X1,X2,X3,X4) :- rnd(X1,X2,X3,X4). rand(X) :- RANDOM(9,X). find([H|_],H). find([_|T],X):- find(T,X). int2char(I,C) :- str_int(S,I), str_char(S,C).

16 Подсчет попыток move(L,Moves) :- specmove(L,A,Moves),
equal(L,A), nl, write(“Поздравляю!!! Вы угадали!"). move([C1,C2,C3,C4],10) :- NL, write("Количество попыток закончилось."),nl, write("Было загадано число "), write(C1), write(C2), write(C3), write(C4). move(L,Moves) :- NewMoves=Moves+1, move(L,NewMoves).

17 Проверка попытки specmove(L,[A1,A2,A3,A4],Moves) :- write(Moves),
readchar(A1), write(A1), readchar (A2), write(A2), readchar (A3), write(A3), readchar (A4), write(A4), check_bulls(L,[A1,A2,A3,A4],0), check_cows(L,[A1,A2,A3,A4],0), nl,!.

18 Проверка быков check_bulls([],_,Bulls):- write(Bulls), write(" : ").
check_bulls([H1|T1],T2,Bulls) :- find(T2,H1), NewBulls=Bulls+1, check_bulls(T1,T2,NewBulls). check_bulls([_|T1],T2,Bulls) :- check_bulls(T1,T2,Bulls).

19 Проверка коров check_cows([],[],Cows) :- write(Cows).
check_cows([H1|T1],[H1|T2],Cows):- NewCows=Cows+1, check_cows(T1,T2,NewCows). check_cows([_|T1],[_|T2],Cows):- check_cows(T1,T2,Cows).

20 Остальные разделы DOMAINS LIST=CHAR* PREDICATES
nondeterm check_cows(LIST,LIST,INTEGER) nondeterm check_bulls(LIST,LIST,INTEGER) nondeterm rand(INTEGER) nondeterm rnd(INTEGER,INTEGER,INTEGER,INTEGER) nondeterm find(LIST,INTEGER) nondeterm int2char(INTEGER,CHAR) nondeterm specmove(LIST,LIST,INTEGER) nondeterm move(LIST,INTEGER) nondeterm play nondeterm equal(LIST,LIST) GOAL play.

21 Самостоятельное задание
Модифицировать программу так, чтобы она работала еще во втором режиме «Машина - человек», т.е. чтобы человек загадывал число, а компьютер отгадывал его.


Download ppt "Грамматический разбор английского предложения. Игры на Прологе"

Similar presentations


Ads by Google