【自然语言处理】浅谈语料库

版权声明:可以转载奥 https://blog.csdn.net/Jiajikang_jjk/article/details/83684375

【自然语言处理】浅谈语料库

前言

       本篇博文重在了解语料库以及获取相关语料库的资源介绍。

一、浅谈语料库

1、语料和语料库

       语料通常指在统计自然语言处理中实际上不可能观测到大规模的语言实例。所以人们简单地用文本作为替代,并把文本中的上下文关系作为现实世界中语言的上下文关系的替代品。
        语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记。其具备三个显著的特点:

    ⊚ 语料库中存放的是在语言的实际使用中真实出现过的语言材料。
    ⊚ 语料库以电子计算机为载体承载语言知识的基础资源,但并不等于语言知识。
    ⊚ 真实语料需要经过加工(分析和处理),才能成为有用的资源。

2、语料库语言学

       语料库语言学的研究范畴:主要研究机器可读自然语言文本的采集、存储、检索、统计、语法标注、句法语义分析,以及具有上述功能的语料库在语言教学、语言定量分析、词汇研究、词语搭配研究、词典编制、语法研究、语言文化研究、法律语言研究、作品风格分析、自然语言理解、机器翻译等方面的应用。

3、 建议语料库的意义

       语料库是为一个或者多个应用目标而专门收集的,有一定结构的、有代表的、可被计算机程序检索的、具有一定规模的语料集合。本质上讲,语料库实际上是通过对自然语言运用的随机抽样,以一定大小的语言样本来代表某一研究中所确定的语言运用的总体。



       ok!!! 到了这里对于语料库,语料是个什么鬼也大体有了了解。接下来就更深入的了解关于语料库的知识吧!!!

二、语料库深入了解

1、语料库划分与种类

冯志伟教授语料库划分比较有影响力且在学术上认可度比较高:

       ⊚ 按语料选取的时间划分,可分为历时语料库(diachronic corpus)和共时语料库(syn-chronic corpus)。
       ⊚ 按语料的加工深度划分,可分为标注语料库(annotated corpus)和非标注语料库(non- annotated corpus)。
       ⊚ 按语料库的结构划分,可分为平衡结构语料库(balance structure corpus)和自然随机结构的语料库(random structure corpus)。
       ⊚ 按语料库的用途划分,可分为通用语料库(general corpus)和专用语料库(specialized corpus)。
       ⊚ 按语料库的表达形式划分,可分为口语语料库(spoken corpus)和文本语料库(textcorpus)。
       ⊚ 按语料库中语料的语种划分,可分为单语种语料库(monolingual corpora)和多语种语料库(multilingual corpora)。多语种语料库又可以再分为比较语料库(comparable corpora)和平行语料库(parallel corpora)。比较语料库的目的侧重于特定语言现象的对比,而平行语料库的目的侧重于获取对应的翻译实例。
       ⊚ 按语料库的动态更新程度划分,可分为参考语料库(reference corpus)和监控语料库(monitor corpus)。参考语料库原则上不做动态更新,而监控语料库则需要不断地进行动态更新。

2、语料库构建原则

语料库应该具有代表性、结构性、平衡性、规模性、元数据,各个原则具体介绍如下:

       ⊚ 代表性:在应用领域中,不是根据量而划分是否是语料库,而是在一定的抽样框架范围内采集而来的,并且能在特定的抽样框架内做到代表性和普遍性。
       ⊚ 结构性:有目的地收集语料的集合,必须以电子形式存在,计算机可读的语料集合结构性体现在语料库中语料记录的代码、元数据项、数据类型、数据宽度、取值范围、完整性约束。
       ⊚平衡性:主要体现在平缓因子——学科、年代、文体、地域、登载语料的媒体、使用者的年龄、性别、文化背景、阅历、预料用途(私信/广告等),根据实际情况选择其中一个或者几个重要的指标作为平衡因子,最常见的平衡因子有学科、年代、文体、地域等。
       ⊚ 规模性:大规模的语料对语言研究特别是对自然语言研究处理很有用,但是随着语料库的增大,垃圾语料越来越多,语料达到一定规模以后,语料库功能不能随之增长,语料库规模应根据实际情况而定。
       ⊚ 元数据:元数据对于研究语料库有着重要的意义,我们可以通过元数据了解语料的时间、地域、作者、文本信息等;构建不同的子语料库;对不同的子语料对比;记录语料知识版权、加工信息、管理信息等。
       注意:汉语词与词之间没有空隙,不便于计算机处理,一般需要进行切词和词性标注。

3、语料标注的优缺点

       ⊚ 优点:研究方便。可重用、功能多样、分析清晰。
       ⊚ 缺点:语料不客观(手工标注准确率高而一致性差,自动或者半自动标注一致性高而准确率差)、标注不一致、准确率低。

