Eu queria escrever um programa de conversação. Eu realmente queria desesperadamente.
É claro que estou longe de programadores profissionais e também não sou lingüista, mas existe um pensamento sistêmico e um senso de linguagem. Além disso, há muito tempo que me interesso por tópicos de IA, e até corri algumas postagens na época. Por que não implementar conhecimento no código do programa? Bem, eu tentei o máximo que pude.
Conheça Vanya Reasonable.
Abaixo está uma descrição dos problemas que surgiram na minha frente neste caminho pavimentado e como superá-los.
Farei uma reserva imediatamente sobre o resultado: o
objetivo não era o código do programa, mas a formulação dos princípios do pensamento artificial , funcionando NÃO com base na realidade física, como organismos biológicos, mas com base na SINTACISIA. Os fãs do teste de Turing, redes neurais e aprendizado de máquina não precisam se preocupar.
Atenção, o material é volumoso.
Banheira de água fria
Para evitar expectativas infundadas com instantâneos maliciosos subseqüentes nos comentários, demonstrarei imediatamente Vanya, o Razoável, de forma não representável. Então, eu carreguei o início de Emelya e tentei perguntar - como nas aulas de literatura do ensino fundamental.
Texto original:
Era uma vez um homem velho. Ele tinha três filhos: dois espertos, o terceiro - um Emelya idiota. Esses irmãos estão trabalhando, e Emelya está deitada no fogão o dia todo, ela não quer saber de nada.
Uma vez que os irmãos partiram para o bazar, e as mulheres, nora, vamos mandá-lo:
- Desça, Emelya, por água.
E ele lhes disse do fogão:
- Relutância ...
- Desça, Emelya, caso contrário, os irmãos retornarão do bazar, eles não lhe trarão presentes.
- Bem então.
Emelya chorou do fogão, calçou-se, vestiu-se, pegou baldes e um machado e foi para o rio. Ele cortou gelo, pegou baldes e colocou-os, e ele olhou para o buraco. E Emel viu um pique no buraco no gelo.Diálogo:
No entanto, o texto pode ser adaptado - então, digamos:
O velho teve três filhos. O primeiro filho foi esperto. O segundo filho foi esperto. O terceiro filho era um tolo. Emelya é o terceiro filho do velho. Emelya é boa.
Os filhos mais velhos trabalham o dia todo, e Emelya está deitada no fogão.
Uma vez que os irmãos partiram para o bazar. A nora diz a Emele:
- Vá pegar um pouco de água.
Emelya responde do fogão:
- Não irei buscar água.
As noras dizem:
- Irmãos de presentes não o trarão.
- Bem então.
Emelya desceu do fogão, calçou-se, vestiu-se, pegou baldes e um machado. Emelya foi ao rio.
Emelya cortou gelo e pegou baldes. E Emel viu um pique no buraco no gelo. Pike é um peixe. Emelya pegou um pique.Após a adaptação, segue decentemente:
Mesmo assim, nos textos literários é inaceitavelmente confuso. Apesar de tudo,
Vanya realmente pensa , ao contrário de muitos de seus irmãos, criados principalmente com base em redes neurais, que apenas fingem ser razoáveis, mas na verdade elas não passam de bonecas plásticas. Se você estiver curioso para saber o porquê, continue lendo.
Passo diretamente à descrição da odisséia intelectual.
Enquadramento teórico
Eu raciocinei da seguinte maneira.
Qual é o principal problema da IA? O fato de o computador não entender o significado das palavras, respectivamente, é "razoável". Além disso, acredita-se que as pessoas sejam razoáveis, pois compreendem as palavras proferidas pelo interlocutor.
De fato, não é uma coisa maldita que as pessoas não sejam inteligentes. A palavra em si não significa mais do que as letras que a compõem (de fato, linhas curvas) ou sons (vibrações do ar). O sentido surge apenas como uma relação entre letras e sons como elementos da fala articulada, devido a associações estáveis, inclusive devido a conexões com o mundo das percepções visuais. Por exemplo, o interlocutor aponta para o assunto e diz: "Esta é uma árvore". E você entende que esse item é chamado de árvore.
O chatbot (pelo qual concordamos em entender a IA lidando exclusivamente com conversas) não pode ser apontado para o sujeito e disse: “Esta é uma árvore”, devido à ausência dos olhos do chatbot, ou seja, a câmera de vídeo. É possível explicar apenas com palavras, mas como você explica se ele não entende a fala humana ?!
Felizmente, a relação entre os elementos da fala é definida e bastante difícil: a sintaxe é responsável por eles. Consequentemente, qualquer texto construído de acordo com as leis da sintaxe contém algum significado fixado na sintaxe. O próprio “primo glock” colocou no título, o famoso e inigualável em visibilidade - que, como se viu, há muito tempo está vinculado à pesquisa em computação.
Das memórias de um camarada dos anos 70 distantes:
Gloka KuzdraEm julho de 2012, um especialista veio ao meu Concept e disse: "Glokaya Kuzdra". Eu entendi. Era um sinal de envolvimento em um campo semântico outrora comum.
"Um glocky cuzdra shteko budlanula bokra e kudlachat kokrenok."
Nos anos 70, eles estavam envolvidos em inteligência artificial no Centro de Computação da Academia de Ciências da URSS, na UIP da Academia de Ciências da URSS e em vários outros institutos. Inclusive havia uma direção envolvida na tradução automática. O problema não está resolvido há anos, a ambiguidade semântica não permitiu traduzir o significado sem contexto. Não ficou claro como formalizar o contexto em um programa de computador. E assim, D. A. Pospelov / provavelmente / distribuiu um exemplo ilustrando a dificuldade desta tradução. Ele pegou a frase, que consiste em palavras sem sentido, mas, ao mesmo tempo, na estrutura da frase e no som das palavras, ela cria associações idênticas completamente claras para pessoas completamente diferentes. Este efeito de entendimento não pôde ser alcançado pela máquina. De fato, Gloky Kuzdra - uma espécie de cabra malvada - ela, é claro, agrediu muito uma cabra e faz algo ultrajante para uma criança ... Os seminários de tradução automática também foram realizados na IPU, e eu vi esse índice no quadro: “Gloky Kuzdra. O seminário será realizado às 14 horas, na sala 425. "
Ajuda O autor desta frase é o famoso linguista, acadêmico Lev Vladimirovich Shcherba. As raízes das palavras incluídas nele são criadas artificialmente, sufixos e terminações permitem determinar a quais partes do discurso essas palavras pertencem e derivar o significado da frase. No livro de L. V. Uspensky, “A Palavra das Palavras”, seu significado geral é dado: “Algo do gênero feminino fez algo sobre alguma criatura do gênero masculino de uma só vez, e então começou a fazer algo longo e gradual com seu filhote. "
Fonte:
kuchkarov.livejournal.com/13035.html Com base no "glock cuzdra", um diálogo completo pode ser construído.
- Quem budlan bokra?
Kuzdra.
- Quem está batendo no peito?
- Também é prima.
- como ela é?
Glock.
- Como você budlanul bokara?
Shteko.Tal IA, que é completamente livre para se comunicar, não será capaz de entender o significado das palavras que usa: não estará ciente do que é "shtek", nem quem é "bokr", nem como é possível cutucar. Mas é realmente por esse motivo que se pode considerar que a IA é irracional, e uma pessoa, uma criatura biológica perfeita, “compreendendo” a semântica de suas próprias expressões, pensa plenamente, diferentemente da IA? Completude ...
As pessoas não vêem objetos, mas observam um panorama de pontos coloridos - na verdade, caóticos. Os objetos são formados não no mundo exterior, mas no cérebro humano, ligando os pontos coloridos, em agregados separados. Isso significa que existimos em um certo mundo ilusório, que em certo sentido é o que construímos.
Eu li que alguma tribo primitiva não vê aviões no céu - simplesmente não vê, só isso. Também li que os índios não notaram os navios de Colombo se aproximando das margens, porque ... eles simplesmente não perceberam. E eles perceberam depois que foram explicados como procurar - ou seja, como vincular pixels coloridos a objetos específicos. Acredito nessas histórias pseudo-geográficas: esses paradoxos visuais parecem plausíveis para mim.
Uma pessoa não tem motivos para acreditar que seu pensamento está
estruturado de alguma maneira especial; portanto, o
princípio de "primo de falha" é a única maneira de tornar alguém racional, seja um robô de bate-papo ou uma pessoa . Você pode usar uma variedade de ferramentas, mas o conceito é incondicional. Eu pensava assim antes de começar a trabalhar e não mudei de idéia no final.
Bibliotecas
Depois de definir a tarefa, comecei a pesquisar sobre as bibliotecas adequadas para C #.
Então a primeira decepção me aguardava: nada adequado, de qualquer forma livre, foi encontrado. Todos os tipos de módulos prontos para a implementação de bots de bate-papo não eram necessários, eu estava interessado em trabalhar com formas de palavras. Parecia mais fácil:
a) determinar as características morfológicas da palavra forma,
b) retornar uma palavra com as características morfológicas necessárias?
O léxico é limitado, o número de sinais também. E a coisa é tão útil, todos os dias ... Não estava lá!
Não encontrando nada, com raiva tentei codificar o determinante dos caracteres morfológicos. De alguma forma, não perguntei imediatamente. Com relação a isso, minha odisséia intelectual teria terminado ingloriamente, no porto de partida, se repetido e mais minuciosamente, o google não revelou algumas bibliotecas gratuitas, que eu finalmente usei. Como sempre, graças aos entusiastas.
A primeira biblioteca é o
Solarix . Muitas coisas permitem, mas devido à minha baixa competência e insuficiência financeira (a biblioteca é apenas parcialmente gratuita), usei um analisador incondicionalmente gratuito que analisa o texto e grava o resultado em um arquivo.
Exemplo de analisador Solarix<?xml version='1.0' encoding='utf-8' ?>
<parsing>
<sentence paragraph_id='-1'>
<text> .</text>
<tokens>
<token>
<word></word>
<position>0</position>
<lemma></lemma>
<part_of_speech></part_of_speech>
<tags>:|:|:|:|:|:</tags>
</token>
<token>
<word></word>
<position>1</position>
<lemma></lemma>
<part_of_speech></part_of_speech>
<tags>:|:|:|:|:0|:|:|:|:|:|:0</tags>
</token>
<token>
<word></word>
<position>2</position>
<lemma></lemma>
<part_of_speech></part_of_speech>
<tags>:|:0|:|:|:</tags>
</token>
<token>
<word></word>
<position>3</position>
<lemma></lemma>
<part_of_speech></part_of_speech>
<tags>:|:|:|:|:|:</tags>
</token>
<token>
<word>.</word>
<position>4</position>
<lemma>.</lemma>
<part_of_speech></part_of_speech>
<tags></tags>
</token>
</tokens>
</sentence>
</parsing>
–
LingvoNET, . , .
, .
, . : . , .
, .
Solarix – , . , , .
:
1. ,
, .
.« » – , , , : .
2. ,
., , .
3. , , .
, , .
.4. ( , - , ..)
, – .
5. « ». «», . « », .
– – , … , ?
– :
, , – :
, , . , : ( ).
– –
, , ? : .
:
., ?
, :
1. ( ) – , .
2. ( ) – , .
3. – .
. : – – , .
:
.:
., .
, .
:
.:
., ( , – ), .
«» «» – , , , , . , : , «» .
: .
.
.
., , :
., :
1. . , .
.:
[Noun] . :
- .2. . , .
.:
[verb] . :
[] .3. . .
.« [noun]» , -: .
4. . .
:
.:
.5. : .
.:
. ..
( ) – : , , , , , , – , Solarix. , . : , , ( ) ..
(, : ), . , , .
«5 », :
« 3 7 »: , .
, , :
• – ,
• – ( ),
• – ,
• – ( ),
• – ,
• – .
, ( ). – .
: .
, .
, .:
. .
. .. , .
, , .
.:
. ., .
..
, , , , , .
:
., ? , , , , … ? , !
[Noun] . . :
- . ., : – , – . : , , .
– ., . , ? , , . , , .
, ( . ).

