파이썬으로 쉽게 채팅 앱
그래서 이번에는 그 집대성으로서 파이썬으로 애플리케이션을 만들어 보았으므로 소개합니다.
이번에 만드는 것
이번에는 기계 학습 API를 사용하여 채팅봇 형식의 앱을 만듭니다. 이미지적으로는 L○NE의 린나 짱 없는 것을 만들고 싶습니다.
사용 언어, 프레임워크 등
이 안에 있는 「a3rt」란, 올해 리크루트가 릴리스한 기계 학습의 API입니다( 참고 ). 파이썬에서 사용하려면 pya3rt이라는 라이브러리를 사용하십시오. a3rt는 사용하는 서비스에 따라 무료 API 키를 발급해야합니다. 이번에는 talkAPI를 사용합니다.
작성한 소스 코드
#-*- coding: utf8 -*-
import sys
import tkinter as tk
import tkinter.messagebox as tkm
import pya3rt
apikey = "YOUR_API_KEY"
client = pya3rt.TalkClient(apikey)
root = tk.Tk()
# ウインドウのタイトルを定義する
root.title(u'Seri')
# ここでウインドウサイズを定義する
root.geometry('400x300')
# ボタンが押されたらリストボックスに、Entryの中身を追加
def addList(text):
mysay = 'you: ' + text
print(mysay)
ListBox1.insert(tk.END, mysay)
Seri = 'Seri: ' + talk(text)
Entry1.delete(0, tk.END)
addRep(Seri)
def addRep(Seri):
ListBox1.insert(tk.END, Seri)
def talk(say):
if say == 'end':
return('ではまた')
else:
ans_json = client.talk(say)
ans = ans_json['results'][0]['reply']
return(ans)
# ラベルを使って文字を画面上に出す
Static1 = tk.Label(text=u'▼ Seriに話しかけよう! ▼')
Static1.pack()
# Entryを出現させる
Entry1 = tk.Entry(width=50) # widthプロパティで大きさを変える
Entry1.insert(tk.END, u'こんにちは') # 最初から文字を入れておく
Entry1.pack()
# Buttonを設置してみる
Button1 = tk.Button(text=u'送信', width=50, command=lambda: addList(Entry1.get())) # 関数に引数を渡す場合は、commandオプションとlambda式を使う
Button1.pack()
# リストボックスを設置してみる
ListBox1 = tk.Listbox(width=55, height=14)
ListBox1.pack()
root.mainloop()
실제로 사용해 보았습니다.
좀처럼 똑같은 대응으로 S ○ ri 같았기 때문에 이름은 Seri로했습니다 (웃음)
문제점·개량하고 싶은 점
windows나 Linux에서 실행하면, 일본어 입력은 할 수 있습니다만, Mac 왠지 할 수 없기 때문에 다른 텍스트 파일로 입력한 것을 copipe한다고 하는 귀찮은 작업을 해 동작을 시험하고 있습니다(쓴웃음). 텍스트를 입력한 후에 입력한 텍스트를 먼저 표시되어 그 응답이 나중에 표시되는 L○NE와 같은 느낌으로 하고 싶었습니다만, 텍스트와 응답이 동시에 출력되어 버립니다.
진짜는【end】라고 입력하면 윈도우를 닫도록(듯이) 하고 싶었습니다만, 시간이 없어 구현할 수 없었습니다…언젠가 또 개량하고 싶습니다.
Reference
이 문제에 관하여(파이썬으로 쉽게 채팅 앱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/KMiura95/items/9b8a37b1bb64266deed7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#-*- coding: utf8 -*-
import sys
import tkinter as tk
import tkinter.messagebox as tkm
import pya3rt
apikey = "YOUR_API_KEY"
client = pya3rt.TalkClient(apikey)
root = tk.Tk()
# ウインドウのタイトルを定義する
root.title(u'Seri')
# ここでウインドウサイズを定義する
root.geometry('400x300')
# ボタンが押されたらリストボックスに、Entryの中身を追加
def addList(text):
mysay = 'you: ' + text
print(mysay)
ListBox1.insert(tk.END, mysay)
Seri = 'Seri: ' + talk(text)
Entry1.delete(0, tk.END)
addRep(Seri)
def addRep(Seri):
ListBox1.insert(tk.END, Seri)
def talk(say):
if say == 'end':
return('ではまた')
else:
ans_json = client.talk(say)
ans = ans_json['results'][0]['reply']
return(ans)
# ラベルを使って文字を画面上に出す
Static1 = tk.Label(text=u'▼ Seriに話しかけよう! ▼')
Static1.pack()
# Entryを出現させる
Entry1 = tk.Entry(width=50) # widthプロパティで大きさを変える
Entry1.insert(tk.END, u'こんにちは') # 最初から文字を入れておく
Entry1.pack()
# Buttonを設置してみる
Button1 = tk.Button(text=u'送信', width=50, command=lambda: addList(Entry1.get())) # 関数に引数を渡す場合は、commandオプションとlambda式を使う
Button1.pack()
# リストボックスを設置してみる
ListBox1 = tk.Listbox(width=55, height=14)
ListBox1.pack()
root.mainloop()
좀처럼 똑같은 대응으로 S ○ ri 같았기 때문에 이름은 Seri로했습니다 (웃음)
문제점·개량하고 싶은 점
windows나 Linux에서 실행하면, 일본어 입력은 할 수 있습니다만, Mac 왠지 할 수 없기 때문에 다른 텍스트 파일로 입력한 것을 copipe한다고 하는 귀찮은 작업을 해 동작을 시험하고 있습니다(쓴웃음). 텍스트를 입력한 후에 입력한 텍스트를 먼저 표시되어 그 응답이 나중에 표시되는 L○NE와 같은 느낌으로 하고 싶었습니다만, 텍스트와 응답이 동시에 출력되어 버립니다.
진짜는【end】라고 입력하면 윈도우를 닫도록(듯이) 하고 싶었습니다만, 시간이 없어 구현할 수 없었습니다…언젠가 또 개량하고 싶습니다.
Reference
이 문제에 관하여(파이썬으로 쉽게 채팅 앱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/KMiura95/items/9b8a37b1bb64266deed7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(파이썬으로 쉽게 채팅 앱), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KMiura95/items/9b8a37b1bb64266deed7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)