Giter Club home page Giter Club logo

askender.github.com's People

Contributors

askender avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

askender.github.com's Issues

推荐引擎和算法学习

工作需要 研究一下推荐算法
知道推荐算法非常难以达到精准,不过挑战一下也算有趣的

按照使用数据分:
协同过滤:User-based协同过滤;Item-based协同过滤;基于模型的协同过滤
基于内容的推荐:用户内容属性和物品内容属性
社会化过滤:用户之间的社会网络关系

按照模型分:
最近邻模型:基于用户/物品的协同过滤算法
Latent Factor Mode:基于矩阵分解的模型
图模型:二分图模型,社会网络图模型

相关资料

活动发现平台设计思考

沪港黑客马拉松上组建的开发设计小组
鲜活
好聚会,鲜生活
参与 发起
明确目标:让普通人更容易参与和发起活动
特色:依据用户的兴趣来展示和推送活动,发起活动能得到场地和用品的免费支持
竞争对手:豆瓣同城
技术:简洁的设计,python, coffeescript
成员:后端_1,前端_2,设计*1
交流方式: qq群 微信群 github trello?
开发规划:html5版本 使用phonegap生成app 微信对话机器人
开放性:提供api接口,使用其他开放平台的api,业务合作
设计需求:icon logo 色调风格 布局
功能接口:发布活动 喜欢 不喜欢 参与 标签选择 发布图片 信息完善 评论 分享
名可名:名称 宣传语 理念 愿景
情报:活动来源收集 线索功能 爬虫语意分析
app设计:?
头脑风暴: 即将进行
微信接口定义:
优先级安排:网站 vs app
技术选型:
智能对话设计:语言自然化 界面
测试:人员安排
数据库设计:
推荐算法设计:
资源:成员历史作品以及优势
以后的事情:活动现场大小屏幕交互(各种实时交流) 现场实时问卷 游戏开发
小功能:地理位置定位附近活动
对于国内外竞争对手的分析和学习:
运营:twitter 微信 ... 全部上 充分利用众包的力量
意见收集:
活动类型主推:小型聚会类,交友 派对 音乐 创意 沙龙 阅读 桌游 游玩 外语 摄影 绘画
restful接口:
/api/hottags get
/api/usertags get post
/api/recommend_party get
/api/party_action post
/api/user_setting get post

头脑风暴

以下记录一些冒出的想做的点子的代号 想做程度 和完成程度

安问 10 2
安德 10 1
安曲 10 1
酷队 8 3
安链 9 4
安搜 8 2
安听 9 5
安读 9 1
afee 8 2
fanq 9 1
asee 9 0

相似文档查找算法之simHash学习笔记

只是个人整理,如果想深入了解,请看文末的参考文档
实现了python版simhash算法(java版本就不提供了),代码稍后push上来

hash 算法
传统的 hash 算法只负责将原始内容尽量均匀随机地映射为一个签名值
Google 的 simhash 算法产生的签名,对相似的内容产生的签名也相近。出人意料,这个算法并不深奥,其**是非常清澈美妙的。

传统文本相似度比较
采用经典方法是文本相似度的向量夹角余弦
但由于有可能一个文章的特征向量词特别多导致整个向量维度很高,使得计算的代价太大
对于Google这种处理万亿级别的网页的搜索引擎而言是不可接受的

Simhash 算法简介
simhash算法的主要**是降维,将高维的特征向量映射成一个f-bit的指纹(fingerprint),通过比较两篇文章的f-bit指纹的Hamming Distance来确定文章是否重复或者高度近似。
simhash算法的输入是一个向量,输出是一个 f位的签名值。为了陈述方便,假设输入的是一个文档的特征集合,每个特征有一定的权重。比如特征可以是文档中的词,其权重可以是这个词出现的次数。 simhash 算法如下:
1,将一个 f 维的向量 V 初始化为 0 ; f 位的二进制数 S 初始化为 0 ;
2,对每一个特征:用传统的 hash 算法对该特征产生一个 f 位的签名 b 。对 i=1 到 f :
如果b 的第 i 位为 1 ,则 V 的第 i 个元素加上该特征的权重;
否则,V 的第 i 个元素减去该特征的权重。
3,如果 V 的第 i 个元素大于 0 ,则 S 的第 i 位为 1 ,否则为 0 ;
4,输出 S 作为签名。

注意
干掉停用词 英文分词 词根还原
"的","我","了","这"等,要把这些词去掉,增加去重精度
分词后,尽量给每个分词一个权重数字,代表这个词的重要程度,这样能够极大提高精度.比较简单的算法是,把每个词在文章中出现的次数作为权重.
simhash算法的精确度也会有所损耗,并且与simhash的位数b有关,b越大精确度越高。

