数据集与语料
- 语料是NLP的生命之源,所有NLP问题都是从语料中学到数据分布的规律
- 语料的分类:单语料,平行语料,复杂结构
- 语料的例子:Penn Treebank, Daily Dialog, WMT-1x翻译数据集,中文闲聊数据集,中国古诗数据集
- 语料来源:公开数据集,爬虫,社交工具埋点,数据库,上述数据集如何获取?这里 (吐槽一下,B站的这个视频讲得很一般,浪费好几个小时时间,收获甚微,作为科普快速拉一下可以)
句子理解
用计算机处理一个句子,主要包含以下几个方面:分词
、词性识别
、命名实体识别
、依存句法分析
分词
分词与NLP的关系
-
分词是中文语言特有的需求,是中文NLP的基础,没有中文分词,我们对于语言很难量化,进而很难运用数学的知识去解决问题。而对于拉丁语系是不需要分词的,因为它们有空格天然的隔开
-
中分分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。分词操作的输入是句子,输出是词序列,如
-
关于分词,可参阅B站上一个视频动手学中文分词,(这个视频还不错,理论部分讲得不是很细,但代码部分很细,通过debug帮助理解算法)该系列课程讲解了三种分词算法及其实现、中文分词工具
Jieba分词
的用法,最后实现了一个简单的在线分词工具,内嵌了自研的三种算法以及调用Jieba分词工具,原视频给的百度链接无效,我跟做的Flask
项目online_fenci
资源:链接:百度网盘 提取码:ci07 。由于缺少原视频中css, js等样式文件,所有页面画风有点。。。丑,只能将就看。
词性识别
词性识别的输入是一个句子,输出是识别出的词性,例如,对于特朗普昨天在推特上攻击拜登
这句话,在对其进行分词后,紧接着做词性识别,得出与词序列一一对应的词性序列,如:特朗普-名词人名(nh), 昨天-名词时间(nt),在-介词(p)
命名实体识别
依存句法分析
预处理
- tokenize:把词向量化,例如,把一个词“apple”向量化成一个长度512的向量,以便用计算机能够处理的方式进行计算处理
- 命名实体识别:把词中的实体找出来
一些预处理工具:
预处理的工具包括: - NLTK:官网地址,基本的英文操作都支持
- SnowNLP:https://github.com/isnowfy/snowlp,中文NLP处理工具,可以进行一些基本操作,如情感分析(积极or消极),简繁转换,分词,标注,计算指标等
- Pyrouge:测评文本摘要好坏
- LTP: https://ltp.ai/, https://github.com/HIT-SCIR.ltp, 哈工大做的开源工具
- Gensim: 实现Tf-ldf, LSA, LDA, Word2vec等技能
- TF-IDF,统计词频,词的文档频率,制作词云
词向量模型——word2vec
词向量的通俗理解,如果用CBOW
和Skip-gram
模型训练词向量,参阅这里
两种构建词向量的模式:CBOW
模型与Skip-gram
模型
Skip-gram模型
Skip-gram
模型构建训练数据的方法如图,对于Thou shalt not make a machine in the likeness of a human mind
这句话,用一个长度为5(一般为奇数)的滑窗在句中扫过,将input_word
前2个词与后2个词作为output_word
(或者叫target_word
),构建出的数据集如下所示。