问题描述:
程序可以同时回答多个人问题,答案是匹配问题与定义好问题的相似度,找出最像的问题,返回答案,当相似度最高者不唯一时,返回首个相似度最高问题的答案。
import threading,time,random
condition=threading.Condition()
problems={
'name':'My name is skynet'
,'age':"I am 8 years old"
,'hobby':'My hobby is Nature Language Processing'
,'sex':'My sex is AIrobbot'
,'where are you from':'I come from China.BeiJing'
,'Who invent you':'Liuxiawei invent me'
,'favourite food':'I like samsung 960 EVO PRO 1T very much'
,'dislike':'I hate code'
,'are you have emotion':'perhaps,who care'
,'are you like python':'ofcourse,I like python very much'
}
problemkeys=[k for k in problems]
answer=[v for v in problems.values()]
class skynet(threading.Thread):
def __init__(self,threadname):
threading.Thread.__init__(self)
self.__threadname=threadname
def run(self):
global problemkeys
while True:
if condition.acquire():
samedeg=[0 for i in range(len(problemkeys))]
a=input("Please input a problem:>").lower().replace("?",'').replace('.','').replace('!','')
for i in range(len(problemkeys)):
count=0
for item in a.split(' '):
if problemkeys[i].count(item):
count+=1
samedeg[i]=count
print('问题相似度:',samedeg)
print(answer[samedeg.index(max(samedeg))])
condition.release()
time.sleep(random.randrange(10))
if __name__ == '__main__':
for i in range(10):
s=skynet('[用户'+str(i+1)+']')
s.start()
效果图: