NLP 中的基础总结

Wesley13
• 阅读 372

1. 词

中文中,常规的词一般直接由分词工具切割开,如工具包结巴分词,组成短语,一些情况下也可以用单个字表示。英文中的词比较常见的是单个词,也有些情况会使用英文词组

1.1 词的预处理

一般情况下,对于英文文本,首先需要转换时态,三单这种词语的变换,首部大写字母转换小写,有时还需要对单词进行拼写检查。

1.2 停用词

对于中英文文本都存在停用词现象。停用词指非常常见的词但却没有实在意义的那一堆词,通常通过构建停用词表进行滤除。英文中比较典型的就是“is”,中文中为“的”这样的词。是否滤除停用词视情况而定,对于文本分类,相似度检验问题建议滤除,否则会发现所有文本相似度好像都很高的样子。

1.3 词向量

词向量是一种比较常用的对词进行编码的一种手段。比较常见的就one-hot 编码,word2vec,glove的方法,最近还出了一种fasttext的方法,也可以尝试用一用。One-hot的方法很容易把维度增大,因为字典有多少个他就有多少维,而后面的方法实际上是可以控制词向量维度的,一般控制在300维以内。词向量的基本可理解为这个词包含了多少语义信息,需要自己训练的话语料库尽量越大越好,如果自己的语料库本身就很小还是直接拿预训练的词向量进行训练吧,一般是有Wiki的预训练数据的。

1.4 主题特征

文本中的一些词可能表示为一个一样事物,这个时候使用主题特征把这些词归纳一下,构成新的特征,可能听的比较多的就是TF-IDF方法,直接根据词频,另外常见的还有LDA方法,需要自己定义有几个主题,而HDP方法则可以自己确定有多少主题。

1.5 词性特征

词性特征也称作POS。词性就是指的我们常说的名词动词形容词。通过常见的py包是可以直接提取出来的。

1.6 命名实体

命名实体也叫NER。一般如Stanfordnlp是直接包含了命名实体识别的检测,但仅限于如货币(美元,英镑),时间(分,秒)这样的常见类型。而很多情况下则需要根据自己的场景来提取命名实体,比如对文本中的生物标注是动物还是植物。需要特殊领域的只有自己训练了。

2.句法分析与语义分析

句法分析主要方法还是依靠调包。实现方法主要是规则+概率。一般句法分析出来以后一个单词会有两个属性,一个是指向他的单词的与他自己的位移,一个是他与这个单词的关系。每个词都有唯一的指向他的词

NLP 中的基础总结

如图,来自https://www.ltp-cloud.com/demo/ 示例。这两种都可以算作特征。 同理,根据语义的依存关系,语义的关系会更多一些,还是根据场景选择。如图为语义分析示例

NLP 中的基础总结

这两张图都出现了一个root,这个root是额外补充的。可以声明句子中心(一般为动词)

  1. nlp 中可以使用的一些常用套路

3.1 夹角

夹角一般使用余弦值计算,距离计算的方法还有很多,就不一一列举了。一般用来测量文本之间的相似度,短文本,长文本均适用,但具体需要怎样处理特征,就需要自己考虑了

3.2 n-gram方法

N-gram 方法就是指当前词的上下位的词,可以看作一个大小为n的窗口在文本上滑动,比如当n等于2,上图中的句子依次读出来就是 他叫 叫汤姆 汤姆去 去拿 拿外衣。以此类推,n为3时就是窗口为3,一般n取到4就不取了。同样,根据上文所说的,词性,句法,也可以根据ngram的方法对特征进行扩充

3.3 cnn方法

Cnn方法就是常说的卷积神经网络。对于文本来说,只有1维,在keras里适用Conv1。这里的输入一般为一段文本,文本中每一个词对应一组一维向量。对于特征明显的文本有奇效

3.4LSTM方法

