**数据和特征决定了机器学习的上限,而模型和算法只是无线逼近这个上限。**正是因为数据处理的重要性,在NLP算法的工作中,大部分的时间是与数据打交道,文本预处理更是重中之重!

文本预处理

  • 方法:

    • 文本处理的基本方法

      • 分词

        • 作用: 为了更好的进行语言语义的理解(why)
        • 工具: jieba 安装: pip install jieb
          • jieba特性:

            • 多种分词模式

              • 精确模式(how)

                • jieba.cut(content, cut_all=False)—> 生成器
                • jieba.lcut(content, cut_all=False)—> 列表
              • 全模式
                • jieba.cut(content, cut_all=True)—> 生成器
                • jieba.lcut(content, cut_all=True)—> 列表
              • 搜索引擎模式
                • jieba.cut_for_search(content)> 生成器
                • jieba.lcut_for_search(content)—> 列表
            • 中文繁体分析
            • 用户自定义的模式
              • 自定义字典: 格式: 词语 词频[可省略] 词性[可省略]
              • 加载自定义字典: jieba.load_userdict(自定义字典文件)
      • 词性标注**[POS]**
        • 作用: 为了计算机更好的理解自然语言, 处理更高阶的NLP任务自动问答, 机器翻译等任务
      • 命名实体识别[NER] eg: 马云 创办了阿里巴巴
        • 实质是一个NLP任务类型
        • 命名实体: 人名, 地名, 机构名等专有名称
    • 文本张量表示方法

      • One-hot编码 0 1 001 010 100

        • 定义了词汇映射器[词—>数字]
        • one-hot编码的保存 joblib.dump()
        • 优点: 操作简单, 容易理解
        • 缺点:词和词之间的联系少,大语料集上, 占用的内容大
      • Word2vec(what)—(why)

        • 第一种模式: CBOW: 词袋模式—> 两边(输入)到中间(输出)

        • 第二种模式: skipgram—> 中间(输入)到两边(输出)

        • fasttext工具进行词向量的训练(how)

          • 安装:

            • 第一种方式的安装: pip install fasttext(简洁版)

            • 第二种方式安装: (建议使用这种方式)

              $ git clone https://github.com/facebookresearch/fastText.git
              $ cd fastText
              # 使用pip安装python中的fasttext工具包
              $ sudo pip install .
              
          • 训练词向量(how)

            • 步骤:

                1. 获取训练数据集 enwik9
                2. 训练词向量
                  1. 训练api: Fasttext.train_unsupervised(data)
                  2. 查看词向量: model.get_word_vector(词)
                3. 模型参数的设定
                  1. 模型的训练类型
                  2. epoch
                  3. lr
                  4. thread等等
                4. 模型检验
                  1. model.get_nearest_neighbors(词)
                5. 模型的保存和重加载
                  1. 模型的保存: model.save_model(模型的名字)
                  2. 模型的重加载: new_model = fasttext.load_model(模型的名字)
      • Word Embedding

        • 广义上说: word2vec
        • 狭义的word Embedding: 就是网络中的embedding层, 最后是输入所有词汇的向量表示组成的矩阵
    • 文本语料的数据分析—> 绘制图像

      • 标签数量的分析

        • 目的: 查看各个类别之前的数量关系, 确定样本是否均衡
      • 句子的长度进行分析—绘制柱状图

        • 目的: 指导对句子长度进行截断或是补齐
        • 散点图的绘制目的: 为了方便人工审核, 异常数据
      • 词频的统计和关键词词云

        • 不同词汇的统计

          # 不同词汇总数的统计  --> embedding上   one-hot
          set(chain(*map(lambda x: jieba.lcut(x), train_data["sentence"])))
          
        • 词云的绘制

          • 训练集上绘制正样本的词云
          • 训练集上绘制负样本的词云
          • 验证集上绘制正样本的词云
          • 验证集上绘制负样本的词云
    • 文本特征处理

      • n_gram特征

        • 定义: 在文本序列中, n个词或字相邻且共现即n_gram特征 n: 1 2 3 4 5

        • 作用 为了增加更多的语义信息, 是语句有更多元化的语义表示

        • 如何实现

          set(zip(*[input_list[i:] for i in range(ngram_range)]))
          
      • 文本长度的规范 处理成一定的长度

        • 原因: 网络需要等尺寸大小的语句序列.

        • 前期要进行的处理: 进行句子长度的分析(绘制图像), 然后确定要规范的句子长度

          • Eg: 语句 现象的阐述, 后面的结论
        • How 怎么做

          # 在此api函数中, 可以根据业务需求, 进行前面截断补齐或是后面截断补齐的选择
          sequence.pad_sequences(x_train, cutlen, padding='post', truncating='post')
          
    • 数据增强方法

      • 回译增强法

        • 第一种方式 pip install itranslate
        import itranslatetext = ["酒店设施非常不错", "这家酒店服务好,价格便宜"]
        ko_result = itranslate.itranslate(text, from_lang='zh-cn', to_lang='ko')
        print(text)
        print("翻译成韩文:", ko_result)
        cn_result = itranslate.itranslate(ko_result, from_lang='ko', to_lang='zh-cn')
        print('回译成中文:', cn_result)
        
      • 第二种方式: google接口 pip install google_trans_new

        • 如果发生错误: json解析错误 修改源码: google_trans_new.py文件中151行

          # 151行  修改源码
          # response = (decoded_line + ']')
          # 导致json解析错误
          # 修改成
          # response = decoded_line
          # 即可
          

