初阶NLP总结

NLP 自然语言处理实战 本文从分词、词频、词向量等基础领域开始讲解自然语言处理的原理,讲解 One-Hot、TF-IDF、PageRank 等算法及 LDA、LDiA、LSA 等语义分析的原理。介绍 Word2vec、GloVe 、Embedding 等常用词嵌入及 NLTK、Jieba 等分词工具的应用。 阅读详情

工程架构

  • 配置 congfig
    • 常量 constant
    • 计时器 timer
    • 数据可视化 visualize
    • 日志 log
  • 语料库 corpora
    • 训练数据 train_data
    • 词库 dictionary
  • 文本处理 processing
    • 清洗 clean
    • 文本切割 cutter
      • 分句 clause
      • 分词 word
      • 词性标注 flag
  • 模型 model
    • 专家系统 expert_system
    • 机器学习 machine_learning
      • 有监督模型 supervised
        • 逻辑回归 logistic_regression
        • 朴素贝叶斯 naive_bayes
      • 向量化 vectorization
        • TF-IDF tfidf
        • 词向量 word2vector
    • 深度学习 deep_learning
      • 卷积神经网络 cnn
      • 循环神经网络 rnn
  • 应用 application
    • 命名实体识别 ner
    • 文本分类 classification
    • 统计分析 statistic
配 置
语料
数据处理
模型
应用

项目流程

语料库构建

词库构建

  • 词库获取
    • 通用词库:jieba、nltk
    • 公司内部数据库:各种专用名词、字段名…
    • 网上整理:科技、农业、体育、政治…
    • 功能词库(停词、情感词、量词…)
    • 爬虫或网购:行政区划、电影名、公司名…
  • 新词
  • 词分类
    • 按领域:医药、汽车、电影、体育、政治、农业、建筑…
    • 按词性:名、动、形、副、介、连…
    • 按情感:欢、悲、褒、贬、爱、恨、恐惧…
    • 按清洗:停词、数量词、时间词、特殊符号
    • 使用算法:Word2Vector、分类模型(朴素贝叶斯)、LDA…

训练数据

  • 内部数据
    • 数据库、日志文件
    • 工作报告(PPT、WORD、EXCEL)
  • 外部数据
    • 购买
    • 爬虫获取
    • 网络资源
  • 数据增强
    • 统计语言模型生成
    • 短文本生成(基于统计)
  • 标注
    • 自带标注
    • 人工标注
    • 算法标注

数据处理

清洗

  • 特殊符号处理
def replace_punctuation(text):
    """替换标点(英→中)"""
    text = text.replace('(', '(').replace(')', ')')  # 圆括号
    text = text.replace('【', '(').replace('】', ')')  # 方括号(之后用于关键词高亮)
    text = replace_empty_bracket(text)  # 空括号
    text = re.sub('[;;]+', ';', text)  # 分号
    text = re.sub('[!!]+', '!', text)  # 叹号
    text = re.sub('[??]+', '?', text)  # 问号
    text = re.sub('[.]{3,}|,{3,}|。{3,}|,{3,}|…+', '…', text)  # 省略号
    text = text.replace("'", '"')  # 引号
    text = re.sub('(?<=[\u4e00-\u9fa5]),(?=[\u4e00-\u9fa5])', ',', text)  # 逗号
    text = re.sub('(?<=[\u4e00-\u9fa5])[.](?=[\u4e00-\u9fa5])', '。', text)  # 句号
    return text.strip().lower()  # 转小写

def replace_space(text):
    """清除连续空白"""
    text = re.sub('\s*\n\s*', '\n', text.strip())
    text = re.sub('[ \f\r\t ]+', ' ', text)
    text = re.sub('([\u4e00-\u9fa5]) ([^\u4e00-\u9fa5])', lambda x: x.group(1)+x.group(2), text)
    text = re.sub('([^\u4e00-\u9fa5]) ([\u4e00-\u9fa5])', lambda x: x.group(1)+x.group(2), text)
    return text
  • 过滤
    • 停词
    • 低频词(减少维度 以 提高程序效率)
  • 替换(或离散化)
    • 数量词:时间、长度、重量……
    • 实体统一:公司名、地名……
    • 近义词(如:番茄≈西红柿)
  • 筛选
    • 按词性
    • 按长度