LSTM方法是一种记忆性神经网络,为rnn进化型,衍生还有gru也比较常看到lstm训练较慢,gru会快一点。输入方法与cnn一样。一般使用前后向的LSTM叠加会舒服一些。

以上为个人总结,若有不当欢迎指出。Emm。。。如果想到别的了再补充。。。

点赞
收藏
评论区
推荐文章
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
1年前
MySQL查询按照指定规则排序
1.按照指定(单个)字段排序selectfromtable_nameorderiddesc;2.按照指定(多个)字段排序selectfromtable_nameorderiddesc,statusdesc;3.按照指定字段和规则排序selec
SPDK QOS机制解析
本文关键词:intelspdkbdevqos序:intelspdk软件在存储领域应用广泛。因其可以高效管理linux系统的nvmessd盘,又支持vhostuser协议可以对接qemu虚拟机,在云计算领域通常被用来做本地盘云主机的存储管理软件。如此优秀的一款软件,有必要仔细分析其内部的实现机制,本篇文章主要介绍spdkqos机制。spdk
天翼云高可用虚拟IP(HAVIP)实践
(一)产品概述天翼云高可用虚拟IP(HighAvailabilityVirtualIPAddress,简称HAVIP)是一种可用独立创建和删除的私有网络IP地址资源。通过在VIPCIDR中申请一个私有网络IP地址,然后与高可用软件(如高可用软件Keepalived)配合使用,可用在VPC中搭建高可用的主备集群服务,提高VPC中服务的可用性。限制和说明
一个关于SDWAN单臂部署方案验证的实验
假设有这样一张网络,其中RTA和PCA表示某公司的A分支,通过中国电信CT路由器接入互联网ISP;RTB和PCB表示某公司的B分支,通过中国联通CU路由器接入互联网ISP。DNS(8.8.8.8)表示某互联网应用。为实现A分支私网192.168.2.0/24和B分支私网192.168.3.0/24的互通,现计划使用某厂商的SDWAN方案进打通两个内网,像下图
高性能API网关Kong介绍
本文关键词:高性能、API网关、Kong、微服务1.Introduction是随着微服务(Microservice)概念兴起的一种架构模式。原本一个庞大的单体应用(Allinone)业务系统被拆分成许多微服务(Microservice)系统进行独立的维护和部署,服务拆分带来的变化是API的规模成倍增长,API的管理难度也在日益增加,使用API网关发布和管
SPDK对接Ceph性能优化
关键词:SPDK、NVMeOF、Ceph、CPU负载均衡SPDK是intel公司主导开发的一套存储高性能开发套件,提供了一组工具和库,用于编写高性能、可扩展和用户态存储应用。它通过使用一些关键技术实现了高性能:1.将所有必需的驱动程序移到用户空间,以避免系统调用并且支持零拷贝访问2.IO的完成通过轮询硬件而不是依赖中断,以降低时延3.使用消息传递,以避免IO
3A网络 3A网络
5个月前
理解 virt、res、shr 之间的关系(linux 系统篇)
理解virt、res、shr之间的关系(linux系统篇)前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过t
3A网络 3A网络
5个月前
开发一个不需要重写成 Hive QL 的大数据 SQL 引擎
开发一个不需要重写成HiveQL的大数据SQL引擎学习大数据技术的核心原理,掌握一些高效的思考和思维方式,构建自己的技术知识体系。明白了原理,有时甚至不需要学习,顺着原理就可以推导出各种实现细节。各种知识表象看杂乱无章,若只是学习
初识DevOps
基本概念和延伸的思考DevOps,是Development(开发)和Operations(运维)组成的复合词,一般译为“开发运维一体化”。看到这个概念,首先会产生几个问题:开发是什么,哪些环节是开发?运维是什么,哪些环节是运维?开发人员写好代码在本地调试,环境出问题了自己来调整,这是开发工作还是运维工作?系统故障后,运维人员发现是配置文件内容出错了就改成了正