自然语言处理(NLP)入门(3)——文本预处理相关推荐

  1. 【组队学习】【29期】9. 基于transformers的自然语言处理(NLP)入门

    9. 基于transformers的自然语言处理(NLP)入门 航路开辟者:多多.erenup.张帆.张贤.李泺秋.蔡杰.hlzhang 领航员:张红旭.袁一涵 航海士:多多.张红旭.袁一涵.童鸣 基 ...

  2. 【组队学习】【28期】基于transformers的自然语言处理(NLP)入门

    基于transformers的自然语言处理(NLP)入门 论坛版块: http://datawhale.club/c/team-learning/39-category/39 开源内容: https: ...

  3. 自然语言处理(NLP)入门

    本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库.NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库. 什么是NLP? 简单来说,自然 ...

  4. 文本预处理方法_生产中的自然语言处理27种快速文本预处理方法

    文本预处理方法 大纲(Outline) Estimates state that 70%–85% of the world's data is text (unstructured data) [1] ...

  5. 人工智能自然语言处理NLP入门教程

    导读:自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域. 语言是人类区别其他动物的本质特性.在所有生物中,只有人类才具有语言能力.人类的多种智能都与 ...

  6. 关于NLP中的文本预处理的完整教程

    实现文本预处理 在下面的python代码中,我们从Twitter情感分析数据集的原始文本数据中去除噪音.之后,我们将进行删除停顿词.干化和词法处理. 导入所有的依赖性. ! pip install c ...

  7. [深度学习] 自然语言处理 --- NLP入门指南

    NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向 自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能 ...

  8. NLP入门:文本特征的表示方式

    一.前言 NLP区别与CV的一个重要特征之一,在于模型的输入需要预先处理,从CV转行NLP的炼丹者一开始定会对模型的输入形式感到疑惑.不像CV中模型的输入就是图像的RGB值,本来就是数值型,且像素值可 ...

  9. 自然语言处理(NLP)之从文本中提取时间

    在我们的日常生活和工作中,从文本中提取时间是一项非常基础却重要的工作,因此,接下来将介绍如何从文本中有效地提取时间.   举个简单的例子,我们需要从下面的文本中提取时间: 6月28日,杭州市统计局权威 ...

  10. python进行文本预处理_用python做NLP:中文文本预处理

    数据挖掘入门与实战  公众号: datadw 一 得到原始文本内容 def FileRead(self,filePath): f = open(filePath) raw=f.read() retur ...

最新文章

  1. ARC107——C - Shuffle Permutation
  2. 如何在Pandas中使用Excel文件
  3. python创建sqlite3 unicode error_python/sqlite3:发生异常:sqlite3.operationalerror
  4. Pairwork2 总结
  5. 推荐的字符与字符串处理方式
  6. win10自带虚拟机安装CentOS7系统(转)
  7. 【每日算法Day 64】LeetCode 861. 翻转矩阵后的得分
  8. paip.python错误解决2
  9. iOS appicon 与 launchImage 尺寸一览
  10. 国内外有名的计算机视觉团队汇总
  11. 商业智能时代,大数据分析行业前景
  12. 使用TRA命令进行磁带备份的命令汇总(转)
  13. OculusClient登录错误“发生意外错误,请稍后重试(OVR40779122)”解决方法
  14. Python 可视化--Matplotlib 安装和pyplot
  15. 【MySQL】 DATE_FORMAT() 格式化时间
  16. 二叉树的叶子结点按从左到右的顺序连成一个单链表
  17. obj-c UISlider  使用
  18. 在linux中500g怎么分区,本人500G电脑装双系统,linux 100G,求linux如何分区,要有原因。...
  19. Android Studio 不能连接MuMu模拟器的解决方案
  20. 正则化--L1正则化(稀疏性正则化)

热门文章

  1. 信息系统审计(IT审计)的实施
  2. ❤️动态爱心代码合集❤️
  3. centos 修改服务器名,Centos修改服务器名称
  4. frame框架及其实例
  5. 如何通过盗取EMV卡的数据,让ATM机吐出5万美元
  6. 关于安卓安装apk闪退问题
  7. Java之基于注解的Excel导出
  8. 一个00后的中专生是怎么在深圳拿到15K(Java后端开发)
  9. COSMOS认证咨询,企业选择有机护肤品主要看哪四个方面
  10. K8S keepalive+haproxy 实现集群高可用