ВУЗ:
Составители:
Рубрика:
37
fronttoken("22all kids do fine",TOK2,REST2),
write("TOK = ",TOK2," REST = ",REST2),nl,
fronttoken("22.66all kids do fine",TOK3,REST3),
write("TOK = ",TOK3," REST = ",REST3),nl,
fronttoken("-22.66all kids do fine",TOK4,REST4),
write("TOK = ",TOK4," REST = ",REST4),nl,
fronttoken(".66all kids do fine",TOK5,REST5),
write("TOK = ",TOK5," REST = ",REST5),nl,
fronttoken("Иди ко мне!",TOK7,REST7),
write("Исходная строка >>> ","Иди ко мне!"),nl,
write("TOK = ",TOK7," REST = ",REST7).
goal
token().
% Выход:
TOK = all REST = kids do fine
TOK = all REST = +kids do fine
TOK = 22 REST = all kids do fine
TOK = 22.66 REST = all kids do fine
TOK = – REST = 22.66all kids do fine
TOK = . REST = 66all kids do fine
Исходная строка >>> Иди ко мне!
TOK = Иди REST = ко мне!
Последнее использование fronttoken демонстрирует, что вы
можете использовать этот предикат для парсирования текстов на
русском языке, что не позволял TurboProlog v.2.0. Давайте, мы это
и сделаем.
domains
слово=symbol
часть_речи=symbol
facts -f1
лексема(слово,часть_речи)
знак(symbol,symbol)
predicates
парсировать_предложение(symbol)
38
определить_нечто(symbol)
goal
assert(лексема("я","местоимение")),
assert(лексема("бы","частица")),
assert(лексема("на","предлог")),
assert(лексема("но","союз")),
assert(лексема("выходить","глагол")),
assert(лексема("вышел","глагол")),
assert(лексема("идет","глагол")),
assert(лексема("улица","существительное")),
assert(лексема("улицу","существительное")),
assert(лексема("дождь","существительное")),
assert(знак(",","запятая")),
assert(знак(".","точка")),
Предл="Я бы вышел на улицу, но идет
сильный дождь.",
парсировать_предложение(Предл).
clauses
парсировать_предложение(Предл):-
fronttoken(Предл,Нечто,Остаток),!,
upper_lower(Нечто,Нечто1), % преобразование регистра
определить_нечто(Нечто1),
парсировать_предложение(Остаток);!.
определить_нечто(X):-
лексема(X,Часть_речи),!,
write("Слово = ",X," Часть_речи = ",Часть_речи),nl;
знак(X,Наименование),!,
write("Знак препинания = ",X," Наименование =
",Наименование),nl;
write("Элемент ",X," не определен"),nl.
Выход:
Слово = я Часть_речи = местоимение
Слово = бы
Часть_речи = частица
Слово = вышел Часть_речи = глагол
Слово = на Часть_речи = предлог
Слово = улицу Часть_речи = существительное
Знак препинания = , Наименование = запятая
Слово = но Часть_речи = союз
fronttoken("22all kids do fine",TOK2,REST2), определить_нечто(symbol)
write("TOK = ",TOK2," REST = ",REST2),nl, goal
fronttoken("22.66all kids do fine",TOK3,REST3), assert(лексема("я","местоимение")),
write("TOK = ",TOK3," REST = ",REST3),nl, assert(лексема("бы","частица")),
fronttoken("-22.66all kids do fine",TOK4,REST4), assert(лексема("на","предлог")),
write("TOK = ",TOK4," REST = ",REST4),nl, assert(лексема("но","союз")),
fronttoken(".66all kids do fine",TOK5,REST5), assert(лексема("выходить","глагол")),
write("TOK = ",TOK5," REST = ",REST5),nl, assert(лексема("вышел","глагол")),
fronttoken("Иди ко мне!",TOK7,REST7), assert(лексема("идет","глагол")),
write("Исходная строка >>> ","Иди ко мне!"),nl, assert(лексема("улица","существительное")),
write("TOK = ",TOK7," REST = ",REST7). assert(лексема("улицу","существительное")),
goal assert(лексема("дождь","существительное")),
assert(знак(",","запятая")),
token(). assert(знак(".","точка")),
% Выход: Предл="Я бы вышел на улицу, но идет сильный дождь.",
парсировать_предложение(Предл).
TOK = all REST = kids do fine clauses
TOK = all REST = +kids do fine парсировать_предложение(Предл):-
TOK = 22 REST = all kids do fine fronttoken(Предл,Нечто,Остаток),!,
TOK = 22.66 REST = all kids do fine upper_lower(Нечто,Нечто1), % преобразование регистра
TOK = – REST = 22.66all kids do fine определить_нечто(Нечто1),
TOK = . REST = 66all kids do fine парсировать_предложение(Остаток);!.
Исходная строка >>> Иди ко мне! определить_нечто(X):-
TOK = Иди REST = ко мне! лексема(X,Часть_речи),!,
write("Слово = ",X," Часть_речи = ",Часть_речи),nl;
Последнее использование fronttoken демонстрирует, что вы знак(X,Наименование),!,
можете использовать этот предикат для парсирования текстов на write("Знак препинания = ",X," Наименование =
русском языке, что не позволял TurboProlog v.2.0. Давайте, мы это ",Наименование),nl;
и сделаем. write("Элемент ",X," не определен"),nl.
domains Выход:
слово=symbol Слово = я Часть_речи = местоимение
часть_речи=symbol Слово = бы Часть_речи = частица
facts -f1 Слово = вышел Часть_речи = глагол
лексема(слово,часть_речи) Слово = на Часть_речи = предлог
знак(symbol,symbol) Слово = улицу Часть_речи = существительное
predicates Знак препинания = , Наименование = запятая
парсировать_предложение(symbol) Слово = но Часть_речи = союз
37 38
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »
