crf

地理文本处理技术在高德的演进(下)

我的梦境 提交于 2019-12-03 20:46:14
​在上篇里,我们介绍了地理文本处理技术在高德的整体演进,选取了几个通用query分析的点进行了介绍。下篇中,我们会选取几个地图搜索文本处理中特有的文本分析技术做出分析,包括城市分析,wherewhat分析,路径规划,并对未来做一下展望。 四、query分析技术演进 4.1 城市分析 在高德地图的检索场景下,从基础的地图数据索引、到在线召回、最终产品展示,均以市级别行政单位为基础粒度。一次完整的检索需求除了用户输入的query外,还会包含用户的图面城市以及用户位置城市两个城市信息。 通常,大多数的搜索意图都是在图面或者用户位置城市下,但是仍存在部分检索意图需要在其他城市中进行,准确的识别出用户请求的目标城市,是满足用户需求的第一步,也是极其重要的一步。 在query分析策略流程中,部分策略会在城市分析的多个结果下并发执行,所以在架构上,城市分析的结果需要做到少而精。同时用户位置城市,图面城市,异地城市三个城市的信息存在明显差异性,不论是先验输出置信度,还是用后验特征做选择,都存在特征不可比的问题。 在后验意图决策中,多个城市都有相关结果时,单一特征存在说服力不足的问题,如何结合先验置信度和后验的POI特征等多维度进行刻画,都是我们要考虑的问题。 原始的城市分析模块已经采用先验城市分析和后验城市选择的总体流程 但是原始的策略比较简陋,存在以下问题: 问题1:先验和后验两部分均基于规则

Bidirectional LSTM-CRF Models for Sequence Tagging论文笔记

匿名 (未验证) 提交于 2019-12-03 00:19:01
参考文献 Huang Z, Xu W, Yu K. Bidirectional LSTM-CRF Models for Sequence Tagging[J]. Computer Science, 2015. 本篇论文介绍了LSTM网络、BI-LSTM网络、CRF网络、LSTM-CRF网络、BI-LSTM-CRF网络,比较将它们用于自然语言处理的性能与准确率。重点介绍了BI-LSTM-CRF网络。 文章来源: Bidirectional LSTM-CRF Models for Sequence Tagging论文笔记

CRF实现NER

匿名 (未验证) 提交于 2019-12-03 00:09:02
  NER,英文全称:Named Entity Recognition。主要是用来识别一段文本中哪些是物体的名字,比如人名、公司名。   常见算法如下:   CRF(Conditional random field,条件随机场)是一种 判别式模型   对于NER任务,常见的标签体系包括IO、BIO、BMEWO、BMEWO+。下面举例说明不同标签体系的区别。   CRF++:C++实现,提供python 和 java接口。 详情参考 这里 。   NLTK : Python 的自然语言处理工具箱,使用方式参考 这里 。   Stanford NLP: Java 实现,但是集成到了 NLTK 里,所以也可以使用 Python。详情参考 这里 。   Sklearn_crfsuite: Python 的一个包,使用方式参考 这里 。 来源:博客园 作者: 农夫三拳有点疼 链接:https://www.cnblogs.com/chen8023miss/p/11558320.html

第十一章-CRF的奇妙之处

匿名 (未验证) 提交于 2019-12-03 00:09:02
上篇中,我们了解到HMM的相关知识,并且知道HMM属于概率有向图模型,接下来,让我们一起学习总结概率无向图模型――条件随机场(Conditional Random Field, CRF)。 概率无向图模型又称为马尔可夫随机场,是一个可以由无向图表示的联合概率分布。 \[ 设有联合概率分布P(Y),由无向图G=(V,E)表示,V表示结点集合,E表示边集合,\\在图G中,结点表示随机变量,边表示随机变量之间的依赖关系。如果联合概率分布P(Y)满足\\成对、局部或全局马尔可夫性,就称此联合概率分布为概率无向图模型或马尔可夫随机场。 \] 如图上,一共有10个结点(即10个随机变量),任意找两个没有边直接连接的结点,假设有两个随机变量(u,v)没有边相连,剩下的8个随机变量记为O,当给定O时,u和v是独立的,即P(u,v|O)=P(u|O)P(v|O)。 如上图,任意找一个结点v,与v有边相连的所有结点记为W,其余5个结点记为O,当给定W时,v和O是独立的,即P(v,O|W)=P(v|W)P(O|W)。 一共有8个结点(即有8个随机变量),取中间两个随机变量记为集合C,当将集合C从图中删掉之后,那么剩下的6个结点分成了两个部分,可知左边的3个结点和右边的3个结点没有任何边将它们相连,当给定C时,A和B是独立的,即P(A,B|C)=P(A|C)P(B|C)。 注意

命名实体识别 BiLSTM――CRF