文本切割

切句
切子句
切词组
分词
分词
分词
分词
篇章级
texts
句级
sentences
子句级
clauses
词组级
phrases
实体级
words

切句

sep10 = re.compile('[\n。…;;]+|(?<=[\u4e00-\u9fa5])[.]+(?=[\u4e00-\u9fa5])').split
sep15 = re.compile('[\n。…;;!!??]+|(?<=[a-z\u4e00-\u9fa5])[.]+(?=[a-z\u4e00-\u9fa5])', re.I).split
sep20 = re.compile('[!!??]+').split
sep30 = re.compile('[,,::]+').split
sep40 = re.compile('\W+').split  # 非中英文数字下划线
sep45 = re.compile('[^a-zA-Z\u4e00-\u9fa5]+').split  # 非中英文

分词

jiaba、nltk、ltp、foolnltk……

特征工程

模型

  • 机器学习
    • 朴素贝叶斯(超快)
    • 逻辑回归(快而准,常用)
  • 深度学习
    • CNN+Embedding
    • RNN+Word2Vector
    • 双向RNN+…
  • 其它
    • 基于规则,如:业务规则、统计学、经济学…
    • LDA
    • 知识图谱

极简常用示例代码

TF-IDF向量化+逻辑回归

from jieba import cut
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer

"""语料"""
texts = [
    '三个只有一个是新鲜的,其它两个都坏了,买得最差的一次水果',
    '京东,才发现你是个骗子,服务更是一样的烂',
    '火龙果很小,而且还有一个烂了,发霉了',
    '物流慢,收到时有两个底部已开始腐烂',
    '屏幕清晰度不高,而且运行速度巨慢',
    '贝质量很好,款式时尚,大小合适,做工精致,穿着舒服,服务很好',
    '质量很好的,款式也不错,看起来高档大气,卖家服务还好,不错',
    '裤子收到了,质量不错,价格便宜,穿着舒服,下次我还会来买的',
    '宝贝收到了,试了一下,穿上挺舒服的,是正品,综合给好评',
    '裤子挺好看,质量也不错,老公搭配衣服挺好看也很喜欢穿',
]
y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]

"""向量转换器"""
vectorizer = TfidfVectorizer(tokenizer=cut, stop_words=set('的在了是和也有为就都说等与才这,'))
X = vectorizer.fit_transform(texts)

"""分类模型"""
clf = LogisticRegression()
clf.fit(X, y)
print(clf.score(X, y))

应用

  • 文本分类(篇章级、句级、实体级)
  • 文本聚类(篇章级、实体级)
    • 新主题抽取及归类
  • 信息抽取
    • 关键词抽取、专名识别
      • 公司名、人名、医学名词……
    • 关系抽取
      • 投资关系、词组搭配关系
    • 文本摘要
  • 统计分析
    • 词频、词组频

经验总结

项目思维
评估项目难度:跑一个简单模型,看看差多少
模型选择:优先使用 简单模型和 有监督模型,然后逐步优化
常用方法如 频数统计、 逻辑回归等;基于统计,寻找语料特征,迭代语料
尽快了解业务,公司数据库本身就已经存在很多重要语料了
数据才是王道
词库要求精准;带标签的数据要求精准且足量
快速迭代词库和语料:必须 人工+业务,并利用 算法和 可视化辅助
数据清洗占据大量时间,Pycharm的正则表达式功能非常好用!
常用可视化技术
文本可视化: 关键词高亮
数据可视化:条形图(简单直接)
个人积累
除了积累算法,还要 积累数据(词库、正则表达式、带标签语料、结构化数据)
优先积累通用的体量小的数据:停词、情感词、地区+经纬度、文本清洗正则表达式…
NLP与业务高度挂钩,选择一个自己喜欢的业务,深入学下去
测试
功能测试、性能测试、数据校验(数据量、准确率、缺失率…)
数据量过大时
用 Spark
【自然语言处理】自然语言处理NLP概述及应用 自然语言处理(Natural Language Processing,简称NLP)是一门集计算机科学、人工智能以及语言学于一体的交叉学科,致力于让计算机能够理解、解析、生成和处理人类的自然语言。它是人工智能领域的一个关键分支,旨在缩小人与机器之间的交流障碍,使得机器能够更有效地识别并响应人类的自然语言指令或内容。 阅读详情

