向量语义学(Vector Semantics)

本文是以文末参考文献[2]为主要参考的读书笔记,建议读者阅读参考文献[2],比本文高明多了。

由于wordpress的markdown转换不是很好看,可查看本文的另一个html版本

基本名词

词条(Lemma)或引用形式(citation form)

指的是一个词典或者词库中的一个单词条目。表示了一个词的基本形式和大致的含义。譬如对于 sing、sung、sang,它们的 Lemma 都是 sing,carpets 的 Lemma 是 carpet。
Read More.

NLP基础与N-Gram模型

wordpress的markdown生成的格式不是很好看,本文另外一个html版 

本文就是个读书笔记,建议读者阅读文末参考文献2和3,比本文不知高到哪儿去了。

自然语言处理的概念

  • 认知角度:理解语句
  • 实践角度:生成语句

自然语言处理的两大途径

规则方法

被称为理性主义方法,主要依赖于人的总结。基于人工整理的 CFG (上下文无关文法,Context-Free Grammar) 规则,给出解决方案。

test

统计方法

被称为经验主义方法,主要依赖于对数据的总结。从数据入手,利用统计机器学习方法解决问题。例如:通过自动学习得到PCFG(概率上下文无关文法),通过概率模型预测句法分析结果。

经验主义方法-统计方法

统计自然语言处理(Statistical NLP)

我们主要采用统计方法来进行机器学习。因此 统计自然语言处理的基本套路: – 问题形式化:将歧义问题转换成分类预测问题 – 语言的表示,建模:譬如n元模型 – 参数训练方法 – 有效的解码、推断

自然语言处理的基本框架

  • 词层面
    • 语言模型
    • 分词
    • 词性标注(POS)
  • 语法层面
    • 句法解析
  • 语义层面
    • 命名实体识别(NER)
    • 语义角色标注(SR)
  • 应用层面
    • 文本分类
    • 机器翻译
    • 自动问答
    • 情感分析

n元模型

统计语言模型

统计语言模型(Statistical Language Model)是一种History-based Model。 P(W)=P(w1w2…wn)=P(w1)P(w2|w1)
P(w3|w1w2)…P(wn|w1w2…wn-1)
定义:统计语言模型是用来刻画一个句子(词串序列)存在可能性的概率模型

该模型认为,语句中当前词是可以通过之前的词预测的。当然这个假设其实有些不切实际的,因为不可能总是通过过去的词预测将来的词。
Read More.

Java并行流之老生常谈

Stream API是Java 8推出的新特性,眼看Java 9 (2017年7月份) 即将推出,为什么还来谈Stream呢?毕竟自从Java 8推出以来,关于流的具体使用的文章相当之多,因此本文也不打算重复描述Stream的使用方法,而是想谈谈很少被提及的一些基本问题。

1.Java 8引入lambda语法的设计初衷是什么?是为了解决Java语言为人诟病的语法繁琐问题吗?

Read More.

bug害人呐

不久前发现自己很久前的http request的代码里出了个大bug,接收服务器返回的数据时,因为自己定义并使用了一个可变byte数组,数组长度不足时会成倍增加,另外有个值记录真实长度,然而获取真实数组时我却返回了整个数组….导致数组长度总是1024的倍数,因为这个bug,某项目从服务器收取的文件的大小全是1024的倍数,平均每个文件多占用了25%的磁盘空间,总计400GB!

bug害人呐?

DataList.java

和同学讨论传递Function是否可以解耦写的代码,QQ讨论时没语法高亮就放博客了,一直忘删了。
Read More.

适用于ipv6的hosts文件

国内目前ipv6的墙好像还不高,基本只要dns解析正确就能访问某些404网站。出于访问Youtube的目的,因此去年写了一个批量解析Google域名并生成hosts的程序,Github连接 。其中还做了根据域名规则嗅探新的域名。程序写的很渣,一直没好意思写Readme。

目前有四万行,可看Youtube全站,基本上用个三四个月都不用更新,我一般都是遇到硬需求才会更新一把(譬如youtube很多视频访问不了了)。

hosts文本下载链接:https://padeoe.com/file/hosts

 

基于最小割算法的点云分割

计算机图形学课两个课题之一,我的第一个选题其实就已经把第二次选题(图形分割)做完了,老师问我,那你还用第一次选题的RANSAC算法吧,结果脑子一热装了把逼“不不,我做最小割算法分割吧,学习新知识嘛”。

1.与其他分割算法的不同

目标:不是将点云分成多个部分,而是将前景对象从背景点中分离出来

特点:

  • 不关心细粒度特征例如曲率,而是只依赖点间距和点密度来分割。

Read More.

使用RANSAC进行平面模型分割

RANSAC

  • RANSAC(Random Sample Consensus),即随机采样一致性算法。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。该算法最早由Fischler和Bolles于1981年提出。
  • 输入:一个数据集(点云),一个适用的模型(平面模型),一个可靠性参数(距离阈值)

算法过程

Read More.

Java容器类

这篇文章看起来有些弱智,奈何zz阿里面试官就是喜欢考,一怒之下就背了一把

1.Java容器类有哪些?

Java的容器主要有两种,一种是Collection及其子类,一种是Map及其子类。其中Collection十分复杂,其本身还有好多子类接口。如下
1.Collection

是独立元素的序列,包含三个主要子接口

  1. List 有序
  2. Set 无序去重
  3. Queue 有序,可以先进先出

2.Map

是键值对。

2.各种容器类的接口分别是怎样的? Read More.

final关键字的使用

题记:

起这个标题时,我想到,作为一个三四年经验的Java程序员,这个话题未免显得有些基础。这么想,是因为我一直不认为应该把博客当成书本知识点(或者说语言文档)的复述者,然而 Read More.

1 2 3