分词后记(一)——自己动手写了一个支持Lucene的简单分词器XinAnalyzer

用lucene的时候,看见了一个叫SmartChineseAnalyzer的支持中文分词,效果不咋的,发现竟然用的HMM分词。

当时一句"我的天",HMM要是都算Smart,我的BiLSTM+CRF那可以是Intelligent了,于是就想自己也写一个。
具体代码可见:https://github.com/1000-7/xinlp/tree/master/src/main/java/lucene/simple
良心建议:如果真的要用lucene支持中文分词,用Hanlp或者Ansj吧还是。
继续阅读“分词后记(一)——自己动手写了一个支持Lucene的简单分词器XinAnalyzer”

CRF算法学习——自己动手实现Bi-LSTM+CRF分词(python)

意图识别 <= Bi-LSTM+CRF <= 先懂CRF <= 先懂HMM <= 先懂EM
终于到这一步了,这一次要用python写了,使用tensorflow去写。关于tensorflow的使用不是我的重点。
相关代码还是在我的GitHub上。
题外话,idea可以安装一个python插件,然后设置一下python编译器,这样就可以在项目里既能运行java又能运行python了,美滋滋。

继续阅读“CRF算法学习——自己动手实现Bi-LSTM+CRF分词(python)”

HMM算法学习——使用Baum-Welch训练HMM分词模型的参数

上一篇已经说过,读取jieba分词的参数用维特比算法去进行分词。
但是也给自己留了个坑,说要训练出来HMM分词的参数。
如果还不懂前向、后向、Gamma这一些东西,请先看上一篇博客
具体代码可以查看 https://github.com/1000-7/xinlp

十分感谢这个博客,博主已经实现了,自己借用了里面的很多内容。
继续阅读“HMM算法学习——使用Baum-Welch训练HMM分词模型的参数”

GMM高斯混合模型

文章相关代码参见github:xinlp

EM算法的一个重要应用是高斯混合模型的参数估计。
高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。 继续阅读“GMM高斯混合模型”

EM算法学习

意图识别 <= Bi-LSTM+CRF <= 先懂CRF <= 先懂HMM <= 先懂EM
学习书籍:《概率论与数理统计》陈希儒.《统计学习方法》李航. 《PRML》神书.
此外参考了一些博客,看懂EM还是花了一些时间的,在李航那本书上做了很多笔记,所以整理出来这篇博客。

文章相关代码参见github:xinlp

这一篇就是从EM开始讲,EM的各种变量也统一是用《统计学习方法》这本书的,言归正传。 继续阅读“EM算法学习”

Weka学习记录

weka基本介绍

原来weka在我心里是一个很不美观的东西,因为用java做的图形用户界面一般是很丑陋的,说实话我知道的用java做GUI还稍微流行起来的就两个,citespace和weka
在发布jdk1.0的时候,当年的Sun公司希望在windows系统做出来的东西像windows风格,unix系统表现出unix风格,但是最后的结果就是十分丑陋(官方承认不够美观)

继续阅读“Weka学习记录”

ROC和AUC

ROC(Receiver Operating Characteristic,接收者操作特征)曲线和AUC常被用来评价一个二值分类器(binary classifier)的优劣,对于分类器,或者说分类算法,评价指标主要有precision,recall,F-score以及ROC和AUC。

继续阅读“ROC和AUC”