相关推荐

自然语言处理NLP概述

大家好,自然语言处理(NLP)是计算机科学领域与人工智能领域中的一个重要方向,其研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。本文将从自然语言处理的本质、原理和应用三个方面,对其进行概述。NLP是一种机器学习技术,使计算机能够解读、处理和理解人类语言,其本质就是人类和机器之间沟通的桥梁。人类使用自然语言交流,如中文、英文等,狗通过叫声和其他身体语言交流,机器使用数字信息进行交流。人类与机器之间存在交流障碍,因为人类不直接理解数字信息,而机器不直接理解自然语言。

csdn1561168266的博客 4130

NLP各种词库

https://github.com/xianhu/funNLP 最近需要从文本中抽取结构化信息,用到了很多github上的包,遂整理了一下,后续会不断更新。 很多包非常有趣,值得收藏,满足大家的收集癖! 如果觉得有用,请分享并star,谢谢! 涉及内容包括:中英文敏感词、语言检测、中外手机/电话归属地/运营商查询、名字推断性别、手机号抽取、身份证抽取、邮箱抽取、中日文人名库、中文缩写库、拆...

u014033218的专栏 1万+

NLP自然语言处理

NLP就是人与机器沟通的“桥梁”。

m0_68153457的博客 2283

NLP语料库学习

语料库有的是标记过的(annotated),意味着文本或文档已经标记出监督学习算法的正确响应(例如,用于构建检测垃圾邮件的过滤器),有的则是未标记(unannotated)的,可用于主题建模和文档聚类(例如,探索文本随时间推移潜在主题的变化)。语料库可分解为文档或单个文档。语料库包含的文档大小各不相同,从推文到书籍都有可能,但它们都包含文本(或者元数据)和一组相关的看法。文件可进一步分成段落和语篇(discourse)单元,每个语篇单元往往表达一个单一的思想。

qq_43588670的博客 1923

史上最全的中文NLP资源库.zip

财经词库 拆字词库 成语词库 地名词库 动物词库 法律词库 繁简体转换词库 公司名字词库 古诗词库 历史名人词库 汽车品牌、零件词库 诗词短句词库 食物词库 停用词 同义词库、反义词库、否定词库 医学词库 职业词库 中文分词词库整理 中文缩写库 中文谣言数据 中英日文名字库 IT词库 NLP_BOOK

VPI与Matlab协同仿真:相干光通信接收端DSP算法全解析

本文详细解析了如何利用VPI与Matlab协同仿真,构建完整的相干光通信接收端DSP算法处理闭环。重点介绍了从VPI导出数据后,在Matlab中实现时钟恢复、偏振解复用和载波相位估计等核心算法的步骤与原理,并阐述了如何通过误码率计算完成仿真验证,为相干光通信系统算法研究与验证提供了高效实用的方法。

ll5678的博客 611

发现新词 | NLP之无监督方式构建词库(四)

考虑多字的内部凝聚度;基于kenlm与trie树做了性能优化

liujiesxs的博客 1073

NMS非极大值抑制算法原理

NMS非极大值抑制算法

pywin 3506

发现新词 | NLP之无监督方式构建词库(一)

电商领域文本利用无监督方式发现未登录词

liujiesxs的博客 1588

浏览器主页被360篡改?教你彻底解决并预防再次发生

