目录

简介

异同

相同点

不同点

代码

词形还原

词干提取

Gensim_词形还原

说明


简介

词形还原(Lemmatization):把一个任何形式的语言词汇还原为基本形式(能表达完整语义);

词干提取(Stemming):抽取词的词干或词根形式(不一定能够表达完整语义);

二者都是词形规范化的方式,都能够达到有效归并词形的目的,二者既有联系也有区别。

异同

相同点

  • 处理目标一致——将词的屈折形态或派生形态简化或归并为词干(stem)或原形的基础形式,都是一种对词的不同形态的统一归并的过程。
  • 主流实现方法类似——均是利用语言中存在的规则或词典映射提取词干或获得词的原形。
  • 结果部分交叉——词干提取和词形还原不是互斥关系,其结果有部分交叉。部分词利用这两类方法都能达到相同的词形转换效果。如“dogs”的词干为“dog”,其原形(词形还原)也为“dog”。
  • 应用领域相似——主要应用于信息检索和文本、自然语言处理等方面,二者均是这些应用的基本步骤。

不同点

  • 原理:词干提取主要是采用“缩减”的方法,将词转换为词干,如将“cats”处理为“cat”,将“effective”处理为“effect”。而词形还原主要采用“转变”的方法,将词转变为其原形,如将“drove”处理为“drive”,将“driving”处理为“drive”。
  • 实现方法:虽然词干提取和词形还原实现的主流方法类似,但二者在具体实现上各有侧重。词干提取的实现方法主要利用规则变化进行词缀的去除和缩减,从而达到词的简化效果。词形还原则相对较复杂,有复杂的形态变化,单纯依据规则无法很好地完成。词形还原更依赖于词典,进行词形变化和原形的映射,生成词典中的有效词。
  • 复杂性:词干提取方法相对简单,词形还原则需要返回词的原形,需要对词形进行分析,不仅要进行词缀的转化,还要进行词性识别,区分相同词形但原形不同的词的差别。词性标注的准确率也直接影响词形还原的准确率,即词形还原更为复杂
  • 结果:词干提取和词形还原也有部分区别。词干提取的结果可能并不是完整的、具有意义的词,而只是词的一部分,如“revival”词干提取的结果为“reviv”,“ailiner”词干提取的结果为“airlin”。而词形还原处理后获得的结果是具有意义的、完整的词,一般为词典中的有效词
  • 应用领域:同样各有侧重。虽然二者均被应用于信息检索和文本处理中,但侧重不同。词干提取更多被应用于信息检索领域,如Solr、Lucene等,用于扩展检索,粒度较粗。词形还原更主要被应用于文本挖掘、自然语言处理,用于更细粒度、更为准确的文本分析和表达。即词形还原更具有研究和应用价值。

代码

词形还原

from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
#print(wnl.lemmatize('countries','apples'))ff=open("xxx.txt",'a',encoding='UTF-8')
list=[];
with open("xxx.txt",'r',encoding='utf-8')as f:for line in f:LineList=[];for word in line.split():a=wnl.lemmatize(word)LineList.append(a);list.append(LineList);
for line in list:print(line,file=ff);

词干提取

from nltk.corpus import wordnet as wn
import jieba
import sys
from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
#print(wnl.lemmatize('countries','apples'))ff=open("xxx.txt",'a')
list=[];
with open("xxx.txt",'r',encoding='utf-8')as f:for line in f:LineList=[];for word in line.split():a=wnl.lemmatize(word)LineList.append(a);list.append(LineList);
for line in list:print(line,file=ff);

Gensim_词形还原

