有台服务器只给内部人员用, 所以就添加了白名单. 但是 ip 总是变, 手动改太麻烦了,
就写了个定时查询出 ip, 发现 ip 变了就自动修改阿里云的安全组设置的脚本.
1 | #!/usr/bin/env python |
有台服务器只给内部人员用, 所以就添加了白名单. 但是 ip 总是变, 手动改太麻烦了,
就写了个定时查询出 ip, 发现 ip 变了就自动修改阿里云的安全组设置的脚本.
1 | #!/usr/bin/env python |
这个官网有教程, 可以点击下面的参考链接看.
1 | class MyModel(models.Model): |
1 | def user_directory_path(instance, filename): |
1 | def _upload_to(attrs=None,root=''): |
有个项目是用其他语言写的接口, 需要快速开发出后台管理页面, 就选用了 django
. 按照下面的方法就可以在几分钟内开发完成.
这个官网有教程, 可以点击下面的参考链接看. 只需要运行一条命令就可以生成模型文件
1 | python manage.py inspectdb > models.py |
1 | # lib/gen_admin.py |
常见的我就不说了, 我下面说一些我用到的, 又不容易搜索到的知识. 其实官网文档有说明, 可能会漏看,或者看过不知道用在什么场景.
在一对多模型中, 如果通过一来查出多的模型,会把多的模型数据全部返回. 但是我现在只需要返回多的模型里面一部分数据,例如没有逻辑删的数据. 这时候可以指定多模型的 list_serializer_class
并重写 listserializer
的 to_representation
方法..to_representation() - Override this to support serialization, for read operations.
1 | class CustomListSerializer(serializers.ListSerializer): |
还是一对多的模型里面,想要在一的返回数据里面增加一个多的数量字段.还是可以重写 to_representation
方法.同理也可以减少或者修改字段和值.
1 | def to_representation(self, instance): |
这个是因为多层嵌套模型,在序列化中传值问题,例如把请求的参数传入到后面几层的序列化里面过滤.
1 | def to_representation(self, instance): |
前几天看到老外用 speechrecognition
写了一个语音助手, 感觉既简单又有趣,
而且我前几年用这个库做个语音转文字. 去年还买了本 <<自然语言处理实战(聊天机器人技术原理与应用)>>
的书,
还没翻过几页. 正好把这个冲动的结果给利用上.
源码: xiaohui
xiaohui
是个面向任务的对话系统.
可以查时间,打开程序, 搜索网页等任务. 具体任务可以看 xiaohui/data/nlu.md
里面的内容.
还可以自己定制任务, 对应的也需要定制 xiaohui/actins.py
的执行动作.
NLU
模块我用的是 fuzzywuzzy
库来计算准确度的,简单的判断 2 个字符串的相似度. 没有用序列标注来训练和识别意图和槽值. 任务可以看 xiaohui/data/nlu.md
里面的内容.用它来和用户输入的语句做相似度对比,取最大的置信度. 这里的格式参考了 Rasa
.
1 | ## intent:greet |
打开程序任务是查询系统的开始菜单里面的快捷方式, 要完整匹配才能打开.
1 | class ActionOpen_program(Action): |
搜索就是简单的打开浏览器搜索关键字
1 | class ActionSearch(Action): |
试用了 CMU Sphinx
的离线, 效果太感人, 就看下 Google Speech Recognitione
的接口, 才发现不需要 申请api
, 注意不是 Google Cloud Speech API
.
利用 google
的语音识别和语音合成, 适配的是国内域名 cn
, 所以不用担心用不了. 这里是利用的 hotfix
把代码给替换了, 把 com
替换成了 cn
.
1 | import speech_recognition as sr |
1 | def recognize_google(self, audio_data, key=None, language="en-US", show_all=False): |