通过本文介绍的快捷方式修复、注册表清理、启动项管理三步法,可解决99%的浏览器主页篡改问题。权限最小化原则:非管理员账户日常使用,关键系统目录设置写保护定期安全审计:每月检查启动项/计划任务/浏览器扩展备份还原机制:创建系统还原点,重要操作前做好快照安全意识培养:不安装来源不明的软件,谨慎处理软件安装向导中的附加选项浏览器安全是系统防护的重要环节,建议结合EDR(终端检测与响应)方案构建立体防护体系。对于普通用户,保持系统更新、使用官方渠道下载软件、定期清理系统垃圾,即可有效预防绝大多数安全威胁。

nntxthml的博客 1万+

LTE信令流程实战:从Attach到Service Request的完整解析(附常见问题排查)

本文深入解析LTE信令流程中的Attach和Service Request关键环节,提供从基础原理到实战排查的完整指南。涵盖鉴权、承载建立等核心步骤,分析常见故障模式及优化方案,并附赠信令跟踪工具使用技巧,助力通信工程师提升网络运维效率。

alpha的博客 319

发现新词 | NLP之无监督方式构建词库(二)

考虑相邻两字的互信息熵,如果小于阈值,则表示不能成词,从中间切开,最后,对切分出来的片段进行统计,就可以发现新词!

liujiesxs的博客 917

Cadence17.2 > Allegro > 检查PCB Layout信号线组等长

Cadence17.2 > Allegro > 检查PCB Layout等长和配线

DL_62532的专栏 1万+

NLP 是什么?一文吃透自然语言处理(NLP)核心知识,看这篇就够了!

NLP 是什么?一文吃透自然语言处理(NLP)核心知识,看这篇就够了!

AI大模型的博客 1725

基于Simulink的超级电容快速响应特性建模与仿真

本文介绍了基于Simulink的超级电容快速响应特性建模与仿真方法。主要内容包括:超级电容的工作原理、一阶RC等效电路模型及其动态电压方程;通过Simulink搭建超级电容模型的两种方法(Simscape Electrical推荐方案和基础模块透明教学方案);仿真100A×100ms放电脉冲下的电压响应特性,并与锂电池进行动态对比;分析超级电容在混合储能系统中的功率分配优势。文章还提供了工程实践要点和扩展方向,如电压均衡、温度影响评估以及与DC-DC变换器集成等。通过建模实践,验证了超级电容在毫秒级响应、高

xiaoheshang_123的博客 99

MATLAB - 激光雷达 - 相机联合标定(Lidar-Camera Calibration)

激光雷达传感器和相机通常在自动驾驶应用中结合使用,因为激光雷达传感器收集三维空间信息,而相机则以二维图像捕捉空间的外观和纹理。您可以融合来自这些传感器的数据来改进物体检测和分类。激光雷达-相机标定可以估算出一个变换矩阵,给出两个传感器之间的相对旋转和平移。在进行激光雷达-相机数据融合时,您可以使用该矩阵。本图说明了激光雷达和相机标定 (LCC) 过程的工作流程,我们使用棋盘格作为标定对象。我们从激光雷达和相机数据中提取棋盘角和平面,然后在它们的坐标系之间建立几何关系,进行标定。

机器人控制与仿真应用 7372

AI、AGI、AIGC与AIGC、NLP、LLM,ChatGPT等概念

AIGC涉及到的领域和技术很广泛,其中很重要的一项技术就是NLP(自然语言处理),之所以把这3个概念放在一起描述,这两年来,AIGC取得了令人瞩目的增长,有很大因素就在于自然语言处理(NLP),而推动NLP发展到的就是LLM(大型语言模型),也就是我们接下来学习的重点,该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。到此为止,大概2个月的时间。

Mr.Wang开发日常 313

Windows远程桌面开发之九-虚拟显示器(Windows 10 Indirect Display 虚拟显示器驱动开发)

by fanxiushu 2019-06-24 转载或引用请注明原始作者。 这里与远程桌面关系不是太大,但这个部分是xdisp_virt远程控制程序的实现多显示器桌面扩展的子功能,因此也归为远程桌面开发一类。 这篇文章与之前发布的...

fanxiushu的专栏 2万+

NLP经典书籍

