当前位置:   article > 正文

自然语言处理-文本预处理_自然语言处理文本预处理步骤

自然语言处理文本预处理步骤

类似其他的机器学习的数据预处理,自然语言处理也需要进行文本预处理,例如中文需要分词,英文需要词性还原等。

常见预处理方法

1、文本规范化

  • 大写转小写
output_str = input_str.lower()
  • 1
  • 数字处理
    去掉所有数字
import re
output_str = re.sub(r'\d','',input_str)
  • 1
  • 2
  • 标点符号处理
    python中的string类型中有一个方法是translate,其可以将字符串中特定字符换成制定的其他字符,其字符表可以是一个字典,字典的key必须是字符的unicode码,value值是字符;也可以使用maketrans方法来帮助构建这个字符表,maketrans方法可以接受三个参数:
    • 当只有一个参数时,该参数应该是一个字典,要求与translate中的字符表一样
    translation = s.maketrans({ord('A'): 'a', ord('B'): ord('b')}) 
    
    • 1
    • 当有两个参数时,分别是被替换字符与指定字符,其长度必须相同
    translation = s.maketrans('A', 'a')
    
    • 1
    • 当有三个参数时,前两个参数含义相同,第三个参数的意思是里面的字符若出现,则直接替换为None,其等级高于前两个参数
    translation = s.maketrans('AB', 'ab', 'ACD')
    
    • 1
import string
output_str = input_str.translate(input_str.maketrans("","",string.punctuation))
  • 1
  • 2
  • 空白处理
output_str = input_str.strip()
  • 1
  • 词干提取
    英语有复数、进行时等多种形态,通过提取词汇的主干部分可以用于信息检索领域,但是并不一定仍可以表达完整语义,因为有的单词提取词干之后,单词含义就不是原来的了。
from nltk.stem import PorterStemmer
from nltk.tokenize import word_tokenize

stemmer = PorterStemmer()
output_str = word_tokenize(input_str)
for word in output_str:
	print(stemmer.stem(word))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 词形还原
    这部分是将不同时间态的单词还原成原形,例如was变成is。
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize

lemmatizer = WordNetLemmatizer()
output_str = word_tokenize(input_str)
for word in output_str:
	print(lemmatizer.lemmatize(word))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2、语义分析

  1. 词性标注
    一般而言,文本里的动词更加重要,而助词不太重要,所以词性标注可以为文本处理提供比较关键的信息。词性标注可以使用常用的自然语言工具包来实现。
import nltk
tokens = nltk.work_tokenize(ubput_str)
output = nltk.pos_tag(tokens)
  • 1
  • 2
  • 3
  1. 命名实体识别
    用于识别文本中具有特定意义的实体,例如人名、地点名、机构组织名、时间等。
from nltk import word_tokenize,pos_tag,ne_chunk
output = ne_chunk(pos_tag(word_tokenize(input_str))))
  • 1
  • 2
  1. 词组提取
    抽取固定的常见搭配,例如keep in mind,speed up等
from ICE import CollocationExtractor
extractor = CollocationRxtractor.with_collocation_pipeline("Tl",bing_key="Temp",pos_check=False)
  • 1
  • 2

3、分词

对于中文来说,有一个特殊的问题就是句子的词之间没有分割符合,这就产生了分词的问题,分词当中有几大难点,分别是新词识别词的界限无统一标准切词会产生歧义等。

  1. 机械分词法
    基于词典按照一定的策略进行切分,常用策略有最大匹配法、最小切分法等。

  2. 基于N-gram分词法
    基于N-gram的分词法的第一步是找出所有可能的分词情况,接着基于N-gram语言模型对分词序列进行概率计算,找出出现可能性最大的分词序列

  3. 基于隐马尔科夫模型
    HMM描述由一个隐藏的马尔科夫链随机生成不可观测状态的随机序列,再由各个状态生成观测变量从而产生挂测序列的过程。然后将分词问题转化为序列标注问题,每个词用B、M、E代表头中尾三部分。

还有基于条件随机场模型、基于深度学习的分词法等等。
常用的分词工具有StanfordCoreNLP、HanLP、THULAC、SnowNLP、jieba等。现有工具都可以实现很好的分词效果,针对一些特殊领域中的特殊词汇可以通过添加词典的方式进行改进。

4、文本纠错

文本纠错可以分为Non-word拼写错误和Real-word拼写错误,主要用到的知识点是贝叶斯定力、语言模型、编辑距离、词表构建、语料统计等技术。

参考文献:自然语言处理从入门到实战【M】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/350018
推荐阅读
相关标签
  

闽ICP备14008679号