自然语言处理学习日记5

1. Deep Learning与中文分词
解析:字向量。

2. MatchZoo介绍
解析:MatchZoo是一个Python环境下基于TensorFlow开发的开源文本匹配工具,可以更加直观地了解深度文本匹配模型的设计、更加便利地比较不同模型的性能差异、更加快捷地开发新型的深度匹配模型。MatchZoo提供了基准数据集[TREC MQ系列数据、WiKiQA数据等]进行开发与测试,整合了当前最流行的深度文本匹配的方法[包括DRMM,MatchPyramid,DUET,MVLSTM,aNMM,ARC-I,ARC-II,DSSM,CDSSM等算法的统一实现],旨在为信息检索、数据挖掘、自然语言处理、机器学习等领域内的研究与开发人员提供便利,可以应用到的任务场景包括文本检索,自动问答,复述问题,对话系统等等。

3. MatchZoo结构
解析:MatchZoo使用Keras中的神经网络层,并有数据预处理,模型构建,训练与评测三大模块组成,如下所示:
[1]数据预处理模块[matchzoo/inputs/]:该模块包含通用的文本预处理功能,如分词、词频过滤、词干还原等,并将不同类型文本匹配任务的数据处理成统一的格式,具体包含如下的几个文件:

  • corpus_preprocessed.txt:问题及回答内容文件,每行以[id,length,word_id]格式书写,分别表示问题或者回答的id,文本长度,以及词id。
  • relation_train.txt,relation_valid.txt,relation_test.txt:训练,验证,测试文件,每行以[rel,query_id,doc_id]格式书写,分别表示问题与回答的相关度[数据中1为相关,0为不相关],问题的id,以及答案的id。
  • embed_glove_d50:词向量文件,每行以[id,embeddings]格式书写,分别表示词向量的id,以及每个embedding分量,该文件根据模型需要可选择性的提供。

同时该模块针对不同的任务需求提供了不同的数据生成器,包括有基于单文档的数据生成器、基于文档对的数据生成器、以及基于文档列表的数据生成器。不同的数据生成器可适用于不同的文本匹配任务,如文本问答、文本对话、以及文本排序等。
[2]模型构建模块[machzoo/models/,matchzoo/layers/]:该模块基于Keras以帮助快速开发。Keras中包含了深度学习模型中广泛使用的普通层,如卷积层、池化层、全连接层等,除此之外,在matchzoo/layers/中,还针对文本匹配定制了特定的层,比如动态池化层、张量匹配层等。这些基本的层操作使得能够快速高效地实现复杂的深度文本匹配的模型,在matchzoo/models/中,实现了目前主流的深度文本匹配模型[如DRMM,MatchPyramid,DUET,MVLSTM,aNMM,ARC-I,ARC-II,DSSM,CDSSM等]。
[3]训练与评测模块[matchzoo/losses,matchzoo/metrics/]:该模块提供了针对回归、分类、排序等问题的目标函数和评价指标函数。例如,在文本排序中常用的基于单文档的目标、基于文档对的目标、以及基于文档序列的目标。用户可以根据任务的需要选择合适的目标函数。在模型评估时,MatchZoo也提供了多个广为使用的评价指标函数,比如MAP、NDCG、Precision,Recall等。同时,在文本排序任务中,MatchZoo还能生成兼容TREC的数据格式,可以方便地使用trec_eval来进行模型评估。

4. MatchZoo动态池化层
解析:动态池化层主要是针对文本变长的特性设计的,在文本相关的任务中,文本的长度差异非常的大,例如一篇新闻的长度变化可以从几十个字到几万个字;在神经网络模型的逐层抽象过程中需要将不同的输入映射到相同的特征空间中,然而在图像中常用的裁剪或是填补方案在文本处理时,会导致严重的信息损失或是引入过多的噪音,因此实现的动态池化层能避免裁剪或是填补方案带来的问题,针对不同文本的长度的需要进行动态池化。

5. MatchZoo张量匹配层
解析:张量匹配层主要是能够建模两个词向量之间更加复杂的模式匹配,当前大部分的文本相关任务都依赖于词向量,不同词之间的交互就转变成其词向量的交互,使用张量匹配层,能更加充分的捕捉词向量中不同维度的各种交互。