永续成长的宝藏图∶NLP入门 (世茂) 神奇的人际关系 (世茂) 瞬间亲和力 (世茂) 改变你的未来 (世茂) 青蛙变王子 (世茂) 改变现状的行家手册 (世茂) N.L.P.无限成就计划 (世茂) 改变未来. 续集 (世茂) 解答-如何强化情爱?性爱及人际关系 (世茂) E.H—如何用N.L.P纾解你的情绪 (世茂) 抛开内在恐惧: (中国生产力中心) 相信 你

Tan 7885

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(1)

BERT(来自 Transformers 的双向编码器表示)是 Google 开发的革命性自然语言处理 (NLP) 模型。它改变了语言理解任务的格局,使机器能够理解语言的上下文和细微差别。在本文[1]中,我们将带您踏上从 BERT 基础知识到高级概念的旅程,并配有解释、示例和代码片段。在不断发展的自然语言处理 (NLP) 领域,一项名为 BERT 的突破性创新已经成为游戏规则的改变者。BERT 代表 Transformers 的双向编码器表示,它不仅仅是机器学习术语海洋中的另一个缩写词。

python1234_的博客 1646

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

[NLP] 自然语言处理 --- NLP入门指南

NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向 自然语言处理(NLP)的一个最伟大的方面是跨越多个领域的计算研究,从人工智能到计算语言学的多个计算研究领域都在研究计算机与人类语言之间的相互作用。它主要关注计算机如何准确并快速地处理大量的自然语言语料库。什么是自然语言语料库?它是用现实世界语言表达的语言学习,是从文本和语言...

摩登都市天空---专栏 15万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

自然语言处理(NLP)简介

简单地说,自然语言处理就是用计算机来处理、理解以及运用人类语言(如中文、英文等),它属于人工智能的一个分支,是计算机科学与语言学的交叉学科,又常被称为计算语言学。由于自然语言是人类区别于其他动物的根本标志。没有语言,人类的思维也就无从谈起,所以自然语言处理体现了人工智能的最高任务与境界,也就是说,只有当计算机具备了处理自然语言的能力时,机器才算实现了真正的智能。

不凡不弃的博客 3万+

一文了解什么是NLP(自然语言处理)

自然语言处理(NLP)是一种专业分析人类语言的人工智能。接收自然语言,这种语言是通过人类的自然使用演变而来的,我们每天都用它来交流转译自然语言,通常是通过基于概率的算法分析自然语言并输出结果简而言之,这就是一个创建算法的过程。苹果公司的人工智能语音助手 Siri 的工作过程就是自然语言处理在实践中应用的一个鲜活案例。NLP 正在成为我们生活中不可或缺的一部分,其与机器学习、深度学习一起达成的高度远远优于几年前取得的成就。在本文中我们将深入了解NLP是如何应用、如何工作的。

墨鸦的博客 1万+

自然语言处理(NLP)入门

本文简要介绍Python自然语言处理(NLP),使用Python的NLTK库。NLTK是Python的自然语言处理工具包,在NLP领域中,最常使用的一个Python库。什么是NLP?简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务。这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。这并不

SinGaln的博客 12万+

什么是 NLP (自然语言处理)

NLP(自然语言处理)到底是做什么?NLP 的全称是 Natural Language Processing,翻译成中文称作:自然语言处理。它是计算机和人工智能的一个重要领域。顾名思义,该...

YeJuliaLi的博客 5万+

NLP(自然语言处理)

目前存在的问题有两个方面:一方面,迄今为止的语法都限于分析一个孤立的句子,上下文关系和谈话环境对本句的约束和影响还缺乏系统的研究,因此分析歧义、词语省略、代词所指、同一句话在不同场合或由不同的人说出来所具有的不同含义等问题,尚无明确规律可循,需要加强语用学的研究才能逐步解决。对大规模文档进行索引。自动问答是指利用计算机自动回答用户所提出的问题以满足用户知识需求的任务,在回答用户问题时,首先要正确理解用户所提出的问题,抽取其中关键的信息,在已有的语料库或者知识库中进行检索、匹配,将获取的答案反馈给用户。...

shshwhvs的博客 2万+
上一篇: Python新词探索ngram特征统计
下一篇: Python网络编程:手写生成html表格
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值