1、NLP简介
自然语言处理(Natural Language Processing, NLP)是计算机科学、人工智能、语言学的交叉学科,研究在人与人交互中以及与计算机交互中的语言问题。为了建设和完善语言模型,自然语言处理建立计算框架,提出相应的方法来不断的完善设计各种使用系统,并探讨这些使用系统的评测方法。
自然语言处理时人工智能的一个分支。
自然语言处理的研究方向
目前,NLP有很多研究方向,例如:文本分类(情感分析、意图识别),摘要生成(文本生成),多轮对话(智能客服)等。每一个研究方向都包含很多更基础的研究点,下面总结了从词汇、语句、篇章到系统应用的不同粒度上NLP应用场景:
- 词法短语: 分词、词性标注、命名实体识别、组块分析
- 句法语义:语言模型、依存句法分析、语义消歧、语义角色标注、深层语义分析
- 篇章理解:文本分类、聚类、文章摘要、文本生成、篇章关系识别、篇章衔接关系、指代消歧、语义表示、语义匹配、主题模型、情感分析、舆情监控
- 系统应用:信息抽取、知识图谱、信息检索、Query分析、自动问答、智能对话、机器翻译、语音识别、OCR、图像文字生成等
2、词法分析
词法分析包括分词、词性标注、命名实体识别等。分词是词法分析中最基本的任务。目前,汉字分词的准确率已达到95%左右。中文兼类词的词性歧义消解和未知词的词性识别是词性标注的热点和难点。
什么是分词?
分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂得多、困难得多。
分词的方法有哪些?
- 基于字符串匹配的方法
- 正向最大匹配法(FMM)
- 逆向最大匹配法(BMM)
- 双向最大匹配法(BM)
- 基于统计的方法
- N元文法模型(N-gram)
- 隐马尔科夫模型(HMM)
- 条件随机场(CRF)
- 基于理解的方法
- 基于语法和规则的分词方法
基于统计的分词方法
根据字符串在语料库中出现的统计频率来决定其是否构成此。主要统计模型:N元文法模型、隐马尔科夫模型、条件随机场等。
- N元文法模型:基于一种假设,文本中第
n个词的出现只与前面n-1个词相关,而与其他任何词都不相关,那么整句的概率就是各个词出现概率的乘积。
对于一个句子S,假设S是由词序列 w1 , w2, …wn 组成的,那么
P(S) = P(w1w2w3…wn)=P(w1)P(w2|w1)P(w3|w1w2)…P(wn|w1w2…wn-1)
其中P(w1)表示第一个词w1出现的概率,P(w2|w1)是已知第一个词的前提下,第二个词出现的概率。以此类推,词wn出现的概率取决于它前面全部的词。 - 马尔科夫假设:一个词的出现的概率只与它前面出现的有限的一个或者几个词有关,那么
P(S)
=P(w1w2w3…wn)
=P(w1)P(w2|w1)P(w3|w1w2)…P(wn|w1w2…wn-1)
≈P(w1)P(w2|w1)P(w3|w2)…P(wn|wn-1)
分词工具有哪些?
Jieba
常用轻量级的分词方法工具,可以实现分词、词性标注、关键词提取等功能。
项目地址: jieba
对 Python2/3均兼容
支持三种分词模式
- 精确模式,试图将句子最精确地切开,适合文本分析;
- 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
- 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
安装
- 全自动安装:
pip isntall jieba或者easy_install jieba - 半自动安装:先下载http://pypi.python.org/pypi/jieba/ ,解压后运行
python setup.py install - 手动安装:将
jieba目录放置于当前目录或site-packages目录 - 通过
import jieba来引用
主要功能
1、 分词
jieba.cut:三个输入参数:需要分词的字符串,cut_all是否采用全模式,HMM是否使用HMM模型jieba.cut_for_search方法接受两个参数:需要分词的字符串,是否使用HMM模型。该方法适用于搜索引擎构建倒排索引的分析,粒度比较细jieba.cut和jieba.cut_for_search返回的结果都是一个可迭代的generator,可以使用for循环来获得分词后得到的每一个词语(unicode)jieba.lcut和jieba.lcut_for_search直接返回list类型jieba.Tokenizer(dictionary=DEFAULT_DICT)新建自定义分词器,可用于同时使用不同词典。jieba.dt为默认分词器。所有全局分词相关函数都是该分词器的映射。import jieba seg_list = jieba.cut("我来到北京清华大学", cut_all=True) print("Full Mode: " + "/ ".join(seg_list)) # 全模式 seg_list = jieba.cut

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