6. 深度文本匹配模型
解析:
[1]基于单语义文档表达的深度学习模型主要思路是,首先将单个文本先表达成一个稠密向量(分布式表达),然后直接计算两个向量间的相似度作为文本间的匹配度。

[2]基于多语义的文档表达的深度学习模型认为单一粒度的向量来表示一段文本不够精细,需要多语义的建立表达,也就是分别提取词、短语、句子等不同级别的表达向量,再计算不同粒度向量间的相似度作为文本间的匹配度。

[3]直接建模匹配模式的深度学习模型则认为匹配问题需要更精细的建模匹配的模式,也就是需要更早地让两段文本进行交互,然后挖掘文本交互后的模式特征,综合得到文本间的匹配度。

 

7.jieba支持三种分词模式

解析:

[1]精确模式:试图将句子最精确地切开,适合文本分析。

[2]全模式:把句子中所有的可以成词的词语都扫描出来,速度非常快,但是不能解决歧义。

[3]搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 

 

8.jieba分词数据集

解析:

[1]1998年RMRB的切分语料。

[2]MSR的切分语料。

[3]作者收集的TXT小说,用ICTCLAS切分[可能有一定误差]。

 

9.Python与Trie树

解析:

[1]pip install pygtrie

[2]pip install datrie

[3]pip install PyTrie

说明:Trie树又称字典树、前缀树、单词查找树、键树,是一种多叉树形结构,是一种哈希树的变种。

 

10.ansj_parsing依存文法和句法分析

解析:https://github.com/NLPchina/ansj_parsing

 

11.中文分词数据结构

解析:Trie树,双数组Trie树,AC自动机,AC自动机结合DoubleArrayTrie。

 

12.jieba分词算法

解析:

[1]基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图[DAG]。

[2]采用了动态规划查找最大概率路径,找出基于词频的最大切分组合。

[3]对于未登录词,采用了基于汉字成词能力的HMM模型,使用了Viterbi算法。

 

13.构建前缀词典

解析:假设离线统计词典形式如下:

...
北京大学 2053 nt
大学 20025 n
去 123402 v
玩 4207 v
北京 34488 ns
北 17860 ns
京 6583 ns
大 144099 a
学 17482 n
...

将“去北京大学玩”作为待分词的文本,构建前缀词典如下:

...
北京大学 2053
北京大 0
大学 20025
去 123402
玩 4207
北京 34488
北 17860
京 6583
大 144099
学 17482
...

 

14.构建有向无环图

解析:基于前缀词典构建有向无环图为:

0: [0]
1: [1,2,4]
2: [2]
3: [3,4]
4: [4]
5: [5]

其中,对于0: [0]表示位置0对应的词,就是0-0,即“去”;对于1: [1, 2, 4],表示从位置1开始,在1,2,4位置都是词,就是1-1,1-2,1-4,即“北”,“北京”,“北京大学”这三个词。其它以此类推。

 

15.计算最大概率路径

解析:在计算最大概率路径时,jieba分词采用从后往前这种方式进行计算。原因是有向无环图的方向是从前向后指向,对于一个节点,只知道这个节点会指向后面哪些节点,但是很难直接知道有哪些前面的节点会指向这个节点。jieba中计算最大概率路径的函数是calc(self, sentence, DAG, route),如下所示:

def calc(self, sentence, DAG, route):
    N = len(sentence)
    route[N] = (0, 0)
    logtotal = log(self.total)
    for idx in xrange(N - 1, -1, -1):
        route[idx] = max((log(self.FREQ.get(sentence[idx:x + 1]) or 1) -
        logtotal + route[x + 1][0], x) for x in DAG[idx])

其中,logtotal是所有词频之和的对数值[dict.txt]。self.FREQ是根据dict.txt生成的字典树。比如对于词"不拘一格",在字典树中是这样的{"不":0, "不拘":0, "不拘一":0, "不拘一格":freq},freq是在dict.txt中记录的词频。

 

16.依存句法分析性能评价指标

解析:

