#10180
Konstantin L
Participant

Привет всем! К Новому Году хочу предложить вашему роботу показаться гостям умнее)

Есть NLP – проект RDT (Русский дистрибутивный Тезаурус). Используя технологии машинного обучения, они создают, в частности, граф подобия слов. Через открытые API этого проекта, можно получить “ближайших соседей” любого запрошенного слова и заставить его произнести, скажем, первые 10. Выглядит, как ассоциации робота на предложенную тему.
Код – простой:
Вставить в _inmoovApps.aiml блок типа

<category><pattern>ТВОИ АССОЦИАЦИИ</pattern>
<template><think><set name="topic">associations</set></think>
    <random>
        <li>
        Ура! Я люблю беседовать. Над каким словом будем размышлять?
        </li>  
        <li>
        Я не тупой робот. Я понимаю слова. Проверяй!
        </li>  
        <li>
        Я понимаю, а не просто заучиваю. Давай понятие - я буду придумывать ассоциации. Поехали.
        </li> 
    </random>
    <li>
    Скажи мне, стоп игра, чтобы остановить игру.
    </li></template>
</category>
<category><pattern>ИГРА В АССОЦИАЦИИ</pattern>
<template><srai>Твои Ассоциации</srai></template>
</category>
<category><pattern>ИГРАТЬ В АССОЦИАЦИИ</pattern>
<template><srai>Твои Ассоциации</srai></template>
</category>
<category><pattern>* АССОЦИАЦИИ</pattern>
<template><srai>Твои Ассоциации</srai></template>
</category>
<topic name="ASSOCIATIONS">
<category><pattern>*</pattern>
<template><oob>
          <mrl>
            <service>python</service>
            <method>exec</method>
            <param>Associations("<star index="1"/>")</param>
          </mrl>
        </oob></template>
</category></topic>

Затем создать в ~Inmoov/gestures/InmoovApps директорию Associations, и в ней – файл Associations.py с кодом

# -- coding: utf-8 --

def Associations(word):
 import urllib2
 import json
 word1=word.split()[0].decode('utf-8')
 print word1
 word_utf8=word1.encode('utf-8') 
 value_url = urllib2.quote(word_utf8)
 url = "http://www.serelex.org/find/ru-skipgram-librusec/" + value_url
 print url
 req = urllib2.Request(url)
 opener=urllib2.build_opener()
 f = opener.open(req)
 json = json.loads(f.read())
 i01.ear.stopListening()
 for i in range(12):
	result=json['relations'][i]["word"]
	if word1.find(result[:-2])!=-1: pass
	else:
	 talkBlocking(unicode(result,"utf-8"))
	 sleep(1)
 i01.ear.startListening()