我的问题与我刚刚开始研究的项目有关,而且它是一个ChatBot.
我想要构建的机器人有一个非常简单的任务.它必须自动化购买电影票的过程.这是非常接近的域,并且机器人具有对影院数据库的所有必需访问权.当然,如果用户消息与订购电影票的过程无关,那么机器人可以像"我不知道"那样回答.
我已经创建了一个简单的演示,只是为了向少数人展示它,看看他们是否对这样的产品感兴趣.该演示使用简单的DFA方法和一些简单的文本匹配与词干.我在一天内入侵了它,结果发现用户对他们能够成功订购他们想要的门票感到印象深刻.(该演示使用与影院数据库的连接,为用户提供所需的所有信息,以便订购他们想要的门票).
我目前的目标是创建下一个版本,一个更高级的版本,特别是在自然语言理解方面.例如,演示版本要求用户在单个消息中仅提供一个信息,并且无法识别他们是否提供了更多相关信息(例如电影标题和时间).我读到这里有用的技术被称为"帧和插槽语义",它似乎很有希望,但我还没有找到有关如何使用这种方法的任何细节.
而且,我不知道哪种方法最适合改善自然语言理解.在大多数情况下,我考虑:
哪种方法最适合我的目标?
你知道在哪里可以找到更多有关"框架和插槽语义"如何工作的资源吗?在谈到框架和插槽方法时,我指的是斯坦福的PDF.
假设我有一个这样的字符串:
string1 = 'bla/bla1/blabla/bla2/bla/bla/wowblawow1'
Run Code Online (Sandbox Code Playgroud)
我需要在最后一个'/'之后取出文本并删除其他所有内容:
string2 = 'wowblawow1'
Run Code Online (Sandbox Code Playgroud)
有什么办法可以使用吗?
我对python相当陌生,所以我对此知之甚少。我做了一个计算器,我希望它接受:
ans()
Run Code Online (Sandbox Code Playgroud)
输入。目前,如果存在 [0-9 */-+] 以外的其他内容,则有一部分会阻止程序执行输入,因此它不会崩溃。我该怎么做
ans()
Run Code Online (Sandbox Code Playgroud)
代表上次输入的方程的输出,所以我可以输入如下内容:
>> 8*8 #last input
64 #last output
>> ans()*2 #current input
128 # current output
Run Code Online (Sandbox Code Playgroud)
希望我正确解释了所有内容,这是我的代码:
valid_chars = "0123456789-+/* \n";
while True:
x = "x="
y = input(" >> ")
x += y
if any(c not in valid_chars for c in y):
print("WARNING: Invalid Equation")
continue
try:
exec(x)
except (SyntaxError, ZeroDivisionError):
print ("WARNING: Invalid Equation")
else:
print(x)
Run Code Online (Sandbox Code Playgroud)
更新:我添加了答案中推荐的几行,但它不会运行(我还修复了缩进):
valid_chars = "0123456789-+/* \n";
while True:
x = "x="
y = input(" >> ") …Run Code Online (Sandbox Code Playgroud) 所以我已经为此完成了所有实际的应用程序.我只需要设置后端.我认为Firebase是最好的解决方案,因为Parse不再是一件事.我想要的是:
具有配置文件的用户 - 这些配置文件可以由添加的朋友查看,但仅由实际配置文件所有者编辑(写入).
所以我通读了Firebase文档,仍然无法弄清楚如何做到这一点.他们只有一个Swift应用程序示例,它没有做任何类似的事情,一个Obj C twitter一个,甚至不会构建.他们所有的文档仍然有Swift的println,这让我觉得它不经常更新.
有没有人有这方面的好例子/教程?我一直在努力寻找东西,但没有任何东西与我想要的东西相似.我更关注如何为每个用户设置数据库并访问它,而不是实际使用Swift中的Firebase.
python ×2
backend ×1
calculator ×1
chatbot ×1
firebase ×1
input ×1
nlp ×1
python-3.x ×1
swift ×1
text-mining ×1
xcode ×1