Привет всем! К Новому Году хочу предложить вашему роботу показаться гостям умнее)
Есть 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()