tonglin0325的个人主页

Python自然语言处理学习——jieba分词

jieba——“结巴”中文分词sunjunyi开发的一款Python中文分词组件,可以在Github上查看jieba项目

要使用jieba中文分词,首先需要安装jieba中文分词,作者给出了如下的安装方法

1.全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba

2.半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install

3.手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录

 

作者介绍其采用的算法

1.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)

2.采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合

3.对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法

全文 >>

机器学习——利用PCA来简化数据

降维技术好处

  1.使得数据集更易使用

  2.降低很多算法的计算开销

  3.取出噪声

  4.使得结果易懂

 

已标注和未标注的数据上都有降维技术降维的方法

  1.主成分分析(Principal Component Analysis,PCA)。在PCA中,数据从原来的坐标系转换到新的坐标系,新坐标系的选择是由数据本身决定的。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴的选择和第一个坐标轴正交且具有最大方差的方向。该过程中一直重复,重复次数为原始数据中特征的数目。我们会发现,大部分方差都包含在最前面的几个新坐标轴中。因此,我们就可以忽略余下的坐标轴,即对数据进行了降维处理。

  2.因子分析(Factor Analysis)。在因子分析中,我们假设在观察数据的生成中有一些观察不到的隐变量(latent variable)。假设观察数据是这些隐变量和某些噪声的线性组合。那么隐变量的数据可能比观察数据的数目少,也就是说通过找到隐变量就可以实现数据的降维

  3.独立成分分析(Independent Component Analysis,ICA)。ICA假设数据是从N个数据源生成的,这一点和因子分析有些类似。假设数据为多个数据源的混合观察结果,这些数据源之间在统计上相互独立的,而在PCA中只假设数据是不相关的。同因子分析一样,如果数据源的数目少于观察数据的数目,则可以实现降维过程

全文 >>

机器学习——使用Apriori算法进行关联分析

从大规模的数据集中寻找隐含关系被称作为关联分析(association analysis)或者关联规则学习(association rule learning)

 

Apriori算法

优点:易编码实现

缺点:在大数据集上可能较慢

使用数据类型:数值型或者标称型数据

 

关联分析寻找的是隐含关系,这些关系可以有两种形式:频繁项集或者关联规则

频繁项集(frequent item sets)是经常出现在一起的集合

关联规则(association rule)暗示两种物品之间可能存在很强的关系

全文 >>

Java多线程——Semaphore信号灯

Semaphore [ˈseməfɔːr] 可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数(即允许n个任务同时访问这个资源),例如,实现一个文件允许的并发访问数。

 

Semaphore实现的功能就类似厕所有5个坑,假如有十个人要上厕所,那么同时能有多少个人去上厕所呢?同时只能有5个人能够占用,当5个人中的任何一个人让开后,其中在等待的另外5个人中又有一个可以占用了。

另外等待的5个人中可以是随机获得优先机会,也可以是按照先来后到的顺序获得机会,这取决于构造Semaphore对象时传入的参数选项。

 

单个信号量的Semaphore对象可以实现互斥锁的功能,并且可以是由一个线程获得了“锁”,再由另一个线程释放“锁”,这可应用于死锁恢复的一些场合。

通过acquire()获取访问许可,使用release()释放访问许可,Semaphore可以初始化是0,然后通过release来变成1

sp.availablePermits()可以获取当前可访问的许可的数量

sp.drainPermits()可以把所有许可全部清零

参考:并发编程之Semaphore原理与应用

全文 >>

Java多线程——其他工具类CyclicBarrier、CountDownLatch和Exchange

CyclicBarrier

适用于:创建一组任务,它们并行地执行任务,然后在进行下一个步骤之前等待,直至所有任务完成。它使得所有的并行任务都将在栅栏处列队,因此可以一致地向前移动。

表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指定地点集合碰面,这就好比整个公司的人员利用周末时间集体郊游一样,先各自从家出发到公司集合后,再同时出发到公园游玩,在指定地点集合后再同时开始就餐…

全文 >>