三、自然语言处理工具包:NLTK

1、 了解NLTK

       NLTK(Natural language Toolkit):自然语言工具包,Python 编程语言实现的统计自然语言处理工具。它是由宾夕法尼亚大学计算机和信息科学的史蒂芬·伯德和爱德华·洛珀编写的。NLTK 支持NLP 研究和教学相关的领域,其收集的大量公开数据集、模型上提供了全面易用的接口,涵盖了分词、词性标注(Part-of-Speech tag,POS-tag)、命名实体识别(NamedEntity Recognition,NER)、句法分析(Syntactic Parse) 等各项NLP 领域的功能。广泛应用在经验语言学、认知科学、人工智能、信息检索和机器学习。

2、 获取NLTK

在这里插入图片描述
       执行exe 文件,会自动匹配到Python 安装路径,如果没有找到路径则说明NLTK 版本不正确,去官网选择正确版本号下载.
       获取NLTK链接:https://pypi.org/project/nltk/3.2.1/#files
       说明:NLTK 核心包主要包括如下:

       ⊚ NLTK-Data:分析和处理语言的语料库。
       ⊚ NumPy:科学计算库。
       ⊚ Matplotlib:数据可视化2D 绘图库。
       ⊚ NetworkX:存储和操作由节点和边组成的网络结构函数库。

3、 Standford NLP 简介

       Stanford NLP:由斯坦福大学的NLP 小组开源的Java 实现的NLP 工具包,同样对NLP领域的各个问题提供了解决办法。斯坦福大学的NLP 小组是世界知名的研究小组,能将NLTK 和Stanford NLP 两个工具包结合起来使用,对于自然语言开发者再好不过了。2004 年Steve Bird 在NLTK 中加上了对Stanford NLP 工具包的支持,通过调用外部的jar 文件来使用Stanford NLP 工具包的功能,这样一来就变得更为方便好用。NLTK 提供的Stanford NLP 中的以下几个功能。

       ⊚ 中英文分词:StanfordTokenizer。
       ⊚ 中英文词性标注:StanfordPOSTagger。
       ⊚ 中英文命名实体识别:StanfordNERTagger。
       ⊚ 中英文句法分析:StanfordParser。
       ⊚ 中英文依存句法分析:StanfordDependencyParser。

4、Standford NLP必要工具包说明

