开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践:基本文本处理 1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1067/detail/15498
基本文本处理 1
内容介绍:
一、管道(pipelines)的种类
二、其他管道
三、基本的文本分析
四、词性标注(POSM tagging)
打开 part 1 Text Mining Basic 文档挖掘基础,实验做第二个 Elementary text processing ipynb
,即基本文本处理。文本处理的一系列的操作,称做管道 pipelines ,这是一组操作,能够自动化连续操做完成任务,要利用这些管道将文本处理有用的东西。
一、管道(pipelines)的种类
1.English: Stanford CoreNLP
这是一套用于处理基格式良好的英语工具,且稳定可靠
相关网址链接:
http://nlp.stanford.edu:8080/corenlp/ (online demo)
http://stanfordnlp.github.io/CoreNLP/
2.中文: Stanford CoreNLP
可用于分词词性标注;命名实体识别;句法树、依存句法分析
参考文件网址:
https://blog.csdn.net/guolindonggld/article/details/72795022
Jupyter 开发环境特别适合数据科学,方便教学学习交流、做实验。可以在 notebook 中放入链接,可以方便获取一些学习资料。Notebook 的单元格有两种,一种是标记,另一种是代码这些需要去记忆。标记里面标记主要是做各种各样文本的说明,代码是携排代码。
3.中文:jieba
可用作分词、词性标注;分词背后需要词典作为支持,如果某个领域分词效果不好,词典里面可能没有需要的词,这就需要自定义词典加载在 jieba 里面, jieba 可以做关键词提取,然后找到文本里面代表的关键词在 Tickenize 里面可以找到返回词语在原文的起止位置。
Jieba 官网:https://github.com/fxsjyjieba
4.中文:hanLP
可用作分词、词性标注、 Tokenize、 命名实体还有句法相关性解析。
二、其他的管道
如 UDP ipe、Turku neural parser pipeline、百度 NLP、Google NLP 、NLTK 等。
除此之外还有科学数据中的 Pandas 也是一项强大的工具。 Gensim 可以作为向量, Scikit-learn 作为机器学习速度挖掘的算法同时也可以做文本的处理,后期的深度学习也会用到 Pytorch。
三、基本的文本分析
1.基本文本分析步骤
①基本的文本分析是将原始的文本输入,然后进行分析文本输出,最后用典型的文本分析管道等,通过以下一系列步骤进行。
②将文本拆分为句子
③将句子拆分为单词(通常将步骤1和步骤2颠倒过来)
获取单词的基本形式并为其分配词性类别,如动词、名词、形容词等
④分析句子的句法结构,比如主谓宾
⑤将文本跨句子彼此关联,识别命名实体,比如人名、地名、专业的机构名等
Note:这些步骤以非凡的方式相互依赖
2.句子拆分
句子拆分成完整的一句话,一般会有标点符号隔开,有可能是空格,有些句子的英文会使用英文首字母大写等等,然后进行句子拆分。句子拆分不是想象中的简单,可能会出现大写不一致、标点混乱,没有空格等现象。
3.Tokenization
其作用就是将要分析的文本分类为 tokens, 包括单词、数字、日期、标点符号等等,关于 Token 的解释空间很大,像 March 2,2016 vs.2.3.2016 完整的日期以及 can’t_> can not 词组都是 Token。
4.词形还原(Lemmatization)
对许多语言都有这样的问题,但对中文没有这样的问题。
①基于词典的方法 Dictionary-based methods
网址:Try it in the online demo
https://github.com/TurkuNLP/Finnish-dep-parser.git
②机器学习 Machine-learned
可以利用机器学习的方法进行分词,做词的 Tokens。
网址:http://bionlp-www.utu.fi/parser _demo/
四、词性标注(POSM tagging)
词分好之后,给单词分配它们的词性类别。实践中:给每个单词,一个预定义集合中的词性标签,其中有很多。对于大多数人而言,这并非易事,因其随处可见的歧义,比如中文:大学生活像白纸。中文:它白跑了一趟。其中“白”在名词“纸”前面是形容词,在动词“跑”前面是副词。“白”有多种词性,标注的时候,要选哪种词性也是不容易的。下面用两种方法对 Let’s try 进行标注
1. exam 1 jieba 分词与词性标注
①分词模式
Jieba 分词有三种不同的分词模式:精确模式、全模式和搜索引擎模式。首先导入 jieba 模式,有句话“大学生活像白纸” 放在一个变量 sentence 当中。有以下三种分词,word 1 里面放的是精确模式 ,使 jieba 里面的函数 cut 来进行分词。传入 sentence, 参数 cut off 和 false 是精确模式, IHMM 是分词背后的技术。
②分词结果
在分词结果中, phython 里面很方便的一个便利循环叫列表解析式,把分词放在列表中,然后里面使用一种便利,使其循环,即 word for word in words 循环便利,就是一对一把它给迭代找出来,然后把结果输出,再执行一下,就会看到三个结果。
全模式各种可能的切分,只要是词基本上都分出来,搜索引擎模式是为了搜索的时候方便的,如果是在那个框子里面输入搜索词,就能够找到相似的文档。为何要用列表解析式来输出?如果直接 print 分词结果,只是列成一个对象并没有看到结果。如果不想用列表解析式,可以用 jieba 里面的另外一个函数进行切分,执行以后直接是什么就可以输出该列表形式。这是运用到 jieba 里面的子模块 posseg, 而as 是词性标注,然后导出其子模块 “posseg: test =大学生活像白纸”。
2.如何进行分词标注
在 seg 模块里有一个函数 cut, 将文本传给 cut,用列表解析式输出结果,可看出这是一个 pair 也是一对的一个词性。“大学生”名词,“活像”是一个系动词,然后 pair 后面的“白纸”是一个名词,词性标注可以用 lcut,直接返回列表结果,以上就是 jieba 分词和词性标注。