Skip to main content

3 posts tagged with "nlp"

View All Tags

crf

· 2 min read

一点也不懂nlp的我

吉布斯分布

Hammersley-Clifford_Theorem

损失函数

crf

计算参数的方式

crf 的参数非常多,怎么求呢? 通过最大似然估计

最大似然函数的本质是什么?

本质就是: 已知统计的分布 , 那么我们假定我们统计到的数据是最大可能出现的.那么这个最大的概率对应的参数就是我们想要的参数

拟牛顿法

标注方式

函数

Y = { B , M , E , S}
X = {今,天,天,气,真, 热}

liner crf 参数求解

如何训练

  • 标注 我们要怎么标注呢? 比如我有两个人民日报的句子
// 句子1 
全总/j 致/v 全国/n 各族/r 职工/n 慰问信/n
// 句子2
勉励/v 广大/b 职工/n 发挥/v 工人阶级/n 主力军/n 作用/n ,/w 为/p 企业/n 改革/vn 发展/vn 建功立业/l

怎么标注呢

下面是例子

// 句子1
全/B 总/E 致/S 全/B 国/E 各/B 族/E 职/B 工/E 慰/B 问/M 信/E
// 句子2
勉/B 励/E 广/B 大E 职/B 工/E 发/B 挥/E 工/B 人/M 阶/M 级/E 主/B 力/M 军/E 作/B 用/E ,/S 为/S 企/B 业/E 改/B 革/E 发/B 展/E 建/B 功/M 立/M 业/E

参数估计 $$ P(Y|X) = \frac{P(x,y)}{P(x)} \\\\=\frac{1}{Z(X)} e^{\sum_{n=1}^{20} n^{2}} $$

我的es之旅

· 2 min read

分词

什么是分词,分词是一个分类问题,一般是基于权重判断是否是需要切分.机器是识别不了文字的,所以只是一个权重的切分

分词会发生在两个步骤: 写入doc , 查询query

在lucene的堆栈一般是这样的,最后调用的是incrementToken 接口

incrementToken:147, StandardTokenizer (org.apache.lucene.analysis.standard)
incrementToken:37, LowerCaseFilter (org.apache.lucene.analysis)
incrementToken:51, FilteringTokenFilter (org.apache.lucene.analysis)
fillCache:91, CachingTokenFilter (org.apache.lucene.analysis)
incrementToken:70, CachingTokenFilter (org.apache.lucene.analysis)
createFieldQuery:318, QueryBuilder (org.apache.lucene.util)
createFieldQuery:257, QueryBuilder (org.apache.lucene.util)
newFieldQuery:468, QueryParserBase (org.apache.lucene.queryparser.classic)
getFieldQuery:457, QueryParserBase (org.apache.lucene.queryparser.classic)
handleBareTokenQuery:824, QueryParserBase (org.apache.lucene.queryparser.classic)
Term:494, QueryParser (org.apache.lucene.queryparser.classic)
Clause:366, QueryParser (org.apache.lucene.queryparser.classic)
Query:251, QueryParser (org.apache.lucene.queryparser.classic)
TopLevelQuery:223, QueryParser (org.apache.lucene.queryparser.classic)
parse:136, QueryParserBase (org.apache.lucene.queryparser.classic)

搜索

搜索的原理是 倒排+权重 ,然后取出权重最高的前几个,所以也可以看成是一个权重分类问题.

高可用

// todo

冗余

// todo

错误转移

// todo

lucence

lucence 的源码有简单的例子,主要分成三个部分

- 1 索引
- 1.1分词
- 2 存储
- Lucene有很多类,不过我抽象成存储应该不过分,这个我没有仔细看

- 3 搜索
- 3.1 计算权重(一般是idf-td)

我还没用仔细看es的内容,不过根据我编译原理的理解,es就是在上面加一层parse然后转换成相应的操作

相关阅读