⊚ 分词依赖:stanford-segmenter.jar、slf4j-api.jar、data 文件夹相关子文件。
⊚ 命名实体识别依赖:classifiers、stanford-ner.jar。
⊚ 词性标注依赖:models、stanford-postagger.jar。
⊚ 句法分析依赖:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers。
⊚ 依存语法分析依赖:stanford-parser.jar、stanford-parser-3.6.0-models.jar、classifiers。压缩包下载和源码分析
⊚ 分词压缩包StanfordSegmenter 和StanfordTokenizer:下载stanford-segmenter-2015-12-09.zip(https://pan. baidu.com/s/1kVc20ib),解压获取目录中的stanford-segmenter-3.6.0.jar复制为stanford-segmenter.jar 和slf4j-api.jar。
⊚ 词性标注压缩包:下载stanford-postagger-full-2015-12-09.zip (https://pan.baidu.com/s/1hrVMSE4),解压获取stanford-postagger.jar。
⊚ 命名实体识别压缩包:下载stanford-ner-2015-12-09.zip (https://pan.baidu.com/s/
1skOJb5r),解压获取stanford-ner.jar 和classifiers 文件。
⊚ 句法分析、句法依存分析:下载stanford-parser-full-2015-12-09.zip(http://pan.baidu.com/s/1nv6Q2bZ),解压获取stanford-parser.jar 和stanford-parser-3.6.0-models.jar

四、获取语料库

1、国内外著名语料库

       ⊚ 点通多语言语音语料库:
       ⊚ 宾州大学语料库: https://www.ldc.upenn.edu/
       ⊚ Wikipedia XML 语料库:http://www-connex.lip6.fr/~denoyer/wikipediaXML/
       ⊚ 中英双语知识本体词网:http://bow.ling.sinica.edu.tw/ 结合词网、知识本体与领域标记的词汇知识库。

2、英文语料库

       ⊚ 古滕堡语料库:http://www.gutenberg.org/
       ⊚ 语料库在线: http://www.aihanyu.org/cncorpus/index.aspx#P0

3、中文语料库

1. 搜狗实验室新闻| 互联网数据: http://www.sogou.com/labs/
2. 北京大学语言研究中心:http://ccl.pku.edu.cn/term.asp
3. 计算机语言研究所:
4. 数据堂: http://www.datatang.com/
5. 中央研究院平衡语料库
https://www.sinica.edu.tw/SinicaCorpus):专门针对语言分析而设计的,每个文句都依词断开并标示词类。语料的搜集也尽量做到现代汉语分配在不同的主题和语式上,是现代汉语无穷多的语句中一个代表性的样本。现有语料库主要针对语言分析而设计,由中央研究院信息所、语言所词库小组完成,内含有简介、使用说明,现行的语料库是4.0 版本。
6. LIVAC 汉语共时语料库:http://www.livac.org/index.php?lang=tc
7. 兰开斯特大学汉语平衡语料库: http://www.lancaster.ac.uk/fass/projects/corpus/
8. 兰开斯特——洛杉矶汉语口语语料库 :http://www.lancaster.ac.uk/fass/projects/corpus/
9. 语料库语言学在线:https://www.corpus4u.org/
10.北京森林工作室汉语句义结构标注语料库:http://www.isclab.org.cn/csa/bfs-ctc.htm
11.国家语委现代汉语语料库
http://corpus.zhonghuayuwen.org/index.aspx
现代汉语通用平衡语料库现在重新开放网络查询了。重开后的在线检索速度更快,功能更强,同时提供检索结果下载。现代汉语语料库在线提供免费检索的语料约2000 万字,为分词和词性标注语料。
12.古代汉语语料库http://corpus.zhonghuayuwen.org/):网站现在增加了一亿字的古代
汉语生语料,研究古代汉语的也可以去查询和下载。网站同时还提供了分词、词性标
注软件,词频统计、字频统计软件。基于国家语委语料库的字频词频统计结果和发布
的词表等进行建库,以供学习研究语言文字的同学和老师使用。
13.《人民日报》标注语料库https://blog.csdn.net/eaglet/article/details/1778995):《人民日报》标注语料库中一半的语料(1998 年上半年)共1300 万字,已经通过《人民日报》新闻信息中心公开并提供许可使用权。其中一个月的语料(1998 年1 月)近200 万字在互联网上公布,可自由下载。
14. 古汉语语料库https://www.sinica.edu.tw/ch):古汉语语料库包含以下五个语料库—— 上古汉语、中古汉语(含大藏经)、近代汉语、出土文献、其他。部分数据取自史语所汉籍全文数据库,故两者间内容略有重叠。此语料库之出土文献语料库,全部取自史语所汉简小组所制作的数据库。
15. 近代汉语标记语料库https://www.sinica.edu.tw/Early_Mandarin):为应对汉语史研究需
求而建构的语料库。目前语料库所搜集的语料已涵盖上古汉语(先秦至西汉)、中古汉语(东汉魏晋南北朝)、近代汉语(唐五代以后)大部分的重要语料,并陆续开放使用;在标记语料库方面,上古汉语及近代汉语都已有部分语料完成标注的工作,并视结果逐步提供上线检索。
16. 树图数据库http://treebank.sinica.edu.tw/
17.搜文解字http://words.sinica.edu.tw/):包含「搜词寻字」、「文学之美」、「游戏解惑」、「古文字的世界」四个单元,可由部件、部首、字、音、词互查,并可查询在四书、老、庄、唐诗中的出处,以及直接链接到出处并阅读原文。
18.文国寻宝记https://www.sinica.edu.tw/wen):在搜文解字的基础之上,以华语文学习者
为对象,进一步将字、词、音的检索功能与国编、华康、南一等三种版本的国小国语课本结合。与唐诗三百首、宋词三百首、红楼梦、水浒传等文学典籍结合,提供网络上国语文学习的素材。
19. 汉籍电子文献https://www.sinica.edu.tw/ch):包含整部25 史整部阮刻13经、超过2000 万字的台湾史料、1000 万字的大正藏及其他典籍。
20. 中国传媒大学文本语料库检索系统http://ling.cuc.edu.cn/RawPub/
21. 在线分词标注系统(http://ling.cuc.edu.cn/cucseg/
22. 新词语研究资源库(http://ling.cuc.edu.cn/newword/
23. 哈工大信息检索研究室对外共享语料库资源 :
http://ir.hit.edu.cn/demo/ltp/Sharing_Plan.htm
该语料库为汉英双语语料库,10 万对齐双语句对,文本书件格式,同义词词林扩展版,77343 条词语,秉承《同义词词林》的编撰风格。同时采用五级编码体系,多文档自动文摘语料库,40 个主题,文本书件格式,同一主题下是同一事件的不同报道。汉语依存树库,不带关系5 万句,带关系1 万句;LTML 化,分词、词性、句法部分人工标注,可以图形化查看,问答系统问题集,6264 句;已标注问题类型,LTML 化,分词、词性、句法、词义、浅层语义等程序处理得到,单文档自动文摘语料库共211 篇。
24. 清华大学汉语均衡语料库THACorpus
25. 中国科学院计算技术研究所,跨语言语料库目前的双语句对数据库中有约180000 对已对齐的中英文句子。本数据库支持简单的中英文查询服务。查询结果包括句对编号、中文句子、英文句子、句对来源等。

4、获取网络资源

       A: 如下所示获取的是伤寒杂病论(在线获取)

       代码如下所示

"""
 author:jjk
 datetime:2018/11/4
 coding:utf-8
 project name:Pycharm_workstation
 Program function: 网络数据获取
 
"""
from __future__ import division
import nltk,re,pprint
from urllib.request import urlopen # 导入请求链接
import time
start_time = time.time()
url = r'http://www.gutenberg.org/files/24272/24272-0.txt'# 请求链接
raw = urlopen(url).read()# 打开,读取
raw = raw.decode('utf-8')# 设置编码
print(len(raw))# 输出字符长度
print(raw[2000:2500])
stop_time = time.time()
time_sum = stop_time-start_time
print("一共耗用时间:",time_sum)

       结果
在这里插入图片描述

       B:在线获取处理HTML文本(红楼梦)

       代码如下所示:

"""
 author:jjk
 datetime:2018/11/4
 coding:utf-8
 project name:Pycharm_workstation
 Program function: 获取处理红楼梦
 
"""
import re,nltk
from urllib.request import urlopen
import time
start_time = time.time()# 开始时间
url = 'http://www.gutenberg.org/cache/epub/24264/pg24264-images.html'# 请求链接
html = urlopen(url).read()# 打开,读取
html = html.decode('utf-8')
print(html[5000:5500])# 获取5000-5500之间的文本
stop_time = time.time()# 最后时间
time_sum = stop_time-start_time# 一共耗时
print("一共请求时间:",time_sum)

       结果
在这里插入图片描述

5、NLTK 获取语料库

       A:古藤保语料库
"""
 author:jjk
 datetime:2018/11/4
 coding:utf-8
 project name:Pycharm_workstation
 Program function:   获取古藤保语料库
"""
from nltk import data
data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data") # 这里的路径需要换成自己数据文件下载的路径

from nltk.corpus import gutenberg
print(gutenberg.fileids())
from nltk.corpus import webtext# 导包
#for fileid in webtext.fileids():# 遍历
#    print(fileid,webtext.raw(fileid))

部分结果截图
在这里插入图片描述

       B:网络和聊天文本
"""
 author:jjk
 datetime:2018/11/4
 coding:utf-8
 project name:Pycharm_workstation
 Program function:   获取古藤保语料库
 
"""

from nltk import data
data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data") # 这里的路径需要换成自己数据文件下载的路径

from nltk.corpus import gutenberg
# print(gutenberg.fileids())
from nltk.corpus import webtext# 导包
for fileid in webtext.fileids():# 遍历
    print(fileid,webtext.raw(fileid))

部分结果截图
在这里插入图片描述

       C:布朗语料库

       比较文体中情态动词的用法

"""
 author:jjk
 datetime:2018/11/4
 coding:utf-8
 project name:Pycharm_workstation
 Program function: 布朗语料库
"""
# 查看语料信息
from nltk import data
data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data")
import nltk
from nltk.corpus import brown
#brown.categories()
new_texts = brown.words(categories='news')
fdist = nltk.FreqDist([w.lower() for w in new_texts])
modals = ['can','could','may','might','must','will']
for m in modals:
    print(m + ':',fdist[m])

       结果
在这里插入图片描述

       D:路透社语料库

       代码

"""
 author:jjk
 datetime:2018/11/5
 coding:utf-8
 project name:Pycharm_workstation
 Program function: 路透社语料库
 
"""
from nltk import data# 导包数据
data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data")# 路径
from nltk.corpus import reuters
print(reuters.fileids()[:50]) #前50个测试文档
print(reuters.categories()[:100])# 查看前100个类别
print(reuters.categories('training/9865'))# 查看某个编号的语料下的类别尺寸
print(reuters.categories(['training/9865','training/9880']))# 查看某几个联合编号语料下的类别尺寸
print(reuters.fileids('barley'))# 查看哪些编号的文件属于指定的类别
 

       结果(部分截图)
在这里插入图片描述

       E:就职演说语料库

       代码

"""
 author:jjk
 datetime:2018/11/5
 coding:utf-8
 project name:Pycharm_workstation
 Program function:就职演说语料库
"""
from nltk import data
data.path.append(r"F:\Anaconda\Anaconda_install\nltk_data")
# 查看语料信息
from nltk.corpus import inaugural
print(len(inaugural.fileids()))# 长度
print(inaugural.fileids())# 56个txt
print([fileid[:4] for fileid in inaugural.fileids()])# 查看就职演说的年份 

       结果
在这里插入图片描述

       好吧,,,到了这里语料库相关的知识就说到这里吧。小伙伴们看到这里还望给博主多多给一些意见和建议。

猜你喜欢

转载自blog.csdn.net/Jiajikang_jjk/article/details/83684375