# -*- coding: utf8 -*-
import spacy
nlp = spacy.load('en', disable=['parser', 'ner'])texts=[["x"],["xx"]]
def lemmatization(texts, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV']):"""https://spacy.io/api/annotation"""texts_out = []for sent in texts:doc = nlp(" ".join(sent))texts_out.append([token.lemma_ for token in doc if token.pos_ in allowed_postags])return texts_out# Do lemmatization keeping only noun, adj, vb, adv
data_lemmatized = lemmatization(texts, allowed_postags=['NOUN', 'ADJ', 'VERB', 'ADV'])
data=str(data_lemmatized)
f=open('xxx.txt','w',encoding='utf-8')
f.writelines(data)
f.close()

说明

  • 参考:https://blog.csdn.net/kaierlong/article/details/50205171,有删改。
  • 代码仅供参考(俺可没说一定对(●'◡'●))。

【NLP】英文数据预处理___词干/词元处理相关推荐

  1. 情感分析实战(英文)-数据预处理篇

    情感分析实战(英文)-数据预处理与情感分类模块 背景:该专栏的目的是将自己做了N个情感分析的毕业设计的一个总结版,不仅自己可以在这次总结中,把自己过往的一些经验进行归纳,梳理,巩固自己的知识从而进一步 ...

  2. 小白自总结【数据预处理】英文数据预处理

    任务介绍 (2--6) 任务心得 1)平时学习Python的过程中缺少实践,使得实际修改代码时花费较长时间: 2)对字符编码不清楚,如在"gbk"."utf-8" ...

  3. 『跟着雨哥学AI』系列之八:趣味案例——有关NLP任务数据预处理的那些事儿...

    点击左上方蓝字关注我们 课程简介: "跟着雨哥学AI"是百度飞桨开源框架近期针对高层API推出的系列课.本课程由多位资深飞桨工程师精心打造,不仅提供了从数据处理.到模型组网.模型训 ...

  4. gan 总结 数据增强_[NLP]聊一聊,预处理和数据增强技术

    在基于margin-loss的句子相似度这个项目中,为了验证想法,找不到开放数据集,因此自己从新浪爱问爬取了数据.自己爬的数据和学界开放的数据对比,数据显得非常脏.这里有三个含义:第一:数据不规范,比 ...

  5. 中文 lda数据预处理_英文文本挖掘预处理流程总结

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 整理:AI算法之心 作者:刘建平Pinard   博客地址:https://www.c ...

  6. [nlp] 小傻学数据预处理

    [nlp] 小傻学数据预处理 1. 分词 1.1 分词方法 1.1.1 基于规格(词典.词库) 1.1.2 基于知识理解 1.1.3 基于(词频)统计 1.2 分词工具 1.3 jieba分词原理 1 ...

  7. NLP数据预处理与词嵌入

    NLP数据预处理与词嵌入 NLP数据预处理 读入语料库 首先准备一个语料库,实际上就是一个 txt 文件,这里用的是小说 time machine ,该语料库比较短小,仅有 ~3000 行,~3000 ...

  8. nlp小白教程:word2vec之数据预处理

    1. 数据预处理 首先说的就是分词,对英语来说每个词与词之间是通过空格辨别的,例如I love natural language processing,每个词之间都是有空格的,所以很容划分为[i, l ...

  9. NLP数据预处理的一般方法

    文章目录 一.前言 二.实现方法 一.前言 数据预处理一般包括如下几个步骤 读取数据[txt.csv] 拆分输入.输出数据 缺失数据处理[删除.插值] 字符串类型的数据处理[稀疏矩阵.embeddin ...

最新文章

  1. PCL点云特征描述与提取(4)
  2. C#中实现视频播放器窗体程序(附源码下载)
  3. 统一过程(UP)定义了初启阶段、精化阶段、构建阶段、移交阶段和产生阶段,每个阶段以达到某个里程碑时结束,其中()的里程碑是生命周期架构。 A.初启阶段 B.精化阶段 C.构建阶段 D.移交阶段
  4. 优朋普乐大数据_优朋普乐黑维炜:互动电视市场已进入成熟发展期
  5. vb.net form 最大化按钮 代码_【React】利用antd的form自定义表单控件
  6. Colaboratory挂载google drive的两种网盘
  7. 微软Visual Studio 2012软件功能介绍
  8. jvm是运行在操作系统之上的,他和硬件没有直接的交互
  9. windows下eclipse调试hadoop详解
  10. 2019年最佳作家奖
  11. TIOBE 1 月编程语言排行榜:C 语言再度「C 位」出道!
  12. Redis教程(一):Redis简介
  13. 修复jqgrid setgridparam postdata 的多次查询条件累加
  14. python中列表去重有哪几种方法_python列表里的字典元素去重
  15. Linux链表list_head/hlist_head/hlist_nulls_head的并发性
  16. 网络安全实验室 脚本关 10
  17. 金仓数据库 KingbaseES 插件参考手册 sys_qualstats
  18. 新手怎样才能快速的学会建网站
  19. ma5671怎么设置_华为MA5671怎样设置POE供电
  20. 微信服务器在哪里修改密码,微信怎么修改密码?微信在哪里修改密码?

热门文章

  1. SPSS-多重响应分析
  2. 从音箱到智能平台的进化,语音交互能开启一个新时代吗?
  3. [原创]AC97插针 转 3环3.5mm 接线教程
  4. Pbuilder编译PHP文件,2016 年 1 月 23 日
  5. 教你设置索尼a7r mark ii的自定义按键
  6. IT世界里的“国境线”(硬件与软件篇)
  7. 花菁染料CY3/CY5.5/CY7标记玉米淀粉/岩藻依聚糖/角叉藻胶,CY3/CY5.5/CY7-Corn starch/Fucoidan/Furcellaran
  8. java=new()的用法
  9. 云安全解决方案安全保障体系框架
  10. 2006-2020年280个地级市人力资本水平的测算(含具体过程和结果)