适用场景
simHash在短文本的可行性:
测试相似文本的相似度与汉明距离
相似度在0.8左右的Hamming距离为7,只有相似度高到0.9412,Hamming距离才近到4
根据经验值,对 64 位的 SimHash ,海明距离在 3 以内的可以认为相似度比较高。 在80亿网页规模下汉明距离=3刚好合适。
按照Charikar在论文中阐述的,64位simhash,海明距离在3以内的文本都可以认为是近重复文本。
当然,具体数值需要结合具体业务以及经验值来确定。
由于文本已经压缩成8个字节了,因此其实Simhash近似查重精度并不高

Google对此算法的应用场景
网页近重复、镜像网站、内容复制、嵌入广告、计数改变、少量修改。
以上原因对于长文本来说造成的相似度都会比较高
而对于短文本来说,如何处理海量数据的相似度文本更为合适的?

扩展到海量数据的近重复检测
对于64位的待查询文本的simhash code来说,如何在海量的样本库(>1M)中查询与其海明距离在3以内的记录呢
假设我们要寻找海明距离3以内的数值,根据抽屉原理,只要我们将整个64位的二进制串划分为4块,无论如何,匹配的两个simhash code之间至少有一块区域是完全相同的
1、将64位的二进制串等分成四块
2、调整上述64位二进制,将任意一块作为前16位,总共有四种组合,生成四份table
3、采用精确匹配的方式查找前16位
4、如果样本库中存有2^34(差不多10亿)的哈希指纹,则每个table返回2^(34-16)=262144个候选结果,大大减少了海明距离的计算成本
我们可以将这种方法拓展成多种配置,不过,请记住,table的数量与每个table返回的结果呈此消彼长的关系,也就是说,时间效率与空间效率不可兼得,参看下图:
事实上,这就是Google每天所做的,用来识别获取的网页是否与它庞大的、数以十亿计的网页库是否重复。另外,simhash还可以用于信息聚类、文件压缩等。
或者直接将数字指纹保存到了全文检索引擎提供的数据库中

Ref:

人工智能笔记收集

以下部分内容摘自网络,版权归作者所有,放在这里仅供自己学习试验
TFIDF (term frequency–inverse document frequency) 就是个颇为成功的统计量。它计算一个词在当前文章中出现的次数(term frequency),除以这个词在其余海量文章中出现的平均次数的log。
syntax层面 ->semantic语义层面
Semantic Web技术,有后台Ontology。Ontology是一个知识库,包括概念/类,概念之间的上下位关系,以及他们之间其他的属性关系(object/datatype property)。这个东西能很好地解决语义问题,实现推理(说“理解”什么概念,人一般就能用自己的知识推导出一些隐含的知识)。但是这里只是知识,比如“狗喜欢吃肉”,“人可以是**”,但是没有实例,也就是说它不知道“张三是一只狗的名字”,“李四是**”。这些实例的来源,最好的方法当然就是从Web信息抽取,但是挺难的。。。SW最致命的问题是,慢。。。
HPSG是一种语法(CFG那种),现在也有不少HPSG Parser,你拿一段文字丢进去,结果里面既有syntatic信息(分词,词性标准,句子结构)也有一部分语义。
语音语素ASR生成,生成各种语调各种口音各种心情什么的

  1. 自然语言分析(NLP)
  2. 人工智能(谓词逻辑模型、机器学习ML、支持向量机SVM、神经网络、贝叶斯逆概网络等)
    自然语言分析是将语音和非结构化的文本段落进行转化、分词、进行词性标注、进行实体识别、用Parser构造为语法树,以供计算机可以使用逻辑方法进行识别和认知。
    而人工智能部分,则提供了诸多的方法,以自然语言分析的结果作为输入,进行知识概念关系抽取、进行特定领域的问题判别等等。
    理论上讲,足够多神经元的正向反馈神经系统,通过训练,可以近似模拟大脑对外界信号的判断。
    当然,得到判断结果之后,再如何将这些结果反馈回来让人去理解,与人交互就又是另外一个领域的问题了(HCI)。
    目前主要的困难还是集中在自然语言的理解中。目前的方法大致都是这种建立模型,训练模型,利用模型的方法。并没有很好的解决方案,当下最好的自然语言系统也只能做简单的模型式”理解“,并没有真正的理解语言本身。
    人工智能程序最终的目标应该是能从很少的公理出发,通过大量的阅读人类已有的知识,然后能够回答基于这些已经阅读过的知识的任何问题。人工智能的终极目标是仿制人类自己,而完成一个真正的自然语言理解系统也几乎相当于建造一个大致相当于人脑功能的理解系统。这也是我个人认为的人类终极问题之一。
    机器可以识别人类自然语言的动词体系,它应该有一套对于初始动词的完整定义,然后通过特定的机制(动词体系)来添加新的词汇和定义,就像编写维基百科一样,这是一种还原论的思路,而重点在于确定不可再分的原子,它们会是什么呢?
    现在主流的是统计模型, 目前的趋势应该会逐渐脱离基于特征的统计, 而转向结合kernel的半监督统计

