NLP 分享:

2020-03-17  本文已影响0人  领导的玩具

Section 1:

本节主要内容:

本节期望:

NLP是啥?

zh-wiki: 自然語言處理(英语:Natural Language Processing,缩写作 NLP)是人工智慧和語言學領域的分支學科

中文分词技术原理解析:

1.基于字符串匹配的分词方法:

基于字符串匹配的分词方法又称机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功

2.基于理解的分词方法:

通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在<font color=#FF0000 size = 6>试验阶段</font>。

3.基于统计的分词方法

基于统计的分词方法是在给定大量已经分词的文本的前提下,利用统计机器学习模型学习词语切分的规律(称为训练),从而实现对未知文本的切分。例如最大概率分词方法和最大熵分词方法等。随着大规模语料库的建立,统计机器学习方法的研究和发展,基于统计的中文分词方法渐渐成为了主流方法

主要的统计模型有:N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),条件随机场模型(Conditional Random Fields,CRF)等。

1.马尔科夫模型

随机过程中各个状态S_t的概率分布,只与它的前一个状态S_{t-1}有关,即P_(S_t|S_1,S_2,S_3,\cdots,S_{t-1}) = P(S_t|S_{t-1})

公式:

马尔科夫过程:

p_(q_t = s_j|q_{t-1}=s_i,q_{t-2}=s_k,\cdots)\approx p_({q_t=s_j|q_{t-1}=s_i})

马尔科夫模型:

_({q_t=s_j|q_{t-1}=s_i}) = a_{ij} \quad,\quad 1\leq i,j\leq N

a_{ij} \geq 0
\sum_{i=0}^N a_{ij} =1
)

重要性质:

在这里插入图片描述

2.隐马尔科夫模型(Hidden Markov Model,HMM)

它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。

Viterbi算法:

算法原理:

avatar

算法结果:

根据状态序列得到分词结果
算法过程:
========================

n元模型算法 (n-gram)

句子的概率等于每个词的概率的乘积,即每个词之间都是相互独立的

P(w_i | w_{i-(n-1)},\cdots,w_{i-1})= p(wi|w_{i-(n-1)},\cdots,w_{i-1},w_i) = \frac{count(w_{i-(n-1)},\cdots,w_{i-1},w_i)}{count(w_{i-(n-1)},\cdots,w_{i-1})}

3.jieba分词:

github: https://github.com/fxsjy/jieba

算法

机器学习与神经网络模型基础:

机器学习基本概念:

必要元素:

机器学习分类:

区别:数据集是否有人工分类标签

神经网络模型基础概念:

激活函数: 跃阶函数 与 Sigmoid函数

在这里插入图片描述

神经网络发展史

神经网络发展史

神经网络类型

https://36kr.com/p/5115489.html

27种神经网络


在这里插入图片描述

关键字提取:

常用算法:

为啥要取对数和相乘?答先辈在实验室得出来的结论,不接受反驳!!!!!

实验代码:KeywordExtract.py

词表示:

// One-hot Representation 向量的维度是词表的大小,比如有10w个词,该向量的维度就是10w
v('足球') = [0 1 0 0 0 0 0 ......]
v('篮球') = [0 0 0 0 0 1 0 ......]

// Distributed Representation 向量的维度是某个具体的值如50
v('足球') = [0.26 0.49 -0.54 -0.08 0.16 0.76 0.33 ......]
v('篮球') = [0.31 0.54 -0.48 -0.01 0.28 0.94 0.38 ......] 

word2vec基本介绍:

Word2Vec就是把单词转换成向量。它本质上是一种单词聚类的方法,是实现单词语义推测、句子情感分析等目的一种手段。

算法核心


在这里插入图片描述

word2vec = CBOW + Skip-Gram

CBOW (Continue bags of word)

CBOW(Continuous Bag-of-Words Model)是一种根据上下文的词语预测当前词语的出现概率的模型,其图示如上图左。CBOW是已知上下文,估算当前词语的语言模型;

skip-Gram

而Skip-gram只是逆转了CBOW的因果关系而已,即已知当前词语,预测上下文,其图示如上图右;

在这里插入图片描述
实验过程:
code:w2v.py
    //通过一系列复杂的运算以后结果为:
res1:[('小孩', 0.8762074112892151), ('子女', 0.838797926902771),
     ('女儿', 0.8185409903526306), ('弟妹', 0.7953422665596008), 
     ('兄弟姐妹', 0.7813134789466858), ('第二胎', 0.7718782424926758), 
     ('妻子', 0.7622642517089844), ('女兒', 0.7622190713882446), 
     ('私生女', 0.7616469264030457), ('女孩', 0.7608779668807983)]
    
res2:[('女人', 0.5232132077217102), ('王后', 0.4952596426010132), 
    ('太后', 0.4879013001918793), ('妃子', 0.47403064370155334), 
    ('王妃', 0.46553662419319153), ('皇太后', 0.45517897605895996), 
    ('侍女', 0.45335230231285095), ('太子妃', 0.45140954852104187), 
    ('王太后', 0.4455147683620453), ('太皇太后', 0.44461196660995483)]
    
res3:   西瓜
res4:   香蕉

参考链接:

邮箱:ljm500@163.com

上一篇 下一篇

猜你喜欢

热点阅读