匿名 (未验证) 提交于 2019-12-02 23:43:01
本篇文章假设你已有lstm和crf的基础。 BiLSTM+softmax lstm也可以做序列标注问题。如下图所示: 双向lstm后接一个softmax层,输出各个label的概率。那为何还要加一个crf层呢? 我的理解是softmax层的输出是相互独立的,即虽然BiLSTM学习到了上下文的信息,但是输出相互之间并没有影响,它只是在每一步挑选一个最大概率值的label输出。这样就会导致如B-person后再接一个B-person的问题。而crf中有转移特征,即它会考虑输出label之间的顺序性,所以考虑用crf去做BiLSTM的输出层。 BiLSTM+crf的基本思想 BiLSTM+crf的结构如图所示: 对于每一个输入我们得到一个预测label序列定义这个预测的得分为: 其中Pi,yi为第i个位置softmax输出为yi的概率,Ayi,yi+1为从yi到yi+1的转移概率,当tag(B-person,B-location。。。。)个数为n的时候,转移概率矩阵为(n+2)*(n+2),因为额外增加了一个开始位置和结束位置。这个得分函数S就很好地弥补了传统BiLSTM的不足,因为我们当一个预测序列得分很高时,并不是各个位置都是softmax输出最大概率值对应的label,还要考虑前面转移概率相加最大,即还要符合输出规则(B后面不能再跟B)

运用CRF技术进行简单分词

匿名 (未验证) 提交于 2019-12-02 23:42:01
1,下载icwb2-data语料库 2, 按4-tag对训练数据(pku_training.utf8)进行标注,make_crf_train_data 所谓的4-tag:S,单个词;B,词首;E,词尾;M,词中 代码如下: input_data = codecs.open(pku_training, 'r', 'utf-8') output_data = codecs.open(pku_training_out, 'w', 'utf-8') for line in input_data.readlines(): word_list = line.strip().split() for word in word_list: if len(word) == 1: output_data.write(word + " S\n") else: output_data.write(word[0] + " B\n") for w in word[1:len(word)-1]: output_data.write(w + " M\n") output_data.write(word[len(word)-1] + " E\n") output_data.write("\n") input_data.close() output_data.close() 3,下载CRF+±0.58安装包

Sequence learning using Conditional Random Fields?

杀马特。学长 韩版系。学妹 提交于 2019-12-02 10:41:27
问题 I am new to sequential learning (& machine learning) & am trying to understand how to use conditional random fields to solve my problem. I have a dataset which is a sequential log of when & where did an end user of my application worked. For example, the following dataset will only have values for User1 User Facility Weekday User1 FacilityA Monday User1 FacilityB Tuesday User1 FacilityC Wednesday ... ... ... I am trying to solve the following problem: Given a weekday and facility a user

轻松理解条件随机场

偶尔善良 提交于 2019-12-02 06:45:20
说明一下:下面这篇文章是我看过之后感觉非常好的一篇文章,不仅解释了CRF,还对CRF与逻辑回归和HMM的比较也做了一番说明,真的是相对精彩。我转载的文章是经过两次转载了,第一次转载的出处已经不存在了,我担心这篇文章消失了,所以就在这里再次转载了。 理解条件随机场最好的办法就是用一个现实的例子来说明它。但是目前中文的条件随机场文章鲜有这样干的,可能写文章的人都是大牛,不屑于举例子吧。于是乎,我翻译了这篇文章。希望对其他伙伴有所帮助。 原文在这里[http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/] 想直接看英文的朋友可以直接点进去了。我在翻译时并没有拘泥于原文,许多地方都加入了自己的理解,用学术点的话说就是意译。(画外音:装什么装,快点开始吧。)好的,下面开始翻译! 假设你有许多小明同学一天内不同时段的照片,从小明提裤子起床到脱裤子睡觉各个时间段都有(小明是照片控!)。现在的任务是对这些照片进行分类。比如有的照片是吃饭,那就给它打上吃饭的标签;有的照片是跑步时拍的,那就打上跑步的标签;有的照片是开会时拍的,那就打上开会的标签。问题来了,你准备怎么干? 一个简单直观的办法就是,不管这些照片之间的时间顺序,想办法训练出一个多元分类器。就是用一些打好标签的照片作为训练数据,训练出一个模型

自然语言处理从小白到大白系列(6)说说中文分词那些事

橙三吉。 提交于 2019-12-02 05:06:24
文章目录 一. 分词常用方法 1.1 基于词表的方法 最大匹配法 全切分路径选择法 1.2 基于统计模型的方法 1. n元语法模型 2. 隐马尔可夫模型(Hidden Markov Model ,HMM) 3. 条件随机场模型(Conditional Random Fields,CRF) 1.3 基于深度学习的方法 二. 分词常用工具 2.1 [jieba](https://github.com/fxsjy/jieba) 2.2 [hanLP](https://github.com/hankcs/pyhanlp) 2.3 [PKUseg](https://github.com/lancopku/pkuseg-python) 2.4 [thulac](https://github.com/thunlp/THULAC-Python) 2.5 [nlpir](https://github.com/NLPIR-team/NLPIR) 2.6 [snowNLP](https://github.com/isnowfy/snownlp) 自然语言处理的中文分词有三个难点: 分词标准 例如“花草”,有的人认为是一个词,有的人认为应该划分开为两个词“花/草”。某种意义上,中文分词可以说是一个没有明确定义的问题。 切分歧义 不同的切分结果会有不同的含义,这个不用举例了,很常见。 未登录词 也叫新词发现

Sequence learning using Conditional Random Fields?

江枫思渺然 提交于 2019-12-02 03:26:36
I am new to sequential learning (& machine learning) & am trying to understand how to use conditional random fields to solve my problem. I have a dataset which is a sequential log of when & where did an end user of my application worked. For example, the following dataset will only have values for User1 User Facility Weekday User1 FacilityA Monday User1 FacilityB Tuesday User1 FacilityC Wednesday ... ... ... I am trying to solve the following problem: Given a weekday and facility a user worked on, what facility & weekday will they work next? To solve this problem, I started looking at