Escolar Documentos
Profissional Documentos
Cultura Documentos
EDITOR:
Marcos Marcionilo
CONSELHO EDITORIAL
Ana Stahl Zilles [Unisinos]
Angela Paiva Dionisio [UFPE]
Carlos Alberto Faraco [UFPR]
Celso Ferrarezi Jr. [UNIFAL]
Egon de Oliveira Rangel [PUC-SP]
Henrique Monteagudo [Universidade de Santiago de Compostela]
José Ribamar Lopes Batista Jr. [UFPI/CTF/LPT]
Kanavillil Rajagopalan [Unicamp]
Marcos Bagno [UnB]
Maria Marta Pereira Scherre [UFES]
Roberto Mulinacci [Universidade de Bolonha]
Roxane Rojo [UNICAMP]
Salma Tannus Muchail [PUC-SP]
Sírio Possenti [UNICAMP]
Stella Maris Bortoni-Ricardo [UnB]
Tommaso Raso [UFMG]
Vera Lúcia Menezes de Oliveira e Paiva [UFMG/CNPq]
2
Gabriel de Ávila Othero
LINGUÍSTICA COMPUTACIONAL:
TEORIA & PRÁTICA
Direção: ANDRÉIA CUSTÓDIO
O88L
Othero, Gabriel de Ávila, 1978-
Linguística computacional: teoria & prática / Gabriel de Ávila Othero,
Sérgio de Moura Menuzzi. — São Paulo: Parábola Editorial, 2005.
(Na ponta da língua ; 11)
Contém glossário
Inclui bibliografia
ISBN 978-85-88456-39-6
Direitos reservados à
PARÁBOLA EDITORIAL
Rua Dr. Mário Vicente, 394 - Ipiranga
04270-000 São Paulo, SP
pabx: [11] 5061-9262 | 5061-8075 | fax: [11] 2589-9263
home page: www.parabolaeditorial.com.br
e-mail: parabola@parabolaeditorial.com.br
Todos os direitos reservados. Nenhuma parte desta obra pode ser reprodu-
zida ou transmitida por qualquer forma e/ou quaisquer meios (eletrônico ou
mecânico, incluindo fotocópia e gravação) ou arquivada em qualquer sistema
ou banco de dados sem permissão por escrito da Parábola Editorial Ltda.
ISBN: 978-85-88456-39-6
© do texto: Gabriel de Ávila Othero & Sérgio de Moura Menuzzi
© da edição: Parábola Editorial, São Paulo, 2005
3
SUMÁRIO
INTRODUÇÃO .............................................................................. 8
4
SOBRE OS AUTORES
5
Que quantidade imensa de coisas um homem deve fazer para que
digamos que ele pensa.
L udwig W ittgenstein
6
Não há nada mais decepcionante que se descobrir robô. Não há nada de
autêntico ou criativo. Tudo em mim é repetição predeterminada.
7
INTRODUÇÃO
Após verificar seus e-mails, você se lembra de que faz muito tempo
desde a última vez em que comprou um CD de música (afinal,
ultimamente tem sido muito mais barato e rápido simplesmente “baixar”
as músicas da internet e pedir para que o computador lhe grave um CD).
Por isso, resolve visitar a loja virtual CDthèque, loja francesa
especializada em músicas europeias, do rock ao pop, do folk ao techno.
Você então comanda oralmente o seu computador:
8
— Bonne nuit. Parlez-vous français, Deutsch, English, español,
italiano ou português?
— Sim, eu gosto bastante. Por falar nisso, onde fica a sede da sua
loja?
9
no ano 2025 — ou talvez até antes. Afinal, a tecnologia tem avançado a
uma velocidade incrivelmente espantosa, e há uma tendência cada vez
maior nos avanços tecnológicos de buscar uma melhor interação entre
homens e máquinas.
Neste livro, veremos que parte dessa busca por uma melhor
interação entre humanos e máquinas está se dando através da linguagem
natural, ou seja, da linguagem do homem. Cada vez mais, as máquinas
estão sendo programadas para responder a comandos do usuário em sua
própria linguagem, seja ela o português, o chinês ou o alemão. Celulares
efetuam ligações com base em comandos de voz, editores de texto
conseguem ler em voz alta textos inteiros, programas de chatterbots
(como a Persephone, que vimos acima) são criados para trabalhar no
atendimento virtual de grandes empresas…
10
conhecimentos da sintaxe no desenvolvimento de um sistema de análise
das frases do português — um “parser sintático” programado em
linguagem Prolog.
11
1. TECNOLOGIA E LINGUAGEM
década de 1960, quando tinha menos de 20 anos. Em 1976, criou uma máquina de
leitura para cegos e, em 1984, o sintetizador eletrônico. Há alguns anos — em 2001 —,
Kurzweil ganhou o prêmio Lemelson-MIT, faturando a bagatela de U$ 500.000,00. Se
deseja saber mais sobre Ray Kurzweil e seus desenvolvimentos em Inteligência
Artificial, recomendamos a sua interessante página na internet: www.kurzweilai.net.
13
é esta busca incessante e as expectativas de cientistas otimistas como
Kurzweil que nos autorizam a imaginar o diálogo fictício entre um
homem e uma máquina que vimos Introdução do livro.
Acreditamos que, ao tentar fazer com que uma máquina seja capaz
de interagir com humanos e compreendê-los (ou melhor, compreender-
nos), inevitavelmente teremos de fazer com que antes ela aprenda a se
comunicar com um ser humano. Logicamente, para qualquer pessoa, não
há maneira mais fácil de comunicação do que através de sua própria
língua materna, seja ela o português, o inglês, o chinês ou o russo. Por
isso, muitos pesquisadores vêm trabalhando com o tratamento
computacional da linguagem humana (ou das línguas humanas), isto é,
com maneiras de simular, no computador, aquilo que fazemos
naturalmente quando conversamos com alguém. Isso exige, entretanto,
que se avance no estudo do funcionamento das línguas naturais e na
descrição formal dos sistemas linguísticos, e é aí que começamos a falar
da Linguística Computacional.
14
estrutura do pensamento humano. (…) [O] uso de linguagem
humana pode aumentar a aceitação de softwares e a
produtividade de seus usuários (grifos nossos). (Uzskoreit,
s.d.: 2).
C:\> cd documentos
C:\documentos> copy trabalho.doc a:\
15
• Será realmente que uma máquina algum dia poderá ser
capaz de dominar a sintaxe, o sistema fonológico, as nuances
semânticas e o uso pragmático, entre outros conhecimentos,
de uma língua natural?
• Será que um computador algum dia estará dominando uma
língua natural, como o português, o inglês ou o japonês, tão
bem quanto um falante nativo do idioma?
2 Sobre esse interessante tema, sugerimos algumas leituras, como Burgierman (2001),
TP PT
Carvalho (2000), Chomsky (1972, 1973), Del Nero (1997), Hacker (2000), Hawking
(2001), Hodges (2001), Kelly III (2001), Pereira (2001) e ainda os filmes 2001: uma
Odisseia no Espaço (Estados Unidos / Inglaterra, 1968); A. I. - Inteligência Artificial
(Estados Unidos, 2001); Eu, robô (Estados Unidos, 2004); e The Matrix (Estados Unidos,
1999).
16
conhecida como “Linguística Computacional”. De acordo com Vieira &
Lima (2001: 1), a Linguística Computacional pode ser entendida como “a
área de conhecimento que explora as relações entre linguística e
informática, tornando possível a construção de sistemas com capacidade
de reconhecer e produzir informação apresentada em linguagem
natural”.
3
TPVeja, a esse respeito, Berber Sardinha (2000a e 2000b) e Garside, Leech & McEnery
(1997).
17
dialeto ou modalidade dela). Muitos desses estudos não têm uma
aplicação prática para o desenvolvimento computacional, como a
construção de softwares ou o desenvolvimento e aperfeiçoamento de
programas que envolvam a linguagem natural. De acordo com Berber
Sardinha (2000b: 2)
18
2. TRABALHOS EM LINGUÍSTICA COMPUTACIONAL
1
TPNão iremos abranger todas as áreas do conhecimento linguístico que contam com
PT
20
De maneira geral, podemos dizer que os desenvolvimentos que
envolvem essas duas áreas da Linguística enquadram-se nas áreas de (a)
reconhecimento de fala; (b) síntese de fala; e (c) sistemas de diálogos em
língua falada.
2
TPwww.motorola.com.br.
PT
3
TPwww-3.ibm.com/software/speech.
PT
4 www.text2speech.com.
5 www.micropower.com.br/dv/vvision/index.asp.
TP PT
21
esses programas facilitarem o uso do computador para usuários leigos,
eles auxiliam principalmente os usuários que apresentam algum tipo de
deficiência visual.
22
Além da Fonética e da Fonologia, outras áreas da Linguística são
de grande importância para o desenvolvimento de programas de PLN,
especialmente a Sintaxe e a Semântica. Por ora, podemos entender a
Sintaxe como a disciplina “que estuda as regras, as condições e os
princípios subjacentes à organização estrutural dos constituintes das
frases, ou seja, o estudo da ordem dos constituintes das frases” (Mateus
& Xavier, 1992: 1079). E a Semântica, também provisoriamente, pode ser
definida como a área da Linguística que se ocupa em estudar o
significado das palavras e das proposições. Estudos de sintaxe e
semântica são fundamentais para sistemas que envolvem a compreensão
ou a geração automática de frases de uma língua. Este é o caso, por
exemplo, dos chatterbots.
6 Curiosidade: a palavra robot (robô) foi criada pelo escritor tcheco Karel Capek (1890-
1938) para designar trabalho repetitivo e forçado. Ela foi utilizada pela primeira vez
em sua peça teatral R.U.R – Rossum’s Universal Robots, que estreou no Teatro Nacional
de Praga em 25 de janeiro de 1921.
7 Dê uma olhada em www-ai.ijs.si/eliza/eliza.html.
TP PT
23
teclado, como em uma moderna sala de bate-papo). O curioso da história
é que, quando Weizenbaum pedia para que os outros interagissem com
seu programa, muitas pessoas acabavam ficando tão íntimas da ELIZA
que chegavam a pedir para que o próprio Weizenbaum saísse da sala,
para que a conversa pudesse ser mais particular. Como você vê, estas
pessoas se esqueciam de que ELIZA era, na verdade, apenas um
programa de computador, e acabavam “desabafando” com ela. Alguns
psicólogos chegaram a ver nisso o futuro da psicanálise.
Para você ter uma ideia de como ELIZA “se comunicava”, veja, no
quadro abaixo, um trecho de uma conversa entre ela e uma usuária
humana, apresentado em Weizenbaum (1966) 8:
24
U: Você não é muito agressiva, mas eu acho que você não quer que eu perceba isso.
ELIZA: O QUE FAZ VOCÊ PENSAR QUE EU NÃO SOU AGRESSIVA
U: Você não discute comigo.
ELIZA: POR QUE VOCÊ ACHA QUE EU NÃO DISCUTO COM VOCÊ
U: Você tem medo de mim.
ELIZA: AGRADA A VOCÊ SABER QUE EU TENHO MEDO DE VOCÊ
U: Meu pai tem medo de todo mundo.
ELIZA: O QUE MAIS VEM À SUA MENTE QUANDO VOCÊ PENSA NO SEU PAI
U: Valentões.
ELIZA: ISSO TEM ALGUMA RELAÇÃO COM O FATO DE O SEU NAMORADO TER
FEITO VOCÊ VIR AQUI
www.loebner.net.
9
TP PT
10O que conhecemos hoje como Teste de Turing foi proposto pelo filósofo e
matemático inglês Alan Turing (1921-1954), em 1950, em seu artigo “Computing
Machinery and Intelligence” (Mind, 51). Turing chamou-o de “jogo de imitação”.
25
como a própria definição do conceito de Inteligência Artificial, apesar
das críticas feitas por vários filósofos, entre os quais o norte-americano
John Searle, uma das maiores autoridades da chamada “Filosofia da
Mente” 11.
26
sentenças de uma língua para outra, ou para outras. Os programas de
tradução automática estão entre os primeiros sistemas que foram objeto
de estudo da Linguística Computacional. Podemos dividir esta classe de
programas em (a) gerenciadores de terminologia; (b) ferramentas de
tradução automática; e (c) tradutores automáticos auxiliares à tradução
humana.
abrangente.
com.
27
cerca de 15-30% no custo total com a tradução 15 . Exemplos de programas
PT
15
TP PT Cf. www.languagepartners.com/reference-center/whitepapers/catinto.htm.
16
TP PT Cf. www.trados.com e www.atril.com.
28
unidades significativas em frases”. Veremos que o estudo das regras de
formação de constituintes sintáticos das línguas naturais é vital para o
funcionamento de diversos aplicativos desenvolvidos em PLN,
especialmente a construção de parsers.
29
com um esquema de parsing definido, qualquer sentença do
inglês que possa ocorrer naturalmente, sem restrições, de uma
gama de gêneros textuais tão vasta quanto possível (grifos dos
T
30
2.3. O Prolog
31
linguagem declarativa, o Prolog deixa que o computador decida a
resposta de um problema a partir dos dados que tem disponíveis. Ainda
segundo Dougherty (1994: 15), a maneira de se encarar a programação
em Prolog pode ser resumida no que segue:
32
semânticos, para a língua portuguesa, como em Almeida et al. (2003),
Othero (2004), Pagani (2004) e Vieira & Lima (2001). Para a língua
inglesa, também encontramos vários exemplos de sistemas de parsing em
Prolog; podemos destacar os trabalhos pioneiros de Pereira & Shieber
(1987) e Pereira & Warren (1980). Além destes, também são bastante
conhecidos os trabalhos de Clocksin & Mellish (1987), Gazdar & Mellish
(1989), Covington (1994) e Dougherty (1994).
33
3. DESENVOLVIMENTO DE UM PARSER SINTÁTICO I
35
Vejamos as representações da sentença (3.1) abaixo:
(3.1a) S
SN SV
Det N V SN
Det N
S = sentença
SN = sintagma nominal
Det = determinante
SV = sintagma verbal
V = verbo
36
O termo gramática em linguística pode ter diversas acepções, que
podem ir desde o “sentido restrito de gramática escolar, quer dizer,
aquela que pretende dar as normas do bom uso de uma língua” até o
“sentido muito amplo e bastante mal definido, como aparece na
gramática histórica e comparada” (Nivette, 1975: 1). E, de fato, existem
inúmeras noções de gramática (só no dicionário de Dubois et al., 1988,
por exemplo, encontramos mais de dez entradas para o termo! 2).
37
ou reconhecendo sentenças gramaticais (e apenas elas)?
38
Uma sentença agramatical como (3.10) foge a algumas regras de
nossa gramática (entendida aqui como o conjunto de regras sintáticas
que geram e reconhecem sentenças bem formadas do português).
Veremos nas subseções seguintes mais motivos por que devemos
considerar sentenças como (3.9) gramaticais e sequências de palavras
como (3.10) agramaticais. Na próxima subseção, apresentaremos a noção
que nos possibilita analisar a frase (3.1) através de uma árvore sintática
(3.1a) e de uma representação de colchetes rotulados (3.1b).
ama a Maria
39
qualquer tipo de agrupamento interno na frase, até chegarmos aos itens
lexicais, como em (3.11a) e (3.11b). Poderíamos até mesmo supor que a
sentença não tenha qualquer organização interna, sendo formada
simplesmente por um aglomerado linear de palavras, como em (3.11c):
40
— ou agrupamentos — menores, pressupusemos essa noção. Isto é, foi
com base nela que falamos antes em SN (Sintagma Nominal) e SV
(Sintagma Verbal).
(3.11’) S [ SN [O João]
B B B B B
SV [ama
B [ SN [a Maria]]]
B B
41
(3.11’a) [O João] e [o Pedro] amam a Maria.
42
Se tentarmos inserir esse elemento intruso dentro de um sintagma
nominal, o resultado será uma frase agramatical, como podemos ver
abaixo:
(a) S à SN SV
(b) SN à Det N
(c) SV à V SN
43
As regras de reescrever (a), (b) e (c) acima devem ser entendidas
da seguinte maneira: um constituinte S irá se expandir em dois outros
constituintes (ou nós): SN e SV. SN não é um constituinte terminal; a
regra (b) mostra que ele deve também se expandir, em Det e N. Da
mesma maneira, a regra (c) diz que o SV também não é um constituinte
terminal: ele por sua vez irá gerar outros dois nós, V e SN.
Regra (a) S
Det N
(d) Det à o, a
(e) N à João, Maria
(f) V à ama
44
nossa gramática. A partir de todas essas regras, poderemos estruturar a
sentença (3.11) em uma estrutura arbórea — ou marcador sintagmático
— que nos permitirá visualizar claramente a organização hierárquica
entre os constituintes, e suas relações de precedência e dominância.
SN SV
Aplicando (b),
SN
Det N
45
SV
V SN
SN SV
Det N V SN
Det N
SN SV
Det N V SN
Det N
46
das sentenças. A relação de precedência diz respeito à posição linear dos
nós na estrutura arbórea: dizemos que um nó precede o outro se ele
estiver à esquerda desse outro nó e entre eles não houver relação de
dominância. Por exemplo, o SN (o João) precede o SV e precede o SN (a
Maria) na representação acima.
47
Da mesma forma, se ampliássemos a categoria V para ama, gosta,
cai, chove, obteríamos algumas frases nitidamente agramaticais, como
3.2.1. Prolog
48
para provar se o que pedimos é verdadeiro de acordo com a base de
dados do programa. Segundo Lu & Mead (s.d.: 1), no paradigma do
Prolog,
Sócrates é homem.
O homem é mortal.
5Os programas serão executados na versão SWI Prolog v. 4.0.7, que pode ser obtida
gratuitamente na internet (como no site www.inf.pucrs.br/~flavio/, por exemplo).
Todos os programas demonstrados aqui estão disponíveis na homepage da Editora
(www.parabolaeditorial.com.br) e foram desenvolvidos nessa mesma versão do
Prolog. Talvez agora já seja um bom momento de “baixar” o SWI Prolog e instalá-lo
em seu computador.
49
Em notação Prolog, devemos escrever:
homem(socrates).
mortal(X) :- homem(X).
E M P ROLOG EM PORTUGUÊS
(2) x(y). y é um x
Etc.
50
A segunda premissa em nosso exemplo (mortal(X) :- homem(X).) é
uma regra em Prolog: ela apresenta uma variável (escrita sempre em
letras maiúsculas) e uma relação de condicionalidade, expressa pelo
operador “:-”. Ao contrário dos fatos, as regras consistem sempre de
duas partes: a cabeça e o corpo:
mortal(X) :- homem(X).
Cabeça Corpo
Ou ainda:
51
A partir de nosso primeiro programa escrito em Prolog (mostrado
aqui no quadro 3.1), podemos fazer as seguintes consultas no Prolog
(quadro 3.2):
?- [programa1].
Passo B % programa01 compiled 0.00 sec, 752 bytes
Yes
?-homem(socrates).
Consulta 1
Yes
?-homem(X).
X = socrates
Consulta 2
Yes
?-
52
passo B, chamamos o nosso programa (digitando seu nome entre
colchetes, seguido de um ponto final: [programa01].) no prompt do
Prolog, “?-”. Como o Prolog conseguiu abrir com sucesso o programa01,
ele retornou um Yes logo abaixo.
Uma vez que o nosso programa tenha sido carregado com sucesso,
começamos a fazer algumas consultas, ou queries (note que o que está
escrito em negrito no quadro 3.2 é o nosso input, ou seja, aquilo que
digitamos no Prolog; o que está em texto sem marcação é o que o
programa nos mostra ou retorna como resposta. Adotaremos essa
convenção daqui para frente).
53
conhecimento. Como esta informação consta em seus dados (veja a
primeira linha de nosso programa, no quadro 3.1), o Prolog retornou
uma resposta afirmativa (Yes).
?- homem(platao).
Consulta 1 No
?- mortal(socrates).
Consulta 2
Yes
?- mortal(X).
Consulta 3 X = sócrates
Yes
?-
54
Na consulta 1, perguntamos ao programa se Platão era um homem
(homem(platao).). Já sabíamos de antemão que o programa iria dizer que
não, porque não demos a ele a informação sobre Platão em sua base de
dados, a fim de que ele pudesse realizar sua consulta e nos retornar uma
resposta afirmativa.
55
Sócrates era um homem. Isso é um fato do programa, uma verdade.
Depois, ele tentou a unificação de homem(socrates) com homem(X).
Dessa unificação, ele obteve que X = socrates. Ou seja, ele atribuiu o
valor “socrates” à variável “X”.
6 Ver, por exemplo, as propostas de Almeida et al. (2003), Bick (1996 e 2000),
Dougherty (1994), Gazdar & Mellish (1989), Othero (2004), Pagani (2004), Pereira &
Shieber (1987), entre outros.
56
às vezes desenvolvendo-os do zero para a proposta à mão.
Mesmo hoje, há provavelmente duas dúzias ou mais de
formalismos gramaticais distintos em uso em vários projetos
de PLN ao redor do mundo. TP
(a) S à SN SV
(b) SN à Det N
(c) SV à V SN
57
como variáveis), substituir a flecha “à” por “-->”, separar os
constituintes à direita da flecha por uma vírgula e, finalmente, lembrar
de colocar um ponto final no fim de cada regra.
Por exemplo, as regras (a1), (b1) e (c1), que são muito similares às
regras sintagmáticas com que estamos acostumados a lidar, serão
traduzidas internamente para o Prolog como (a2), (b2) e (c2),
respectivamente:
58
Veja no quadro 3.4 um programa que nada mais é do que uma
pequena amostra de gramática que dá conta dessa sentença.
% Regras Sintagmáticas
s --> sn, sv.
sn --> n.
sn --> det, n.
sv --> v, sn.
?-[programa02].
% programa02 compiled 0.01 sec, 1,820 bytes
Yes
?- s([zequinha,lavou,o,carro], []).
Yes.
?-
59
Na consulta acima, perguntamos ao programa se a sequência de
palavras “Zequinha lavou o carro” era uma sentença da língua de acordo
com a gramática e o léxico inscritos no programa02. Note que temos de
usar uma série de notações para consultar o programa. Temos de (i)
escrever todas as palavras em letras minúsculas; (ii) utilizar parênteses e
colchetes; (iii) separar os vocábulos por vírgulas e (iv) colocar, ao lado
do colchete com a nossa consulta, um duplo colchetes []. Em um parser
que conte com uma interface gráfica, como o Grammar Play, por
exemplo, nada disso é necessário. Como nosso objetivo aqui será
desenvolver apenas a gramática em Prolog em si, e não um parser
completo (quer dizer, que tenha uma gramática em Prolog e uma
interface gráfica), temos de começar a nos acostumar com essa notação
de consulta ao Prolog.
?- s([o,zequinha,lavou,o,carro], []).
Consulta 1
Yes
?- s([o,carro,lavou,zequinha], []).
Consulta 2
Yes
?- s([o,lavou,carro,zequinha], []).
Consulta 3
No
Consulta 4 ?- s([nosso,parser,ficou,excelente], []).
No
?-
60
Na primeira consulta, perguntamos se a frase “O Zequinha lavou o
carro” era gramatical. Como nosso programa apresenta duas regras para
a descrição do SN (SN à det N / SN à N), ele respondeu
afirmativamente à nossa pergunta. Na segunda consulta, usamos uma
frase gramatical (como vimos, de maneira sintaticamente estrita e
estritamente sintática), porém absurda semântica ou pragmaticamente, o
que resultou com que o programa nos retornasse outra vez uma resposta
afirmativa, indicando que esta é uma sentença gramatical na língua, de
acordo com a sua gramática.
61
4. DESENVOLVIMENTO DE UM PARSER SINTÁTICO II
(1) S à SN SV
A esta altura da leitura, já sabemos que ela quer dizer que uma
sentença (S) é formada por um sintagma nominal (SN) e um sintagma
verbal (SV). A partir dessa regra, devemos elaborar outras para o SN e
para o SV, ou conferir o que consta na literatura pertinente:
(2) SN à Det N
(3) SV à V SN
(4) Det à o, a
(5) N à João, Maria
(6) V à ama
2Como Heckler & Back (1988), Lemle (1984), Luft (1986), Perini (1989 e 2000) e Souza e
Silva & Koch (1993), que tratam da descrição sintática do português.
63
A partir delas, poderemos usar exemplos apresentados na literatura, que
servem para ilustrar ou para testar a regra (e aí, já vamos aumentando o
tamanho de nosso léxico). Por último, trabalharemos com as dificuldades
que encontrarmos para implementar uma regra em Prolog da melhor
maneira possível.
Pro
SN = Sintagma Nominal
Det = Determinante
Mod = Modificador
Pro = Pronome
64
(7.1) SN à (Det) (Mod) N (Mod)
(7.2) SN à Pro
(7.3) SN à Δ
(7.4) SN à N
(7.5) SN à Det N
(7.6) SN à Det Mod N
(7.7) SN à Det N Mod
(7.8) SN à Det Mod N Mod
(7.9) SN à Mod N Mod
(7.10) SN à Mod N
(7.11) SN à N Mod
3Na verdade, o leitor deve se lembrar que, para adaptar essas regras sintagmáticas em
Prolog, deveríamos escrevê-las sempre em letras minúsculas e utilizando vírgulas
entre os constituintes. Ou seja, ao invés de SN à Det N, por exemplo, teríamos de
escrever sn --> det, n. em um programa em Prolog.
65
(8) Det à (pré-det) det-base (pós-det)
66
(4.3) *os estes meninos
(4.4) os meninos
(4.5) estes meninos
(4.6) *dois os livros
(4.7) os dois livros
5A única modificação em relação ao que vimos até agora foi que ampliamos a classe
dos verbos (amam, pega, pegam, lê, leem).
67
Quadro 4.1: Primeira versão de nossa gramática
S à SN SV
SN à N
SN à Det N
SN à Det Mod N
SN à Det N Mod
SN à Det Mod N Mod
SN à Mod N Mod
SN à Mod N
SN à N Mod
SV à V SN
Det à det-base
Det à pré-det det-base
Det à pré-det det-base pós-det
Det à det-base pós-det
68
(4.10a) S [ SN [O João]
B B B B B
SV [tem SN [dois
B B B amigos]]] 6 TP PT
(4.12a) S [ SN Os meninos]
B B B B B
SV [leem SN [livros]]]
B B B
69
O atento leitor deve ter notado que há algo errado com o primeiro
SN da frase (4.16). Ou melhor, na verdade não há nada errado com esse
SN, há algo errado na gramática de nosso parser: de acordo com a nossa
gramática, não conseguimos reconhecer a regra que permita gerar o SN
visto em (4.16).
70
(4.19), (4.20) e (4.21), todas elas agramaticais na língua portuguesa,
devido a erros no sistema de concordância verbal, nominal ou ambas:
71
(4.24) são idênticas à (4.22), no que diz respeito a suas estruturas
sintáticas. Veja só:
O que faz então com que o parser não as reconheça como sentenças
gramaticais da língua? A resposta é muito simples: o léxico. Para nosso
reconhecedor gramatical, as palavras “gramáticas” e “revistas” não
querem dizer nada. Como essas palavras não estão na sua base de dados,
ele simplesmente não as reconhece e faz com que o programa não
consiga processar a análise das sentenças desejadas. Dê mais uma olhada
no quadro 4.1, que contém a gramática desenvolvida até aqui. (…)
72
Pasmem, linguistas desprevenidos: para nosso parser há oito
diferentes palavras nas frases (4.25) e (4.26): o, os, menino, meninos, ama,
amam, a, Maria. Isso quer dizer que teremos de implementar no léxico de
nosso programa quatro entradas para cada determinante, substantivo ou
adjetivo: duas para flexão de gênero (o, a, menino, menina, bonito, bonita) e
duas para flexão de número (o, os, menino, meninos, bonito, bonitos) 8. E o
que dizer dos verbos? Cada forma verbal infinitiva corresponde a
aproximadamente 59 diferentes “palavras” (entre as formas verbais dos
modos indicativo, subjuntivo e imperativo)!
8 Algumas palavras, no entanto, não sofrem flexão de gênero ou número, como por
exemplo, três (pré-det sem flexão de gênero e número), ônibus (N sem flexão de gênero
e número), inteligente (Adj sem flexão de gênero) etc.
9 Sobre parsers morfológicos e morfossintáticos, dê uma olhada em Cole et al. (1997),
TP PT
Dougherty (1994), Garside, Leech & McEnery (1997), Vieira & Lima (2001), e também
no site do NILC (www.nilc.icmc.usp.br/nilc/index.html). Além disso, em
www.flip.pt, o leitor irá encontrar os programas Wordbreaker e Stemmer, que lidam
com a estrutura morfológica de palavras do português, e em www.linguateca.pt, há
inúmeros links para ferramentas linguísticas que lidam com a morfologia do
português. Ao término da leitura deste livro, dê uma olhada nessas referências.
73
5. NOSSA GRAMÁTICA
% Inicialização do analisador
s(S) :- s(EC, S, []),
write('Estrutura de constituintes: '),
write(EC), nl.
%%%%%%%%%%%%%%%%%%%%%%%%
% Regras sintagmáticas %
%%%%%%%%%%%%%%%%%%%%%%%%
%Sentença (S)
1 s([sn, SN, sv, SV]) --> sn([_,Num], SN), sv(Num, SV).
2 s([sv, SV, sn, SN]) --> sv(Num, SV), sn([_,Num], SN).
3 s([sv, SVimp]) --> svimp(_, SVimp).
%%%%%%%%%%%%%%%%%%%
% Regras lexicais %
%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%
% Léxico %
%%%%%%%%%%
% Determinantes (det)
17 det([masc, sing], o).
18 det([fem, sing], a).
19 det([masc, plur], os).
20 det([fem, plur], as).
21 det([masc, sing], um).
22 det([fem, sing], uma).
23 det([masc, plur], uns).
24 det([fem, plur], umas).
25 det([masc, sing], este).
26 det([fem, sing], esta).
27 det([masc, plur], estes).
28 det([fem, plur], estas).
29 det([masc, sing], esse).
30 det([fem, sing], essa).
31 det([masc, plur], esses).
32 det([fem, plur], essas).
33 det([masc, sing], aquele).
34 det([fem, sing], aquela).
35 det([masc, plur], aqueles).
36 det([fem, plur], aquelas).
% Substantivos (N)
37 n([masc, sing], brinquedo).
38 n([masc, plur], brinquedos).
39 n([fem, sing], estante).
40 n([fem, plur], estantes).
41 n([masc, sing], homem).
42 n([masc, plur], homens).
43 n([masc, sing], joão).
44 n([masc, sing], livro).
45 n([masc, plur], livros).
75
46 n([fem, sing], maria).
47 n([masc, sing], menino).
48 n([fem, sing], menina).
49 n([masc, plur], meninos).
50 n([fem, plur], meninas).
51 n([fem, sing], mulher).
52 n([fem, plur], mulheres).
53 n([fem, sing], sintaxe).
% Verbos (V)
54 v(sing, i, corre).
55 v(plur, i, correm).
56 v(sing, td, ama).
57 v(plur, td, amam).
58 v(sing, ti(de), gosta).
59 v(plur, ti(de), gostam).
60 v(sing, tdi(em), coloca).
61 v(plur, tdi(em), colocam).
62 vimp(sing, i, chove).
% Preposições (P)
63 p(com, inf, com).
64 p(de, [_,_], de).
65 p(de, [masc,sing], do).
66 p(de, [fem, sing], da).
67 p(de, [masc, plur], dos).
68 p(de, [fem, plur], das).
69 p(em, [_,_], em).
70 p(em, [masc, sing], no).
71 p(em, [fem, sing], na).
72 p(em, [masc, plur], nos).
73 p(em, [fem, plur], nas).
(1) s([sn, SN, sv, SV]) --> sn([_,Num], SN), sv(Num, SV).
76
(c) O SV também apresenta a variável Num, que deve
unificar seu valor com o valor da variável Num do SN.
Ou seja, para que a S seja gramatical, o SN e o SV devem
concordar em relação a essa variável, isto é, em relação
ao número. Essa relação logo ficará mais clara, quando
analisarmos o léxico. É lá que os valores sing e plur estão
especificados para cada item lexical.
(2) s([sv, SV, sn, SN]) --> sv(Num, SV), sn([_,Num], SN).
2Cf. Naro & Votre (1999) para saber mais sobre sentenças marcadas em português
brasileiro.
77
Já a regra (3) dá conta das frases compostas por uma oração sem
sujeito:
(5.1) Chove.
Note, porém, que a regra (3) não diz respeito a qualquer SV. A
única maneira de encontrarmos uma oração sem sujeito será se o SV for
do tipo SVimp, ou seja, um SV com um verbo impessoal 3.
(a) (b)
78
(b) o determinante e o N devem apresentar o mesmo valor
para a variável Conc.
Essa regra lexical (assim como as demais regras deste tipo) permite
que o programa insira um item lexical do dicionário logo abaixo do nó
terminal N. Essa inserção deve ser sensível à variável que acompanha
cada item lexical. Para ficar mais clara essa relação, vejamos as regras
(39), (40), (41) e (42), que fazem parte do dicionário do programa:
79
As regras de inserção lexical permitem adicionar um item do
conjunto lexical da base de dados do programa abaixo de um nó
terminal. Ou seja, um N como estante irá abaixo de um nó terminal N. A
variável Conc garante que os valores de gênero e número acompanhem o
item lexical, e forçam a concordância entre determinante e substantivo,
por exemplo.
(7) sv(Num, [V, sn, [SN]]) --> v(Num, td, V), sn(_, SN).
(8) sv(Num, [V, sp, [SP]]) --> v(Num, ti(P), V), sp(P, SP).
(9) sv(Num, [V, sn, [SN], sp, [SP]]) --> v(Num, tdi(P), V),
sn(_, SN), sp(P, SP).
(6’) SV à V
(7’) SV à V SN
(8’) SV à V SP
(9’) SV à V SN SP
80
fenômeno 4. Se analisarmos a regra (14) e (15), de inserção lexical dos
verbos e dos verbos impessoais, poderemos ver que a valência é
especificada ali:
4Adotamos essa estratégia com base em Pagani (2004: 16) e Pereira & Shieber (1987:
86).
81
as regras (58) a (61), percebemos que tanto eles como os verbos
bitransitivos trazem consigo, na informação lexical, exatamente qual a
preposição que regem:
(8) sv(Num, [V, sp, SP]) --> v(Num, ti(P), V), sp(P, SP) .
. Informação lexical:
(58) v(sing, ti(de), gosta).
82
A regra (58) diz que gosta é um verbo no singular (sing),
transitivo indireto (ti), que rege um complemento com a preposição de.
(11) sp(Lex, [P, N]) --> p(Lex, Conc, P), n(Conc, N).
83
Note que também a preposição apresenta uma variável Conc, de
concordância, em casos de preposições que sofrem aglutinação com o
determinante.
84
teste-a tantas vezes quanto necessário. Aumente seu léxico e suas regras
gramaticais e descubra algumas dificuldades de implementação que não
abordamos aqui.
Chove. s([chove]).
Etc. s([etc]).
?- s([o,joão,ama,sintaxe]).
Estrutura de constituintes: [sn, [o, joão], sv, [ama, sn, [sintaxe]]]
Yes
?- s([o,sintaxe,joão,ama]).
No
85
6. PALAVRAS FINAIS
87
BRATKO, Ivan. Prolog programming for artificial intelligence. Harlow:
Addison-Wesley, 1997.
COLE, R. A. et al. (eds.). Survey of the state of the art in human language
technology. Cambridge: Cambridge University Press / Giardini, 1997.
[www.dfki.de/~hansu/HLT-Survey.pdf].
88
GARSIDE, Roger; LEECH, Geoffrey; McENERY, Anthony. Corpus
annotation: linguistic information from computer text corpora. London / New
York: Longman, 1997.
89
LUFT, Celso Pedro. Moderna gramática brasileira. Porto Alegre; Rio de
Janeiro: Globo, 1986.
90
analysis: a survey of the formalism and a comparison with augmented
transition networks. Artificial Intelligence, n. 13, 1980.
91
GLOSSÁRIO
SN SV
Det N V SN
Det N
92
natural, na modalidade escrita. Seu nome vem da junção de duas
palavras inglesas: chat (conversar) e bot (abreviação de robot, robô). O
primeiro chatterbot a ser construído foi ELIZA 1 , TP PT programa
desenvolvido por Joseph Weinzenbaum, no MIT, em 1966. No Brasil,
a primeira chatterbot foi Cybelle 2 , desenvolvida por Alex Primo e
TP PT
1
TPwww-ai.ijs.si/eliza/eliza.html.
PT
2
TPhttp://cybelle.cjb.net/.
PT
93
o 1999: é lançado o primeiro chatterbot em língua portuguesa, a
Cybelle
o 2001: o filme A.I. — Inteligência Artificial, de Steven
Spielberg, chega às telas, apresentando novas dimensões de
robôs inteligentes e levantando questões éticas sobre até que
ponto a vida artificial pode chegar
94
• D ESEMPENHO : é o uso da C OMPETÊNCIA do falante em situações
discursivas concretas. Também é chamado de atuação ou performance.
Por desempenho, entendemos o uso real da linguagem, em situações
concretas de comunicação.
B C
D E
95
• G RAMÁTICA : referindo-se estritamente ao contexto deste livro,
podemos definir gramática como o conjunto formalizado de regras
sintáticas que possibilitam um P ARSER reconhecer as sentenças de
uma língua natural (cf. L INGUAGEM N ATURAL ) e atribuir a elas uma
E STRUTURA S INTAGMÁTICA , representada através de Á RVORES
S INTÁTICAS ou C OLCHETES R OTULADOS .
96
linguagem binária do computador, enquanto que as linguagens de
mais alto nível (como o LISP e o P ROLOG ) têm mais semelhanças com
as linguagens naturais e por isso são também mais acessíveis aos
programadores humanos.
97
• P ARSER : os parsers são programas de computador capazes de
classificar morfossintaticamente as palavras e expressões de sentenças
em L INGUAGEM N ATURAL e atribuir a elas sua E STRUTURA
S INTAGMÁTICA .
B C
5
TP PT www.loebner.net.
98
• P ROCESSAMENTO DE L INGUAGEM N ATURAL (PLN): é a área da
L INGUÍSTICA C OMPUTACIONAL que se preocupa diretamente com o
estudo da linguagem voltado para a construção de softwares e
sistemas computacionais específicos, como T RADUTORES
AUTOMÁTICOS, CHATTERBOTS, P ARSERS , reconhecedores
automáticos de voz etc. Cabe à área de PLN a desenvolver programas
que sejam capazes de processar (leia-se compreender e produzir)
informações em L INGUAGEM N ATURAL . Esses programas podem
envolver diferentes áreas da Linguística, como a fonologia, a fonética,
a semântica, a sintaxe, a pragmática etc.
99
essa estrutura. Um exemplo de regra sintagmática é o seguinte: S à
SN SV. Ou seja, uma sentença (S) é composta por um Sintagma
Nominal (SN) e um Sintagma Verbal (SV). A partir dessa regra
sintagmática, é possível gerar uma estrutura arbórea (cf. Á RVORE
S INTÁTICA ) como esta:
SN SV
100
Turing chamou-o de “jogo de imitação”. No teste, um juiz humano
deve comunicar-se com dois interlocutores (uma máquina e um outro
humano). Através de perguntas e respostas, o juiz terá de decidir
quem é a máquina e quem é o humano (ou ainda se os dois são
máquinas, ou se os dois interlocutores são humanos). O objetivo
principal deste teste é definir a própria I NTELIGÊNCIA A RTIFICIAL : “se
uma máquina não pode ser distinta de um ser humano nestas
condições, então devemos atribuir a ela uma inteligência humana”
(Hodges, 2001: 45). O Teste de Turing é ainda hoje considerado como
parâmetro para avaliação de certos programas de I NTELIGÊNCIA
A RTIFICIAL (cf. CHATTERBOT e P RÊMIO L OEBNER ) e até mesmo como a
própria definição do conceito de I NTELIGÊNCIA A RTIFICIAL (cf.
Burgierman, 2001 e Lucena, 1999), apesar das críticas feitas pelo
filósofo norte-americano Searle (cf. Kelly III). Para saber mais sobre o
Teste de Turing, recomendamos a página
http://cogsci.ucsd.edu/~asay gin/tt/ttest.html.
101
humano. O desejo de desenvolver tradutores abrangentes e robustos
assim foi a principal causa do grande impulso dado às pesquisas
envolvendo traduções automáticas nas décadas durante a Guerra Fria.
Mesmo que o objetivo até hoje não tenha sido alcançado, e os
resultados estejam muito aquém daqueles imaginados, muito
progresso já foi feito nesta área. Por último, encontramos programas
que auxiliam o tradutor humano na tradução de um texto. Esses
tradutores não primam pela perfeição ou acabamento do texto final
traduzido, mas almejam auxiliar o usuário a traduzir grandes
quantidades de texto. Acredita-se que o uso de tais programas pode
ajudar um tradutor humano a reduzir em 50% o tempo total gasto no
trabalho de tradução e cerca de 15-30% no custo total com a tradução 6.
6 Cf. www.languagepartners.com/reference-center/whitepapers/catinto.htm.
102
NA PONTA DA LÍNGUA
1. Estrangeirismos — guerras em torno da língua, Carlos Alberto Faraco [org.]
2. Língua materna — letramento, variação e ensino
Marcos Bagno, Michael Stubbs & Gilles Gagné
3. História concisa da linguística, Barbara Weedwood
4. Sociolinguística — uma introdução crítica, Louis-Jean Calvet
5. História concisa da escrita, Charles Higounet
6. Para entender a linguística — epistemologia elementar de uma disciplina,
Robert Martin
7. Introdução aos estudos culturais, Armand Mattelart & Érik Neveu
8. A pragmática, Françoise Armengaud
9. História concisa da semiótica, Anne Hénault
10. A semântica, Irène Tamba
11. Linguística computacional — teoria & prática
Gabriel de Ávila Othero & Sérgio de Moura Menuzzi
12. Linguística histórica — uma introdução ao estudo da história das línguas,
Carlos Alberto Faraco
13. Lutar com palavras — coesão e coerência, Irandé Antunes
14. Análise do discurso — história e práticas, Francine Mazière
15. Mas o que é mesmo “gramática”?, Carlos Franchi
16. Análise da conversação: princípios e métodos, Catherine Kerbrat-Orecchioni
17. As políticas linguísticas, Louis-Jean Calvet
18. Práticas de letramento no ensino: leitura, escrita e discurso
Carlos Alberto Faraco, Maria do Rosário Gregolin, Gilvan Müller de
Oliveira, Telma Gimenez & Luiz Carlos Travaglia
19. Relevância social da linguística: linguagem, teoria e ensino
Luiz Percival Leme Britto, Marcos Bagno, Neiva Maria Jung, Esméria de
Lourdes Saveli & Maria Marta Furlanetto
20. Todo mundo devia escrever, Georges Picard
21. A argumentação, Christian Plantin
22. Tradição oral & tradição escrita, Louis-Jean Calvet
23. Tradução — história, teorias e métodos, Michaël Oustinoff
24. Gramática de bolso do português brasileiro, Marcos Bagno
25. Cinco ensaios sobre humor e análise do discurso, Sírio Possenti