Used for self-study only; please inform us if the proper-usage is doubted.
The form of charging is not used for creating intrest but to alleviating its unrestricted communication through open network.
文本分析或自然语言处理NLP的主要任务:
文本索引与检索(Indexing and Search)
文本分类(Text Classification)
文本摘要(Document Summarization)
文本信息抽取(Text Information Extraction)
情感分析(Sentiment Analysis)
文本分类的定义(CLR)
文本分类是把文档集合中的每个文档,划分到一个预先定义的主题类别。
判断Email是正常邮件和垃圾邮件,二分类问题。
>> 新闻主题分类:判断新闻属于哪个类别,如财经、体育、娱乐等
>> 自动问答系统中的问句分类:问句类型 Chat-GPT(预训练模型+小样本学习)
>> 智慧司法: 基于案件事实描述文本的罚金等级分类(多分类)
文本分类系统的一般步骤:
1.预处理输入文本
2.特征提取,得到文本表示
3.分类器分类
对于分类器的设计,有包括k最近邻、朴素贝叶斯、支持向量机和决策树在内的许多算法。
信息抽取(IE, Information Extraction)
简称IE,即从自然语言文本中,抽取出特定的事件或事实信息,帮助我们将海量内容自动分类、提取和重构。这些信息通常包括指定类型的实体(entity)、关系(relation)、事件(event) 。
从新闻中抽取时间、地点、关键人物
从技术文档中抽取产品名称、开发时间、性能指标等
从自然语言中抽取用户感兴趣的事实信息,无论是在知识图谱、信息检索、问答系统还是在情感分析、文本挖掘中,信息抽取都有广泛应用。
信息抽取主要包含三大子任务
关系抽取:通常我们说的三元组(triple)抽取,主要用于抽取实体间的关系。
实体抽取与链指:也就是命名实体识别(named entity recognition, NER)。
事件抽取:相当于一种多元关系的抽取。
关系信息抽取常用数据集
ACE关系抽取任务数据集:ACE2005关系抽取数据集包含599篇与新闻和邮件相关的文档,其数据集内包含7大类25小类关系。
SemEval2010 Task 8数据集:该数据集包含9种关系类型,分别是Compoent-Whole、Instrument-Agency、Member-Collection、Cause-Effect、Entity-Destination、Content-Container、Message-Topic、Product-Producer和Entity-Origin。考虑到实体之间关系的方向以及不属于前面9种关系的Other关系,共生成19类实体关系。其中训练数据 8000个,测试数据2717个。
NYT2010数据集:是Riedel等人在2010年将Freebase知识库中的知识“三元组”对齐到“纽约时报”新闻中得到的训练数据。该数据集中,数据的单位是句包,一个句包由包含该实体对的若干句子构成。其中,训练数据集从《纽约时报》2005-2006年语料库中获取,测试集从2007年语料库中获取。
情感分析的定义
情感分析,是NLP领域的主要问题之一。主要研究人们针对实体(包括产品、服务、组织、机构、事件、话题等)表达出来的主观观点、情感、评价、态度和情绪。
情感分析任务:包括情感分类、观点抽取、观点问答以及观点摘要等。
其中情感分类是情感分析领域研究最广的问题。
情感分类是指根据文本所表达的含义和情感信息将文本划分成褒扬、贬义、中性或具体的类型。例如,“品牌M汽车的油耗很高”、“品牌J汽车的性价比相当的高”、“品牌Z汽车有1m多高”。
第一句表达了贬义的情感倾向
第二句表达了褒扬的情感倾向
第三句则表述了一个事实,没有情感倾向。
文本摘要
指通过各种技术,对文本或者是文本集合,抽取、总结或精炼其中的要点信息,用以概括和展示原始文本(集合)的主要内容或大意
机器翻译
机器翻译是将一种语言的文本,转换为另一种语言的文本。
话题检测与跟踪(Topic Detection and Tracking, TDT) 舆情分析
指从新闻等数据流中,识别不同的事件,并且对其进行跟踪的自动化技术。在话题检测和跟踪任务中,“话题”也称为“事件”。
问答系统
问答系统是信息检索系统的一种高级形式。它能用准确、简洁的自然语言回答用户用自然语言提出的问题。
7.2 Python文本分析库
Jieba库
Jieba是一款优秀的 Python 第三方中文分词库,可以对中文文本进行分词、词性标注、关键词抽取等功能,并支持自定义词典。
NLTK库
Natural Language Toolkit,自然语言处理工具包。大概是NLP领域最为著名的一个Python库。
其它NLP库
HanLP:Han Language Processing,汉语言处理包。功能包括:中文分词、词性标注、命名实体识别、依存句法分析、关键词提取、新词发现、短语提取、自动摘要、文本分类、拼音简繁。地址: http:// https://github.com/hankcs/HanLP
Stanford NLP:提供一系列自然语言分析的工具,支持中文、英文、阿拉伯语、法语、德语、西班牙语等多种语言。地址:http:// https://stanfordnlp.github.io/CoreNLP/
Gensim:可以用来从文档中自动提取语义主题,含众多非监督学习算法:TF/IDF,潜在语义分析(Latent Semantic Analysis,LSA) 等。还支持Word2Vec,Doc2Vec等模型。 地址:https://radimrehurek.com/gensim/
Jieba库的安装
Jieba库为优秀的中文分词第三方库,没有被集成在Anaconda中,
需额外安装,安装方式:pip install jieba
Jieba分词
Jieba分词有三种不同的分词模式:精确模式、全模式和搜索引擎模式。
精确模式是最常用的分词方法。
全模式将句子中所有可能的词都列举出来。
搜索引擎模式则适用于搜索引擎使用。
#函数 描述
jieba.cut(s) #精确模式,返回一个可迭代的数据类型
jieba.cut(s,cut_all=True) #全模式,输出文本s中所有可能单词
jieba.cut_for_search(s) #搜索引擎模式,适合搜索引擎建立索引的分词结果
jieba.lcut(s) #精确模式,返回一个 列表类型,建议使用
jieba.lcut(s,cut_all=True) #全模式,返回一个列表类型,建议使用
jieba.lcut_for_search(s) #搜索引擎模式,返回一个列表类型,建议使用
jieba.add_word(w) #向分词词典中增加新词W
jieba.del_word(w) #从分词词典中删除词汇W
jieba关键词抽取
基于 TF-IDF 算法的关键词抽取以及基于 TextRank 算法的关键词抽取。
NLTK (Natural Language Toolkit)
包含分词、词干提取、语法树分析、词性标注、命名实体识别、短语识别以及文本分类等文本处理功能。主要应用于英文数据,历史悠久。
语料库安装:Anaconda已集成nltk。进行“import nltk” 测试,是否会报错?
然而,nltk需配置大量语料库,尝试nltk.download()下载至本地,但很可能报错!
若无法通过nltk.download()自动下载,可尝试从github下载至本地: https://github.com/nltk/nltk_data/tree/gh-pages获得nltk_data-gh-pages.zip文件,解压后将文件中packages文件夹的全部子目录放置在nltk搜索的任意一个路径下,如‘E:\\nltk_data’ (若还不存在,则创建):
Case 1: 分句与分词
注:运行以上程序可能还会出现右图所示的报错提醒。解决办法: 解压语料库文件夹“nltk_data\tokenizers”中的punkt.zip文件即可
Case 2: 词性标注
进行词性标注,需要使用nltk.pos_tag(tokens)函数,其中tokens是句子分词后的结果。词性标注是句子级的标注。
Case 3: 命名实体识别(Named Entity Recognition,简称NER)
NER任务的目标是识别出待处理文本中指定的实体类别:
三大类(实体类、时间类和数字类)
七小类(人名、机构名、地名、时间、日期、货币和百分比)命名实体。
九小类:
PERSON: 人名,如President Obama
ORGANIZATION:机构名,如WHO、ISRO
LOCATION:地点,如Murray River
DATE: 日期,如June、2008-06-29
TIME:时间,如12:30:00 AM
MONEY:货币,如Twenty dollars,100 GBP
PERCENT:百分比,如20%, twenty pct.
FACILITY:设施,如Washington Monument
GPE: 地缘政治实体,如 South East Asia, North America
Case 3: 命名实体识别(Named Entity Recognition,简称NER)
通过调用nltk.ne_chunk函数,可以进行命名实体识别。
需要把参数tags,即句子词性标注的结果,传递给ne_chunk函数。
命名实体识别(多个句子情形)
Case 4: 去除停用词(Stopwords)
停用词是指在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。
Case 5: 情感分析
使用NLTK,可以对文本进行情感分析,确定其情感倾向。