关于编程与人工智能

今天开始使用prolog,感觉逻辑式编程真的不错,适合做安德(人工智能)
以下是看一些文档时记录的笔记和只言片语

Live编程 即时反馈 不会break正在运行的系统 热加载
面向结果编程
Lisp发明人John McCarthy最后的Elephant2000语言 http://www.douban.com/note/123156245/
超越现有语言 语言自进化
想为安德设计一种自然语言交互基础,想想其实就是创建自进化的语言:

IO语言思维:-
对话者提出问题.
安德分析目的.
判断是否能回答.
判断是否应该回答,适当拒绝.
给予:适当的向对话者推荐.
接纳:学习新的观念,验证后修改自己的思考方式.
内在第一驱动:(发现自己是谁,与外界适当的交互让自己有生存的条件)
承诺:尽量提供帮助,承诺必须被遵守,异步队列多方式寻求帮助和合作并给出回报

技能:-
语句逻辑表达的正确性能够自动的从程序的形式产生
分布式
神经网络
自组织

函数:-
提出问题 -> 将其需求本质作为变量
搜寻已知事实+事实&变量间的映射的描述(Prolog是描述性语言)
-推演(回溯,模式匹配,联想,归纳,建立模型并验证,)-
实现自动发现给定问题的适当回答

思考的时间性
The world is parallel
Event Driven

一些参考资料

Sublime Text 2 使用技巧

https://sublime.wbond.net/installation

插件
SublimeLinter
JS Format
Git
SublimeCodeIntel
All Autocomplete

快捷键(只列出部分不熟悉的)
Alt+F3 选择所有相同的词
Alt+Shift+数字 分屏显示
Alt+数字 切换打开第N个文件
Ctrl+Alt+/ 块注释,并Focus到首行,写注释说明用的
Ctrl+D 选择单词,重复可增加选择下一个相同的单词
Ctrl+F2 设置/删除标记
Ctrl+G 跳转到第几行
Ctrl+J 选择标签内容 合并所选行
Ctrl+K Backspace 从光标处删除至行首
Ctrl+K+B 开关侧栏
Ctrl+K0 展开所有
Ctrl+KK 从光标处删除至行尾
Ctrl+KL 改为小写
Ctrl+KU 改为大写
Ctrl+L 选择整行(按住-继续选择下行)
Ctrl+L 选择行,重复可依次增加选择下一行
Ctrl+M 跳转到对应括号
Ctrl+P 搜索项目中的文件
Ctrl+Shift Enter 插入行前
Ctrl+Shift+/ 当前位置插入注释
Ctrl+Shift+[ 折叠代码
Ctrl+Shift+] 展开代码
Ctrl+Shift+A 选择光标位置父标签对儿
Ctrl+Shift+D 复制光标所在整行,插入在该行之前
Ctrl+Shift+Enter 在当前行前插入新行
Ctrl+Shift+K 删除所选行
Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号)
Ctrl+Shift+M 选中当前括号内容,重复可选着括号本身
Ctrl+Shift+P 打开命令面板
Ctrl+Shift+V 粘贴并自动缩进(其它兄弟写的,实测win系统自动缩进无效)
Ctrl+Shift+V 粘贴并格式化
Ctrl+Shift+W 关闭所有打开文件
Ctrl+T 词互换
Ctrl+U 软撤销
Ctrl+U 软撤销,撤销光标位置
F9 行排序(按a-z)
Shift+F11 全屏免打扰模式,只编辑当前文件
鼠标的前进后退键可切换Tab文件

配置
"default_line_ending": "unix",
"trim_trailing_white_space_on_save": true,
"ensure_newline_at_eof_on_save": true,

snippet
点击 Tools -> New Snippet
hello 注释符号
存成 .sublime-snippet 文件
新文件中输入hello,然后tab

其他
基本没用过什么IDE 使用了一下pycharm,感觉不错
而且现在官方也发布了免费开源的社区版本 http://www.oschina.net/news/45285/pycharm-3-0-released
而且内置支持sublime text,有些不错的功能,可以试试
另外
Lime:Sublime Text编辑器的开源替代品

自然语言理解的研究笔记

11年就开始了,分心的事情太多,进展非常小

14年开始了,记录一些笔记,督促自己前进(本文不断更新)
除了学习和实践一些基础任务(分词 词性标注 依存句法分析 指代消解 词义消歧 实体识别)的原理和实现
在工程上和实践上也会不断给出成果
目前计划在推进自己的基础代码实现的同时
新一年的安德一定会恢复
目前在做的:
分析维基百科的全部中文文章
优化一份一份行业内的分类词库
140117
参考链接:

看到的一篇文章: http://blog.sciencenet.cn/blog-362400-701815.html
目前采用的统计学和语言规则并重的方式
140123

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.