新手入坑NLP指南
由于最近一段时间需要进行一个NLP的项目,作为一个新手,可谓是一脸茫然,各种懵逼,借此博客纪录一下学习的路径,以及一些常用的包,一些基本的常识,一来是自己总结一下,二来可以给后面入坑NLP的同学一些稍微的借鉴。由于我也是新手文中不免有一些错误,欢迎大家批评指正。(本文针对nlp零基础新手,高手可以绕道了~)
本文持续更新中……….
一般NLP处理流程
首先需要对数据进行预处理,一般预处理包括统计所有训练数据里单词数目,单词频率,定义词典外的单词表示。
然后是建立 单词->id, id->单词 , id->word_vector 的三个映射(map),(具体的word_vector的获取方式后面会讲)
将所有的原始数据里的单词序列,处理成id序列,在进行深度学习的时候,还需要将所有的训练样本最好padding到相同的长度,或者将过长的序列截断,保证所有的序列长度相同,便于深度学习框架batch处理。一些专业的框架好像也可以处理一个batch中每个sequence长度不同的情况。
训练的时候一个序列的id,会经过一个embedding层,变成一个向量的序列,然后在用这个embedding后的向量序列进行后续的计算。
根据计算得到的结果计算和标签计算loss,进而计算梯度,然后梯度反向传播更新模型参数。
Word embedding
常用的中文word embedding方法是 word2vec
常用的英文的word embedding是glove
训练word2vec可以用gensim包
- 加粗
Ctrl + B
- 斜体
Ctrl + I
- 引用
Ctrl + Q
- 插入链接
Ctrl + L
- 插入代码
Ctrl + K
- 插入图片
Ctrl + G
- 提升标题
Ctrl + H
- 有序列表
Ctrl + O
- 无序列表
Ctrl + U
- 横线
Ctrl + R
- 撤销
Ctrl + Z
- 重做
Ctrl + Y
Markdown及扩展
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]
使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Markdown Extra , 扩展了很多好用的功能。具体请参考Github.
表格
Markdown Extra 表格语法:
项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
可以使用冒号来定义对齐方式:
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
定义列表
-
Markdown Extra 定义列表语法: 项目1 项目2
- 定义 A
- 定义 B 项目3
- 定义 C
-
定义 D
定义D内容
代码块
代码块语法遵循标准markdown代码,例如:
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
脚注
生成一个脚注1.
目录
用 [TOC]
来生成目录:
数学公式
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.
- 行内公式,数学公式为: Γ(n)=(n