赞
踩
类似其他的机器学习的数据预处理,自然语言处理也需要进行文本预处理,例如中文需要分词,英文需要词性还原等。
output_str = input_str.lower()
import re
output_str = re.sub(r'\d','',input_str)
translation = s.maketrans({ord('A'): 'a', ord('B'): ord('b')})
translation = s.maketrans('A', 'a')
translation = s.maketrans('AB', 'ab', 'ACD')
import string
output_str = input_str.translate(input_str.maketrans("","",string.punctuation))
output_str = input_str.strip()
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))
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))
import nltk
tokens = nltk.work_tokenize(ubput_str)
output = nltk.pos_tag(tokens)
from nltk import word_tokenize,pos_tag,ne_chunk
output = ne_chunk(pos_tag(word_tokenize(input_str))))
from ICE import CollocationExtractor
extractor = CollocationRxtractor.with_collocation_pipeline("Tl",bing_key="Temp",pos_check=False)
对于中文来说,有一个特殊的问题就是句子的词之间没有分割符合,这就产生了分词的问题,分词当中有几大难点,分别是新词识别、词的界限无统一标准、切词会产生歧义等。
机械分词法
基于词典按照一定的策略进行切分,常用策略有最大匹配法、最小切分法等。
基于N-gram分词法
基于N-gram的分词法的第一步是找出所有可能的分词情况,接着基于N-gram语言模型对分词序列进行概率计算,找出出现可能性最大的分词序列
基于隐马尔科夫模型
HMM描述由一个隐藏的马尔科夫链随机生成不可观测状态的随机序列,再由各个状态生成观测变量从而产生挂测序列的过程。然后将分词问题转化为序列标注问题,每个词用B、M、E代表头中尾三部分。
还有基于条件随机场模型、基于深度学习的分词法等等。
常用的分词工具有StanfordCoreNLP、HanLP、THULAC、SnowNLP、jieba等。现有工具都可以实现很好的分词效果,针对一些特殊领域中的特殊词汇可以通过添加词典的方式进行改进。
文本纠错可以分为Non-word拼写错误和Real-word拼写错误,主要用到的知识点是贝叶斯定力、语言模型、编辑距离、词表构建、语料统计等技术。
参考文献:自然语言处理从入门到实战【M】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。