. !
, , , , .
, , :
• (, , ),
• ,
• ( ),
• ( : ),
• ,
• ,
• ,
• .
, . , ?
, . , «», «», « », « » ..
, «».
, ., : «».
, – .
, ., , , , . , , ?
, .- , – , – , . , ? , , , – , .
- : – , – . ( : - ).
. , , .
, , , :
, , ? , , : . :
.
.
., , - .
, .
, :
• ( ),
• , ,
• ( , ),
• (. ),
• ( , , , ),
• ( ),
• ( , , «», , ),
• ( «», «»).
.
, ? . .
:
— , ?
— .
— ?
— ., :
— ?
— .
— ?
— .– – .
– , , .
:
1. ( ).
2. (, ).
3. ( ).
4. ( ).
5. .
, … , .
. – ? - ? ? -?
.
– , , , - - .
– , , .
-? , , , .
– , . -
« », , - ( ) .
.
.
, , . , - « ». , , :
.
.
.
...
, . , , . – .
!
:
!
!«», – «». .
:
1. .
2. .
3. .
– . , : , , .
- ? -, .
.
, – , .
., «», :
., - :
– ., , :
.?.. ??? , , :
.-, .
: - .
, .
– , «» «».
, «» «» .
?
?
?. – , , , – . :
:
?:
?:
? ?:
?:
?:
?:
?:
?.
.
, , . – .
, , :
- , , , . .
- , . , , . , .
-, «», «», « », – .
, , . , .
, :
?«» «» , «» – . , , .
( , ) , .
:
?«» – , . , .
, , .
, , , .
, , :
: , .
: .
– .
, - :
?:
? ?, : , , .
, .
, .
, .
, ?:
? ?, . , .
, , . , :
40 .?
45 .40 45, ? , , ? , ? , . , , , ?
, , : , ( ) – , – .
:
- – , .
- .
- , , .
- , ( , , )).
, .
, ? , . 1 40 , 5 , 31 45 . ?!
, , , , . , .
, -:
.
.
.
.
.
.
...
- .
– .
, :
.
.
.
.
., , , .
.
.
.
.
., . :
..
, -, , ., .
( , ) , :
1. .
2. .
3. .
– . , . - , , – .
– , . , .
, «» ( ). , .
:
:
, , , …
( , ) . , – , - «». , , .
:
- . , .
- . , - , . , .
, , .
.
-, – , .
, , .
«» «». , , ?
. «» « »? , – . . ( ), – -, .
– . : , (
, , , ) , .
, – : . : , « – », . .
, , , .
– (, , , ). , ( ).
, . . , - , , , , , .
, , . , .
,
, .
, - , … , : « – ». , ? «» . ( ) , , . (- ) , «» (, ) , , .
,
, . ?! .
, (- ).
, . , . , . , ., :
, ., !
, , , , !
. : – – .
? , . , , , ..
, :
) , , , ,
) , , , .
, , , , .
, – .
, :
.
., , .
, .
, , , , , , . :
?, :
?, , . , , .
, :
– .
- , -. – .
:
, !
, , .
. ., , , , - , . , ?!
, , !
, .
, - : « ( ) ! !»
! , , .
, . - , , : , , . , - ( , ) . - .
, , : – - . : .
, .
, , :
?? , : . , :
., : .
, – , . , – . ,
– , – .
. , , , :
— ?
— ., , . ( ), – ().
.
.:
- .
., .
:
?« ?» , «» – . :
, ?, – .
, , . ?
, :
— ?, .
, :
15 30 .. , , – ! – :
15 30 28 34 ..
, , ?! , , …
, .
, – .
, , , – , – . - ! : - , . , - SQL-.
, 3 ( ) – 3 . -, -, .
- , .
:
?«» – «», «» – «», 3 :
.
.
., , . , :
., : SQL-. , , …
, , SQL-, .
-, :
?
?
?-, – . «?» , , , .
? SQL-, , .
. , ?!
:
.:
?:
?, , , :
?
?.
,
, , -! SQL-: , .
, . , , : , . , . , : – ; – ( «» ). , « », .
, , . : . , n , . :
., -, . ( , , ) .
. … , .
:
1. Solarix.
2. , .
3. .
4. .
5. , ().
6. ( ).
7. ( LingvoNET).
8. .
9. .
, . :
1. -, . , , . , , , .
2. -, ( ) . , ?
, ? , , , . – .
, , , …
1) .
:
« ».« », – .
. , , – . , , .
2) .
, , - . , , . -, , , , , , , . ( ) , , , , , «» . , , …
.
, . , – , « »?!
32- Microsoft Office Windows. 64- Windows Microsoft Access Database Engine 2010 (32-).
.
, . , – , , , . , , , . , .
, . : , , – . , , – .
, . ( ), – . , :
– . , .
– . . .:
– . – , .
– . . .: , «», «». , - . : , , , , … !
, , - , , : , . .
, , , , — .
:
, – .– ( , . – . , .. , – ).
– .. , :

:
.
: ., , ., .
, , - - .
. : , . ,
, , , , – .