[1]无标记依存正确率[unlabeled attachment score,UAS]:测试集中找到其正确支配词的词[包括没有标注支配词的根结点]所占总词数的百分比。
[2]带标记依存正确率[labeled attachment score,LAS]:测试集中找到其正确支配词的词,并且依存关系类型也标注正确的词[包括没有标注支配词的根结点]占总词数的百分比。
[3]依存正确率[dependency accuracy,DA]:测试集中找到正确支配词非根结点词占所有非根结点词总数的百分比。
[4]根正确率[root accuracy,RA]:有两种定义方式,一种是测试集中正确根结点的个数与句子个数的百分比;另一种是指测试集中找到正确根结点的句子数所占句子总数的百分比。对单根结点的语言或句子来说,二者是等价的。
[5]完全匹配率[complete match,CM]:测试集中无标记依存结构完全正确的句子占句子总数的百分比。

 

17.句法分析

解析:句法分析是自然语言处理技术中的关键技术之一,其基本任务是确定句子的句法结构或句子中词汇之间的依存关系。句法分析分为句法结构分析和依存关系分析。句法结构分析又称成分结构分析或短语结构分析,其又分为二种。以获取整个句子的句法结构为目的分析称为完全句法分析或完全短语结构分析。以获得局部成分[比如基本名词短语]为目的的分析称为局部分析或浅层分析。依存关系分析又称为依存句法分析或依存结构分析。

 

18.依存句法分析

解析:依存语法[Dependency Parsing,DP]通过分析语言单位内成分之间的依存关系揭示其句法结构。直观来讲,依存句法分析识别句子中的“主谓宾”、“定状补”这些语法成分,并分析各成分之间的关系。

 

19.关键词抽取

解析:

[1]基于统计特征的关键词抽取[TF*IDF]
[2]基于词图模型的关键词抽取[TextRank]
[3]基于主题模型的关键词抽取[Topic Model]

 

20.NLP任务

解析:根据判断主题的级别,将所有的NLP任务分为两种类型:
[1]token-level task:token级别的任务。比如完形填空[Cloze],预测句子中某个位置的单词,或者实体识别,或是词性标注,SQuAD等。
[2]sequence-level task:序列级别的任务,也可以理解为句子级别的任务,比如情感分类等各种句子分类问题,推断两个句子的是否是同义等。

 

21.ChineseGLUE

解析:GLUE是一个用于评估通用NLP模型的基准,其排行榜可以在一定程度上反映NLP模型性能的高低。Language Understanding Evaluation benchmark for Chinese: datasets, baselines, pre-trained models,corpus and leaderboard。

 

22.T5模型

解析:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer.

 

23.ERNIE模型

解析:百度最新提出NLP预训练语言模型ERNIE[知识增强语义表示模型,Enhanced Representation through kNowledge IntEgration],并声称全面超越BERT。

 

24.albert_zh

解析:An Implementation of A Lite Bert For Self-Supervised Learning Language Representations with TensorFlow.

 

25.OpenNRE

解析:OpenNRE[https://github.com/thunlp/OpenNRE.git]是清华大学自然语言处理实验室推出的一款开源的神经网络关系抽取工具包,包括了多款常用的关系抽取模型,发布仅一年即在Github上获得了1700+星标。

 

参考文献:
[1] 神语人工智能:http://www.deepnlp.org/index/

[2] 神经网络结构在命名实体识别(NER)中的应用:http://www.cnblogs.com/robert-dlut/p/6847401.html 

[3] MatchZoo:https://github.com/faneshion/MatchZoo 

[4]aneesha/RAKE[A python implementation of the Rapid Automatic Keyword Extraction]:https://github.com/aneesha/RAKE

[5]深度学习在文本领域的应用:https://tech.meituan.com/2018/06/21/deep-learning-doc.html

[6]AimeeLee77/keyword_extraction:https://github.com/AimeeLee77/keyword_extraction

[7]chineseGLUE/chineseGLUE:https://github.com/chineseGLUE/chineseGLUE

[8]PaddlePaddle/ERNIE:https://github.com/PaddlePaddle/ERNIE

[9]brightmart/albert_zh:https://github.com/brightmart/albert_zh

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NLP工程化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值