![](https://img-blog.csdnimg.cn/20190223014333839.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
自然语言处理
自然语言处理(NLP)技术知识介绍
简单随风
这个作者很懒,什么都没留下…
展开
-
证券知识检索系统的实现(全栈)
大概实现思路如下:通过Tushare等第三方渠道或Scrapy爬取所需要的股票信息,存在数据库中。通过kafka-canal监控mysql的log,实时更新neo4j内的数据。使用Django rest Framework生成微服务,提供api。使用Vue搭建简单的前端,调取api以获得信息。下面来看下具体的实现细节:1.数据初次采集通过Tushare等第三方渠道获取信息(部分...原创 2019-03-23 17:38:50 · 783 阅读 · 4 评论 -
命名实体消歧的代码实现
将句中识别的实体与知识库中实体进行匹配,解决实体歧义问题。 可利用上下文本相似度进行识别。本文准备了两个测试数据集,entity_list.csv是50个实体,valid_data.csv是需要消歧的语句。结果提交在submit目录中,命名为entity_disambiguation_submit.csv。格式为:第一列是需要消歧的语句序号,第二列为多个“实体起始位坐标-实体结束位坐标:实体...原创 2019-03-19 18:00:00 · 6478 阅读 · 5 评论 -
实体统一的代码实现
本文章主要是拿公司名的实体统一进行举例,例如:“河北银行股份有限公司” ,统一为“河北银行”下面为代码讲解部分1.建立main_extract,当输入公司名,返回会被统一的简称def main_extract(company_name,d_4_delete,stop_word,d_city_province): """ company_name 输入的公司名 sto...原创 2019-03-19 18:15:52 · 2729 阅读 · 0 评论 -
情感分析系统(v2.0)
项目介绍本文是对情感分析系统的二次优化。优化了数据清洗部分代码做了简单的数据可视化更简便的超参数选择方法对一些函数在时间复杂度上的优化下面来看一下具体的实现过程1.File Reading: 文本读取从结构化的数据集中,提取测试数据与训练数据import redef read_train_file(file_path): comments = [] # 用来存储...原创 2019-03-05 02:58:50 · 5001 阅读 · 2 评论 -
词性标注器的代码实现
1.遍历语料库,整理好words和tagstag2id, id2tag = {}, {} # maps tag to id . tag2id: {"VB": 0, "NNP":1,..} , id2tag: {0: "VB", 1: "NNP"....}word2id, id2word = {}, {} # maps word to idfor line原创 2019-03-04 18:30:47 · 1714 阅读 · 0 评论 -
通过丢硬币的案例理解HMM所解决的问题
我们可以coin tossing(扔硬币)的例子来讲解HMM相关的下列问题:计算likelihood找出最优tag计算/学习模型参数假设我们有2枚硬币,这两枚硬币与普通硬币不一样,他们扔出上面或反面的概率,并不是0.5。有可能是P(正)=0.7, P(负)=0.3,也有可能P(正)=0.4, P(负)=0.6,不过暂时我们都是不知道的。这个概率B我们可称之为Emission Proba...原创 2019-03-04 00:27:39 · 638 阅读 · 0 评论 -
从HMM到CRF
HMM:假如我们有一个翻译系统:y = (y1, y2, … yt) 表示用户说的单词x = (x1, x2, … xt) 表示语音的信号那么我们要求的P(x, y) = P(y1) * P(y2|y1) * P(y3|y2) * … * P(yt|yt-1) * P(x1|y1) * P(x2|y2) * … * P(xt|yt)即可是在实际的使用场景中,通常每个tag都不仅受当...原创 2019-03-03 22:40:27 · 690 阅读 · 0 评论 -
标注偏置问题(Label Bias Problem)和HMM、MEMM、CRF模型比较
本文转载自https://blog.csdn.net/zhoubl668/article/details/7787690路径1-1-1-1的概率:0.40.450.5=0.09路径2-2-2-2的概率:0.018路径1-2-1-2:0.06路径1-1-2-2:0.066由此可得最优路径为1-1-1-1而实际上,在上图中,状态1偏向于转移到状态2,而状态2总倾向于停留在状态2,这就是...转载 2019-03-03 22:27:28 · 724 阅读 · 0 评论 -
Skip-Gram模型目标函数详细推导
我们拿这句话进行举例:I like playing football.那我们需要做的就是,当拿到某个单词时,推导出它的前一个单词和后一个单词。like -> I, playing P(I|like),P(playing|like)playing -> like, football P(like|playing),P(football|playing)foo...原创 2019-03-02 17:29:57 · 6897 阅读 · 2 评论 -
单词/句子的词向量表达
首先我们还是先举例,比如我们有一个词库V:V = (apple, going, I, home, machine, learning)最简单的词袋模型的方式:apple: (1,0,0,0,0,0)going: (0,1,0,0,0,0)I going home: (0,1,1,1,0,0)稍微高级一点的,通过tf-idf的方式进行表达,可能是这样:每一项会附上权重I going ...原创 2019-03-01 18:40:49 · 2046 阅读 · 0 评论 -
指代消解简介(Co-reference Resolution)
定义指代消解指在文本中确定代词指向哪个名词短语的问题简单介绍我们还是先举个例子:今天晚上10点有国足的比赛,他们的对手是泰国队。在过去几年跟泰国队的较量中他们处于领先,只有一场惨败1-5。指代消解要做的就是分辨文本中的“他们”指的到底是“国足”还是“泰国队”。通常我们为了解决类似的问题,需要准备好一些训练数据,用监督学习模型去处理。类似于在上面的例子中,我们将第一个“他们”和第二个“...原创 2019-03-01 15:29:56 · 6188 阅读 · 1 评论 -
实体消歧简介
定义:实体消歧的本质在于一个单词很可能有多个意思,也就是在不同的上下文中所表达的含义可能不太一样。简单实现首先我们需要准备一个类似于下面的这种实体库:id实体名实体描述1001苹果美国一家高科技公司,经典的产品有Iphone手机1002苹果水果的一种,一般产自于…………然后当我们拿到Text时,比如“今天苹果发布了新的手机”我们可以将实...原创 2019-03-01 14:47:42 · 8866 阅读 · 0 评论 -
关系抽取常用方法
关系抽取通常会基于以下几种方式去做:基于规则监督学习半监督 & 无监督学习BootstrapDistant Supervision无监督学习下面分别举例去说明方法的实现方式。1.基于规则的方法,表示 “is - a”目的:找出尽可能多的拥有"is - a"关系的实体对(实体1,is - a,实体2)比如我们有一些文章:" … apple is a fr...原创 2019-03-01 08:32:39 · 19452 阅读 · 0 评论 -
词性标注器的实现逻辑
1.背景介绍首先,在noisy-channel model中,我们通过贝叶斯定义可以得到以下规律:在词性标注里:s 表示文本t:tag 表示词性那么有: P(t|s) ∝ P(s|t) * P(t)2.训练数据准备OK,背景有了,然后我们可以准备一些训练数据:我/代词 今天/时间 上课/动词明天/时间 天气/名词 很/副词 好/形容词。。。。。...原创 2019-02-27 18:06:22 · 462 阅读 · 0 评论 -
凸集合与凸函数 以及案例实现
1.凸集合(Convex Set)定义:假设对于任意x,y ∈ C and 任意参数 α ∈ [0,1],我们有αx + (1-α)y ∈ C ,集合C为凸集合。例子:所有的R^n所有的正数集合范数 ||x|| <= 1affine set:线性方程的所有解 Ax = bhalfspace: 不等式的所有解 a^T x <= b定理:两个凸集的交集也是凸集(int...原创 2019-02-25 18:58:43 · 4759 阅读 · 0 评论 -
Good-Turning Smoothing介绍及推理
在介绍Good-Turning Smoothing之前,我们可以先看一个有趣的例子:假设你在钓鱼,已经抓到了18只鱼:10条鲤鱼,3条黑鱼,2条刀鱼,1条鲨鱼,1条草鱼,1条鳗鱼…Q1:下一个钓到的鱼是鲨鱼的概率是多少?Q2:下一条鱼是新鱼种(之前没有出现过)的概率是多少?Q3:既然如此,重新想一下,下一条抓到鱼为鲨鱼的概率是多少?我们在看到Q1时,可以很简单的算出Q1结果为 1/18...原创 2019-02-23 16:13:13 · 4357 阅读 · 4 评论 -
N-Gram模型介绍
1.N-Gram的原理N-Gram是基于一个假设:第n个词出现与前n-1个词相关,而与其他任何词不相关。(这也是隐马尔可夫当中的假设。)整个句子出现的概率就等于各个词出现的概率乘积。各个词的概率可以通过语料中统计计算得到。假设句子T是有词序列w1,w2,w3…wn组成,用公式表示N-Gram语言模型如下:P(T)=P(w1)*p(w2)*p(w3)***p(wn)=p(w1)*p(w2|w1)...原创 2019-02-23 01:37:27 · 4215 阅读 · 0 评论 -
练手|常见26种NLP任务的练手项目
经常有人问我:老大让我完成xxx,我不会,他也不会,但是很着急。这个任务怎么实现啊?这个任务需要什么技术啊?这种情况我遇到有100+次了,而且很多时候问得问题跟具体需要的技术简直是驴唇不对马嘴。所以今天整理了常见的30种NLP任务非常适合练手的Project,我觉得有俩作用:研究+练手,加深理解,做到更专业;收藏起来,以备不时之需,不敢保证涵盖工业界所有NLP业务场景,但是涵盖95+%以上是完全没...转载 2019-02-10 12:02:27 · 7063 阅读 · 5 评论 -
python实现cyk算法
class my_CYK(object): def __init__(self, non_ternimal, terminal, rules_prob, start_prob): self.non_terminal = non_ternimal self.terminal = terminal self.rules_prob = rules_...原创 2019-02-10 11:16:01 · 3969 阅读 · 3 评论 -
搭建一个简单的问答系统(v2.0)
之前刚接触机器学习的时候,写过一篇《基于sklearn库,搭建一个简单的问答系统》。此篇文章是在上篇的逻辑上,对一些函数进行了优化,并对检索方式进行了一些优化,再各个环节上时间复杂度都提高了很多。下面讲解一下具体的代码:第一部分: 读取文件,并把内容分别写到两个list里(一个list对应问题集,另一个list对应答案集)import jsondef read_corpus(): ...原创 2019-01-30 10:43:33 · 6375 阅读 · 17 评论 -
nlp中文本处理的一些常用方法
从sentence(str)中找到会重复出现的多位的keyword的起始位置与结束位置的索引def get_key_idxs(sentence, keyword): k_len = len(keyword) res = [] for i in range(len(sentence) - k_len + 1): if sentence[i:i+k_len] == k...原创 2019-01-29 12:36:00 · 1716 阅读 · 0 评论 -
计算文本间距的实现
我们可以使用动态规划的方式来计算文本间距,通过建立DP数组将对比文本的问题分成多个子问题:文本间的间距通常包含以下三种情况:insert: abc -> abdcremove: abc -> abupdate: abc -> adc我们只需要计算不同情况下最短间距就可以了,具体实现方式如下:def text_distance(str1, ...原创 2018-12-25 11:31:05 · 694 阅读 · 0 评论 -
文本预处理常用技术介绍
自然语言处理简介自然语言处理,顾名思义,就是使用计算机对语言文字进行处理的相关技术以及应用。Natural language processing (NLP) is a field of computer science, artificial intelligence and computational linguistics concerned with the interactions...原创 2018-12-24 23:18:58 · 16719 阅读 · 1 评论 -
分词工具的实现
通常,我们在做分词的时候,需要用到jieba(中文分词),或直接以空格进行分词(英文分词)等,下面会介绍一下一个简单的中文分词工具的实现方式。首先是准备词库我们可以利用清华大学开源词库或其他人分享的词库等创建分词词库,本篇是拿一个本地文件举例创建的词库。import pandas as pddf = pd.read_excel('data/dic.xlsx',header=0)# ...原创 2018-12-24 14:09:13 · 1997 阅读 · 0 评论 -
基于知识图谱+机器学习,搭建风控模型的项目落地
本项目主要实现逻辑如下:1.将测试数据分表格存入mysql数据库。2.设计知识图谱关系图,按照设计思路将node与对应的relationship存入neo4j数据库。3.设计一套有效的特征,提取特征用于机器学习模型进行训练,用以风控判断。4.将提取特征的cypher语句存入mysql,使用SpringBoot搭建微服务,用以读取api获取每个进件的特征矩阵。5.使用逻辑回归、GBDT,神...原创 2018-11-26 00:42:58 · 8104 阅读 · 13 评论 -
搭建一个小型的证券知识图谱
本项目主要实现逻辑如下:数据获取数据处理导入neo4j本项目需要用到两种数据源:一种是公司董事的信息,另一种是股票的行业以及概念信息。董事信息通过scrapy进行爬取,具体包含各个上市公司董事会成员姓名、职位、性别、年龄。股票的行业及概念信息通过Tushare信息进行获取。1.董事信息获取我们通过访问’http://pycs.greedyai.com/’ 来获取上市公司的董事信息...原创 2018-10-29 16:14:27 · 5943 阅读 · 14 评论 -
情感分析系统(预测用户评论积极或消极的概率)
1.数据预处理本部分将要完成数据的预处理过程,包括数据的读取,数据清洗,分词,以及把文本转换成tf-idf向量。在接下来的任务中,正面的情感我们标记为1, 负面的情感我们标记成0。import reimport jiebaimport numpy as npdef process_line(line): new_line = re.sub('([a-zA-Z0-9])',...原创 2018-10-25 17:49:39 · 7423 阅读 · 1 评论 -
基于sklearn库,搭建一个简单的问答系统
第一部分: 在这部分里,首先需要去读取给定的文件,并把文件里的内容读取到list里面。这部分的任务主要需要文件IO操作方面的基本知识。# 读取文件def read_corpus(file): with open(file) as f: list = [] lines = f.readlines() for i in lines: ...原创 2018-09-30 14:58:21 · 2335 阅读 · 1 评论