NLP
文章平均质量分 72
自然语言处理
ouprince
这个作者很懒,什么都没留下…
展开
-
项目实践 -- CRF实体识别
# -*- coding:utf-8 -*-from __future__ import division''' 使用线性 CRF 实现实体识别的任务 使用 sklearn-crfsuite 中的 CRF ''' from itertools import chain # 迭代器import nltkimport sklearnimport scipy.stats...转载 2019-02-01 14:30:19 · 4322 阅读 · 8 评论 -
中文 NLP(11) -- stanfordNLP 生成文法之 PCFG 模型
在短语结构文法中,也就是转换生成语法,目前最成熟、精度最高的算法就是 PCFG 算法。另一种基于依存句法理论的分析方法,最高效的是深度学习算法(Trainsition-Based LSTM)PCFG 即 Probabilistic CFG ,也就是基于概率的短语结构分析。也就是在 G = (X,V,S,R) 的基础上加一个 P 表示概率,变成 G= (X,V,S,R,P) 约束如下:...转载 2018-12-07 17:23:45 · 7207 阅读 · 0 评论 -
中文 NLP (10) -- 句法解析之 转换生成语法 和 依存句法
多年来 NLP 领域最广泛的两种句法分析理论分别为 转换生成语法和依存句法。转换生成语法短语结构文法:形式化定义为 G = (X,V,S,R) 这样一个四元组。X 是词汇集合,称为终结符。V 是标注的集合,称为非终结符。S 属于 V ,称为文法开始符。R 是有序偶对(α,β)的集合,α 是集合 (X∪V)上的字符串,但至少包含一个非终结符,β 是(X∪V) 闭包的元素。一般的,将有序偶对...转载 2018-12-07 14:06:02 · 4732 阅读 · 0 评论 -
中文 NLP(9) -- 实体识别
(1)实体识别识别 人名,地名,组织机构,日期,时间,百分数,货币这七大实体。重点是人名,地名和组织机构的识别。属于未登录词识别的范畴。人名特征:当今仍使用,活跃的中文姓氏大致有1000 多个,前 586 个姓占了 98.5%。其余姓氏不到 1.5%。名字用字分布较姓氏用字分布要平缓,分散。共 3679 个名字用字,词性分布也很广泛,不仅有实词,还有各类虚词。地名特征:较之人名相比,地...转载 2018-12-04 10:08:52 · 4371 阅读 · 6 评论 -
中文 NLP(8) -- 使用 CRF++ 和 BIO 表示法训练模型
一般在训练 NLP 模型,比如分词,词性,组块标注等等时,采用 BIO 表示法,说明如下:B — 代表当前词是一个组块的开始I — 代表当前词在一个组块中O — 代表当前词不在任意组块中 。如果要求更精确,可以增加两个符号:E — 代表组块结束S — 代表当前词是一个组块,该组块只有一个词以句法组块标注训练为例,我们先将 宾州树 的标注使用 perl 小程序作如下转化,...转载 2018-12-02 14:54:37 · 5768 阅读 · 0 评论 -
中文 NLP(7) -- CTB语义组块说明
CTB 语义组块类别表 标注 英文说明 中文说明 ADJP Adjective phrase 形容词短语 ADVP Adverbial phrase headed by AD 由副词开头的副词短语,状语 CLP Classifier phrase 量词短语 CP Clause headed by C 由补语引导的补语从句...转载 2018-11-30 14:49:10 · 2019 阅读 · 0 评论 -
中文 NLP(6)-- stanford 训练词性标注模型
在 第一节发布的样本中,修改类StanfordPOSTagger 如下,增加训练模型文件方法:# 词性标注class StanfordPOSTagger(StanfordCoreNLP): ... 以上代码略,增加如下方法 # 生成训练配置文件命令 def __buildprop(self): self.propline = 'java -mx1...转载 2018-11-30 10:44:24 · 2278 阅读 · 0 评论 -
中文 NLP(5) -- 宾州树《汉语词性标注规范》
词性标记 英文名称 中文名称 例子 AD adverbs 副词 “还” AS Aspect marker 体标记 了,着,过 BA in ba-const 把/将 把,将 CC Coordinating conjunction 并列连词 “和”,“与”,“或”,“或者” CD Car...转载 2018-11-29 15:34:41 · 1689 阅读 · 0 评论 -
中文 NLP(4) -- 四大概率算法模型之 最大熵模型 ME 及其 GIS 实现
之前分别介绍了朴素贝叶斯模型和隐马尔科夫模型,接下来我们解析第三大概率模型 -- 最大熵模型。说实在的,我这里不愿去写一大堆数学公式出来,即敲的累看的也累。首先介绍下数学思想:在满足一些客观真实(通过训练数据)的约束下,这样的概率模型的子集中,我们选取最大信息熵的那个模型。我们只说下CIS 算法的最后迭代收敛公式:类似梯度下降原理,不断的使得模型最终的效果满足训练数据的经验分布的一...转载 2018-11-28 15:35:42 · 986 阅读 · 0 评论 -
中文 NLP(3) -- 四大概率算法模型之 隐马尔科夫模型 HMM 和 维特比算法 Viterbi
之前说过,基于NLP处理的算法思想目前主要有两大流派:统计论流派和深度学习流派。而在统计论中,常用的 4 大概率模型分别是 朴素贝叶斯模型,隐马尔科夫模型,最大熵模型和条件随机场模型。对于朴素贝叶斯模型,前面已经多次打过交道,原理也相对简单。这里解析第二大模型 -- 隐马尔科夫模型。我要说明的是,任何理论,都是以基本数学原理为思想,但是每个人的想法不同,解析的角度不同,求解的思路不同,所以我的...转载 2018-11-27 12:21:31 · 1025 阅读 · 0 评论 -
中文 NLP (2) -- ICTCLAS分词
随着白话文的兴起,构成中文的最小独立单位由字转入词。因此分词是中文处理的第一步,没有这一步中文处理也就无法再进行下去。中文分词有三大流派:1.机械式分词法:将文档中的字符串与词典中的词条逐一匹配,如果命中,则匹配成功。2.基于语法和规则:主要是为了解决分词中的第一大难题:歧义切分。因此在分词的基础上同时进行句法,语义分析,利用句法和语义信息进行词性标注,已解决分词歧义现象。3.统计...转载 2018-11-23 16:01:33 · 780 阅读 · 0 评论 -
中文NLP(1) -- 开源工具 ltp 和 stanford
完整的代码和模型文件可在我的GitHub:(代码是 linux 版本,windows 上运行只需要简单调整)https://github.com/ouprince/pyltp-stanford-nlpLTP 训练套件:https://ltp.readthedocs.io/zh_CN/latest/train.htmlpyltp 使用:https://blog.csdn.net/meb...转载 2018-11-20 16:59:17 · 1284 阅读 · 0 评论 -
winnowing 算法 -- 提取文档指纹特征
关于 winnowing 算法的简单的解释就是:基于 k-gram 的哈希码,以最小规则提取部分gram 的哈希码作为文档特征指纹,并记录gram的位置。源码和步骤如下:(1)对文档进行字符标记,比如 "asdf",变成 [(0,"a"),(1,"s"),(2,"d"),(3,"f")]def sanitize(text): """Removes irrelevant featu...转载 2018-09-04 14:53:24 · 3065 阅读 · 0 评论 -
python 深度学习(5)-- 随机失活 & 过采样
(1)随机失活随机失活指的是在每轮训练时忽略一定随机数量的神经元,dropout 可能会提高 DNN 性能。随机省略一部分隐藏的神经元的过程称之为 随机失活 。如图阐释一下这种方法:对于每次训练的实例,每个隐藏层的神经元以 p 的概率从网络中随机被忽略。由于神经元是随机选择的,因此每个训练实例选择的都是不同的神经元组合。随机失活并不能保证提高性能,但通常值得一试。牢记以下三点:...转载 2018-07-13 17:41:30 · 3520 阅读 · 0 评论 -
python 深度学习(3) -- 模型优化准则
(一)激活函数的选择在前面我们提到的激活函数是 sigmoid 函数,但 sigmoid 函数有一个很大的局限性,就是当 x 增大或减少时,它的梯度变得越来也小。如果使用梯度下降或类似的方法,就存在问题。也就是 梯度消失问题 。因为大的负数变为 0 ,大的整数变成 1 这意味着大面积的输入空间被映射到一个非常小的范围。使用不会将输入空间压缩成狭小范围的激活函数,将可以避免梯度消失的问题。用...转载 2018-07-13 11:20:37 · 1928 阅读 · 1 评论 -
Facebook AI Research -- Enriching Word Vectors with Subword Information(fasttext 表征学习篇)
用子词信息丰富词向量摘要:在大型无标记的语料库中训练的连续词汇表示,对于许多自然语言处理(NLP)的任务都是有用的。许多主流的模型通过为每一个单词赋予不同的词向量而忽视了词汇的词形。这对于拥有大量词汇,许多是稀有词的形态丰富的语言而来尤其是一种限制。本论文,我们提出了一种基于 skip-gram 模型的...翻译 2018-07-03 18:55:39 · 2232 阅读 · 1 评论 -
关于cnn 文本分类参数调节总结
在使用 cnn 作为文本分类方法时,以下是我根据实际经验得出的参数调节和实验小节:1. Inception-v3 模型效果大于 Lenet-5 模型在文本分类应用上,使用 Inception-v3 网络结构的模型效果要由于传统的 Lenet-5 模型,主要是因为在对于原始数据的特征提取上 Inception-v3 模型比 Lenet-5 模型更深入。cnn 作为深度神经网络之一,Incep...转载 2018-07-10 14:05:54 · 5088 阅读 · 2 评论 -
fasttext(3)-- API 文档 & 参数说明
(1)fasttext.skipgram 和 fasttext.cbow 参数如下input_file 训练文件路径(必须)output 输出文件路径(必须)lr 学习率 default 0.05lr_update_rate 学习率更新速率 default 100d...转载 2018-06-28 18:18:24 · 17462 阅读 · 3 评论 -
fasttext(2)-- 安装 & 使用
fastText 安装fasttext 是一个有效的学习字词表达和句子分类的库。建立在现代 Mac OS 和 Linux 发行版上。因为它使用了 C++11 的特性,所以需要一个支持 C++11 的编译器,这些包括:gcc-4.8 或更高版本clang-3.3 或更高版本安装 fasttext(1)最简单的方法是使用 pip 安装$ git clone https://g...转载 2018-06-28 16:27:43 · 12824 阅读 · 5 评论 -
fasttext(1) -- 认识 fasttext 和 初步使用
fastText 的 Python接口:https://github.com/salestock/fastText.py(1) fasttext 简介:FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。fastText 方法包含三部分:模型架构、层次 Softmax 和 N-gram 特征。模型...转载 2018-06-28 11:18:36 · 6029 阅读 · 0 评论 -
哈夫曼树 & 哈夫曼编码
哈夫曼树又称最优二叉树,是一种 带权路径长度 最短的二叉树。所谓的带权路径长度,就是树中所有叶节点的权值乘以其到根节点的路径长度之和。假如树的n个叶节点权值分别为 w1,w2,w3...wn 。其到根节点的路径长度分别为 L1,L2,L3...Ln。则带权路径长度 WPL = w1*L1 + w2*L2 + w3*L3 + ... + wn * Ln哈夫曼编码编码步骤:1.对给定的...转载 2018-06-27 10:27:00 · 563 阅读 · 0 评论 -
基于 CNN Inception-v3 网络结构的标签分类模型
CNN 网络标签分类1.语料处理与模型建立训练语料格式遵循 标签->标题->内容 ,标题可有可无。那么如何将文本作为卷积神经网络的输入呢?我们知道卷积神经网络的输入是一个三维矩阵,如果算上batch,则是四维矩阵。每一个三维矩阵类似图形的长宽和色深。我们首先将文档转换成向量。默认100 维。...转载 2018-06-26 13:07:00 · 2483 阅读 · 0 评论 -
基于 svm 的金融咨询情感分析
详细代码与代码说明可见我的 github:https://github.com/ouprince/svm处理流程:(1)金融咨询处理1.利用 7 万多条利好/利空语料(已经标注好的,分为 1 正性,-1 负性两类),首先采用 B-gram 卡方差提取特征词汇2.使用卡方提取的特征词为每一篇咨询建立向量表示模型3.使用向量进行 svm 分割,训练语料 80%,测试语料 20%,并...转载 2018-05-10 15:31:19 · 3562 阅读 · 5 评论 -
python jieba 分词
1.分词import jieba#全模式 , HMM 代表新词发现模式,一般关闭seg_list = jieba.cut("我来到北京清华大学",cut_all = True, HMM = False)我 来到 北京 清华 清华大学 华大 大学#精确模式seg_list = jieba.cut("我来到北京清华大学",cut_all = False) #默认是 False我 来...转载 2018-05-07 15:40:21 · 622 阅读 · 0 评论 -
python 传统学习 sklearn 模块
(1) sklearn.preprocessingfrom sklearn import preprocessingimport numpy as np#创建一组特征数据,每一行表示一个对象,每一列表示一个特征X = np.array([[1.,-1.,2.][2.,0.,0.] [0.,1.,-1.]])#将每一列标准化成标准...转载 2018-04-27 14:17:49 · 533 阅读 · 0 评论 -
最快解释 SVM 原理
SVM -- 支持向量机 ,从名字就可以看出,跟向量紧密联系。好吧,说白了 SVM 就是将向量进行二分类的算法。什么是支持向量?在解释这个问题之前,先解释什么叫线性分割。一条线(一维)可以用一个点(零维)分成两半,一个平面(二维)可以用一条直线(一维)分成两半,一个空间(三维)可以用一个平面(二维)分成两半。。。假设我们的向量是 n 维,同样可以用 n-1 维的超平面分成两半,这就叫线...转载 2018-04-26 17:27:36 · 3305 阅读 · 1 评论 -
卡方检验用于文本分类中的特征提取
卡方检验(Chi-square Test)卡方检验最基本的思想就是通过观察实际值与理论值的偏差来确定理论的正确与否。具体做的时候常常先假设两个变量确实是独立的(“原假设”),然后观察实际值(观察值)与理论值(这个理论值是指“如果两者确实独立”的情况下应该有的值)的偏差程度,如果偏差足够小,我们就认为误差是很自然的样本误差,是测量手段不够精确导致或者偶然发生的,两者确确实实是独立的,此时就接受原假设...转载 2018-04-26 14:25:15 · 1401 阅读 · 0 评论 -
N-gram 特征提取
N-gram 是一种基于统计语言模型的算法,又被称为一阶马尔科夫链。它的基本思想是将文本里面的内容按照字节进行大小为 N 的滑动窗口操作,形成了长度是 N 的字节片段序列。每一个字节片段称为 gram,对所有的 gram 的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键 gram 列表,也就是这个文本的向量特征空间。列表中的每一种 gram 就是一个特征向量维度。算法优点:1...转载 2018-04-26 09:48:08 · 14645 阅读 · 4 评论 -
Chinese-Whispers 代码实践与调节
关于Chinese-whispers 的原理不再累述,可见之前的博客或者github中的论文翻译。代码有两个版本:主要的修改对比如下1.处理过程中预处理的精化在第一版本的基础上,加强了文本预处理的精度,比如停止词和一些数据过滤处理。对效果稍微起到一点更好的效果,但不是很明显的提升。2.相似度算法的优化在原版的基础上,计算句子相似度时,考虑到了分词的不完全性和句子长度的差异性,修...转载 2018-04-16 19:12:23 · 1702 阅读 · 4 评论 -
Lucene 简单入门
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。...转载 2018-02-05 17:00:38 · 572 阅读 · 0 评论 -
详解 KDTree
简介kd树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。一个KDTree的例子上图的树就是一棵KDTree,形似二叉搜索树,其实KDTree就是二叉搜索树的变种。这里的K = 3.首先来看下树的组织原则。将每一个元组按0排序(第一项序号为0,第二项序号为1,第三项序号为2),在树的第n层,第 n%3 项被用粗...转载 2018-04-11 15:56:17 · 1557 阅读 · 0 评论 -
k-means 聚类算法的缺陷
k-means算法是一种典型的基于距离的算法,它以距离作为评价相似度的指标。两个对象的距离越近,则相似度也就越大。其算法步骤如下:1.随机选取K个聚类中心点。基于这k个中心点计算每个对象到中心点的距离,并将对象划分成其离最短的那个中心点的那一个类别,也就是第一轮迭代就根据选取的中心点将对象划分成了k类。2.对每一个类重新计算中心点,也就是中心点根据上一轮迭代的类别进行重算,得到新的k个中...转载 2018-02-27 14:26:34 · 17370 阅读 · 0 评论 -
kmeans 文本聚类方法简介
k-均值算法是一个很常见的算法,它的基本思想是:通过迭代寻找k个聚类的一个划分方案,使得用这K个聚类的均值来代表相应各个样本时所得的总体误差最小。算法步骤:1.生成索引文件 将分类的文本以句子id 句子内容(已分词处理) 作为用来生成索引文件的语料: java -cp $JAR lucene.text.FileIndexing $baseDir/test $baseDi...转载 2018-02-09 18:36:34 · 1055 阅读 · 0 评论 -
CW聚类算法原理 -- 译自《Chinese Whispers》论文
Chinese Whispers-一个有效的图聚类算法及其在自然语言处理问题中的应用 克里斯.比曼 莱比锡大学,自然语言处理学院注:由于这里...翻译 2018-01-26 14:58:38 · 6083 阅读 · 0 评论 -
关于textrank的原理和使用,提取文章摘要
从Page_rank 到 text_rank的摘要提取text-rank结果优化和完整的代码可见我的github 链接:https://github.com/ouprince/text-rank1.关于page-rankpage_rank本为解决网页和网页之间的关系,计算网页重要性而提出的一种算法.PageRank算法计算每一个网页的P...转载 2018-01-16 13:32:13 · 6565 阅读 · 2 评论 -
关于word2vec 句子相似度计算
在生成词向量之后,基于词向量计算句子相似度:1.首先处理句子的重点词汇,排除无关词汇,比如我你他之类的,non_words.txt里面是一些无关词汇2.接下来根据相关的处理结果,做一个单项匹配 首先根据s1的句子,找到是s1中第一个词语的在第二句话中的最大相似值,再依次找到第二个,第三个,取平均值作为s1 ->s2句子的单项匹配3.最后取双向匹配的平均值作为 ...转载 2018-01-16 11:10:01 · 6118 阅读 · 3 评论