1.文本预处理

程序的目的是找出高频不认识的词汇,因此直接删除停用词后再分词,以减小文本处理量。将文本噪音去除放在了最后,原因是书籍文本一般较为规整,在前序两步完成后已变为字符串,最后处理简单方便(仅判断是否为字符即可)。因此分3步做文本预处理。

  • 删除停用词
  • 分词
  • 去除文本噪音

1.1 删除停用词

nltk中停用词查找方式:

import nltk
from nltk.corpus import stopwords
set(stopwords.words('german'))

德语原有停止词共232个

1.2 分词

即,将语句转为单独字符串

#step2 tokenize
word_tokens=word_tokenize(text)
filtered_txt=[]
for w in word_tokens:if w not in stopwords:filtered_txt.append(filtered_txt)

1.3 去除文本噪音

#清除无效字符,返回tagged_clean
#删除filtered_txt 中元素[0]不包含在字母表中的元素
list_len=len(filtered_txt)
filtered_clean=[]
for i in range(list_len): words=tagged_added[i]if words[0].isalpha():filtered_clean.append(tagged_added[i])

2. 标准化文本

德语变格及时态极多,通过NLTK的WordLemmatizer()函数进行词形还原(Lemmatization),另,词形还原在使用时,最好先指定单词的词性。标准化文本步骤:

  • 获取词性
  • 转换pos位(增加词性)
  • 还原词形

2.1 获取词性

在NLP中,使用Parts of speech(POS)技术实现。在nltk中,使用nltk.pos_tag()获取单词在句子中的词性。

#step3 tags标注词性
tagged_added = nltk.pos_tag(tokens)

tagged_added为:

[('Vorbemerkung', 'NNP'),('Herausgebers', 'NNPS'),('Die-Welt-von-Gestern', 'NNP'),('Vorbemerkung', 'NNP'),('HerausgebersStefan', 'NNP'),('Zweigs', 'NNP'),('›Welt', 'NNP'),('Gestern‹', 'NNP'),('großartiges', 'NNS'),('Denn', 'NNP'),('Rückschau', 'NNP'),('weit', 'VBD'),('mehr', 'JJ'),('Autobiographie', 'NNP'),('Blick', 'NNP'),('beschauliche', 'NN'),('behütete', 'NN'),('Kindheit', 'NNP'),('Jugend', 'NNP'),... ...

POS词性对照表:

2.2 转换pos位(增加词性)

WordNetLemmatizer()的pos参数定义了词形还原时的先行判断原词为形容词、动词、名词等,以增加原形还原准确度。

以nltk.pos_tag()获取的词性不能直接传入做为pos的实参,因此需定义转换函数:

  • nltk tag 定义
#step5-1 单词的词性对应
def get_wordnet_pos(tag):if tag.startswith('J'):return wordnet.ADJelif tag.startswith('V'):return wordnet.VERBelif tag.startswith('N'):return wordnet.NOUNelif tag.startswith('R'):return wordnet.ADVelse:return None

2.3 还原词形

# step5-2 词形还原
wnl = WordNetLemmatizer()
Lemmatized=[]
for word in tagged_clean:wordnet_pos = get_wordnet_pos(word[1]) or wordnet.NOUNLemmatized.append(wnl.lemmatize(word[0], pos=wordnet_pos))

原文为:

预处理后原形为:

*发现德语效果并不好,如umfasst等,并未全部还原为原形。
尝试获取词干方法。

2.4 获取词干

词干获取时可设置语言。

from nltk.stem import SnowballStemmer
print(SnowballStemmer.languages)
('arabic', 'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish')

参考

  • wordnet

  • 如何处理非英文字符:
    python-nltk-stemming-lemmatization-natural-language-processing-nlp

  • text-cleaning-nltk-library

  • NLTK用法总结

  • NLP入门(三)词形还原(Lemmatization)

  • ntlk词典资源

python--nltk库预处理德语文本相关推荐

  1. python 英语分词_基于Python NLTK库进行英文文本预处理

    文本预处理是要文本处理成计算机能识别的格式,是文本分类.文本可视化.文本分析等研究的重要步骤.具体流程包括文本分词.去除停用词.词干抽取(词形还原).文本向量表征.特征选择等步骤,以消除脏数据对挖掘分 ...

  2. Python NLTK库安装Error:Resource u*corpora/gutenberg* not found.

    转载请标明出处: http://blog.csdn.net/djy1992/article/details/72828734 本文出自:[奥特曼超人的博客] 提起聊天机器人, 想必大家会想起一个优秀的 ...

  3. python nltk是什么_Python文本处理nltk基础

    自然语言处理 -->计算机数据 ,计算机可以处理vector,matrix 向量矩阵. NLTK 自然语言处理库,自带语料,词性分析,分类,分词等功能. 简单版的wrapper,比如textbl ...

  4. python textwrap_[Python标准库]textwrap——格式化文本段落

    textwrap--格式化文本段落 作用:通过调整换行符在段落中出现的位置来格式化文本.         Python 版本:2.5 及以后版本         需要美观打印时,可以用 textwra ...

  5. python自然语言处理案例-Python自然语言处理 NLTK 库用法入门教程【经典】

    本文实例讲述了Python自然语言处理 NLTK 库用法.分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP).本教程将会使用 Python NLTK ...

  6. Python自然语言处理 NLTK 库用法入门教程【经典】

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 本文实例讲述了Python自然语言处理 NLTK 库用法.分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python ...

  7. Python常用库 - 【持续整理归档】

    Python常用库 - [持续整理归档],比较多,会逐步慢慢细化分类和扩从python常用库.(最后更新:2020-4-8) 为方便Python开发人员进行敏捷开发,高效的完成工作需求,耗时很久整理的 ...

  8. Python常用库的用法介绍都给大家整理出来啦,非常实用,建议收藏

    前言 随着大数据和人工智能的发展,Python也与多种科技深深绑定. 比如自动化测试,运维,爬虫,数据分析,机器学习,金融领域,后端开发,云计算,游戏开发都有涉及. 万丈高楼平地起,Python这座大 ...

  9. Python NLTK 自然语言处理入门与例程

    Python NLTK 自然语言处理入门与例程 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP).本教程将会使用 Python NLTK 库.NLTK 是一个当下流行的,用于自然语言 ...

