前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >读书笔记 | 《Python自然语言处理实战:核心技术与算法》| (1)

读书笔记 | 《Python自然语言处理实战:核心技术与算法》| (1)

作者头像
yiyun
发布2022-04-01 16:03:08
4900
发布2022-04-01 16:03:08
举报
文章被收录于专栏:yiyun 的专栏

NLP基础

自然语言处理 (Natural Language Processing,NLP)

NLP基本分类

  • 音系学:指代语言中__发音__的系统化组织。
  • 词态学:研究__单词构成__以及相互之间的关系。
  • 句法学:给定文本的哪部分是__语法__正确的。
  • 语义学:给定文本的__含义__是什么?
  • 语用学:文本的__目的__是什么?

语言理解涉及语言、语境和各种语言形式的学科。 而自然语言生成(Natural Language Generation,NLG)恰恰相反,从结构化数据中以读取的方式自动生成文本。 该过程主要包含三个阶段:文本规划(完成结构化数据中的基础内容规划)、语句规划(从结构化数据中组合语句来表达信息流)、实现(产生语法通顺的语句来表达文本)。

NLP 研究任务

  • 机器翻译:计算机具备将一种语言翻译成另一种语言的能力。
  • 情感分析:计算机能够判断用户评论是否积极。
  • 智能问答:计算机能够正确回答输入的问题。
  • 文摘生成:计算机能够准确归纳、总结并产生文本摘要。
  • 文本分类:计算机能够采集各种文章,进行主题分析,从而进行自动分类。
  • 舆论分析:计算机能够判断目前舆论的导向。
  • 知识图谱:知识点相互连接而成的语义网络。

NLP 基本术语

1. 分词(segment)

2. 词性标注(part-of-speech tagging)

对词的词性标注,词性:动词、名词、形容词等,例如:我/r爱/v北京/ns天安门/ns。其中,ns代表名词,v代表动词,ns、v 都是标注,以此类推。

3. 命名实体识别(NER,Named Entity Recognition)

命名实体指从文本中识别出具有特定类别的实体(通常名词),例如人名、地名、机构名、专有名词等。

4. 句法分析(syntax parsing)

5. 指代消解(anaphora resolution)

6. 情感识别(emotion recognition)

7. 纠错(correction)

8. 问答系统(QA system)

中文分词技术

规则分词

缺点:词典难维护

机器分词,通过维护词典,在切分语句时,与词典中的词逐一匹配,找到则切分,否则不切分。

按匹配切分方式分:

  1. 正向最大匹配法(Maximum Match Method, MM法)
  2. 逆向最大匹配法(Reverse Maximum Match Method,RMM法)
  3. 双向最大匹配法(Bi-directction Matching method)

逆向最大匹配法

代码语言:javascript
复制
class IMM(object):
    
    def __init__(self, dic_path):
        self.dictionary = set()
        self.maximum = 0
        # 读取词典
        with open(dic_path, 'r', encoding='utf8') as f:
            for line in f:
                line =  line.strip()
                if not line:
                    continue
                self.dictionary.add(line)
                if len(line) > self.maximum:
                    self.maximum = len(line)

    def cut(self, text):
        result = []
        index = len(text)
        while index > 0:
            word = None
            for size in range(self.maximum, 0, -1):
                if index - size < 0:
                    continue
                piece = text[(index - size):index]
                if piece in self.dictionary:
                    word = piece
                    result.append(word)
                    index -= size
                    break
            if word is None:
                index -= 1
        # 数组逆序: 取从后向前的元素
        return result[::-1]

print('完成')
代码语言:javascript
复制
text = "南京市长江大桥"
tokenizer = IMM('data/imm_dic.txt')

print(tokenizer.dictionary)

print(tokenizer.cut(text))

# {'长途跋涉', '百度', '长江', '我', '是', '啊', '南京市', '大桥', '他', '长江大桥', '你', '南京', '她'}
# ['南京市', '长江大桥']

统计分词

其主要思想是把每个词看做是由词的最小单位的各个字组成的,如果相连的字在不 同的文本中出现的次数越多,就证明这相连的字很可能就是一个词。因此我们就可以利 用字与字相邻出现的频率来反应成词的可靠度,统计语料中相邻共现的各个字的组合的 频度,当组合频度高于某一个临界值时,我们便可认为此字组可能会构成一个词语。

​ 基于统计的分词,一般要做如下两步操作:

  1. 建立统计语言模型。
  2. 对句子进行单词划分,然后对划分结果进行概率计算,获得概率最大的分词方式。这里就用到了统计学算法,如隐含马尔可夫(HMM)、条件随机场(CRF)等。

语言模型

HMM 模型

​ 隐含马尔可夫模型(HMM)是将分词作为字在字串中的序列标注任务来实现的。其基本思路是:每个字在构造一个特定的词语时都占据着一个确定的构词位置(即词位),现规定每个字最多只有四个构词位置:即B(词首)、M(词中)、E(词尾)和S(单独成词),那么下面句子 1)的分词结果就可以直接表示成如 2)所示的逐字标注形式:

对比机械分词法,这些统计分词方法不需耗费人力维护词典,能较好地处理歧义和未登录词,是目前分词中非常主流的方法。 但其分词的效果很依赖训练语料的质量,且计算量相较于机械分词要大得多。

混合分词

先基于词典分词,再用统计分词方法辅助。

这样,能在保证词典分词准确率的基础上,对未登录词和歧义词有较好识别。

中文分词工具-Jieba

https://github.com/fxsjy/jieba

Jieba分词结合了基于规则和基于统计这两类方法。对于未登录词,Jieba使用了基于汉字成词的HMM模型,采用了Viterbi算法进行推导。

参考

感谢帮助!

  • 《Python自然语言处理实战 核心技术与算法》涂铭、刘祥、刘树春 著

本文作者: yiyun

本文链接: https://moeci.com/posts/分类-读书笔记/NLP-Core-Technology-and-Algorithm-with-Python-1/

版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • NLP基础
    • NLP基本分类
      • NLP 研究任务
        • NLP 基本术语
          • 1. 分词(segment)
          • 2. 词性标注(part-of-speech tagging)
          • 3. 命名实体识别(NER,Named Entity Recognition)
          • 4. 句法分析(syntax parsing)
          • 5. 指代消解(anaphora resolution)
          • 6. 情感识别(emotion recognition)
          • 7. 纠错(correction)
          • 8. 问答系统(QA system)
      • 中文分词技术
        • 规则分词
          • 统计分词
            • 语言模型
            • HMM 模型
          • 混合分词
            • 中文分词工具-Jieba
            • 参考
            相关产品与服务
            NLP 服务
            NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档