最新文章

  1. 【Spark Summit EU 2016】使用Spark和StreamSets构建数据通道
  2. android将被代替的控件,Android 控件被忽略的属性
  3. mysql 数据怎么导出_mysql怎么导出数据
  4. android opencv hu moment,学习OpenCV:hu矩
  5. PCL库VTK显示点云法向时出错:no override found for vtkActor
  6. C++与QML逻辑分离
  7. 牛客网_PAT乙级1016_部分A+B (15)
  8. vue中请求接口怎么封装公共地址_vue请求接口的封装
  9. 一个奇怪的注意事项TNS-12545 TNS-12560 TNS-00515
  10. import pandas as pd什么意思_Pandas万花筒:让绘图变得更美观
  11. JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
  12. MySQL快速上手[学习笔记](三)
  13. Linux Apache服务详解——Apache虚拟目录与禁止显示目录列表实战
  14. 在python3.5中使用pip
  15. html转换成ppt转换器,ppt转换成word|幻灯片转换成word ppt转视频轻松解决
  16. 【教学类-20-01】20221203《世界杯16强国旗-随机版》(大班)
  17. themeleaf基本语法
  18. 如何通adb命令删除安卓设备上指定的文件和apk
  19. Jdk1.8 Collectors类使用详解(实用干货)
  20. f2fs解析(十)nid 如何从nat_root中删除

热门文章

  1. CSS justify-content 属性
  2. php直播接口代码,网易云视频直播php版api
  3. 宝塔搭建docker运行Hyperf
  4. smallint mysql_mysql的数据类型int、bigint、smallint 和 tinyint取值范围
  5. VS2010上单独编译ocl模块(opencv248)
  6. c语言对10万位进行显示,C语言位运算
  7. 2021年中国电池片产量及重点企业对比分析(正泰电器VS明阳智能VS晶澳科技VS中来股份VS林洋能源)[图]
  8. 公众号可绑定到视频号直播间?来了解了解
  9. Edge浏览器提示您开启了窗口拦截程序解决方法
  10. python 异常处理 应急预案