获得文本语料和词汇资源 2

import nltk
from nltk.corpus import *

'''1、古腾堡语料库'''
gutenberg.fileids()       #所有古腾堡语料库中的文本
emma = nltk.corpus.gutenberg.words('austen-emma.txt')
#num_chars 变量计数了空白字符
#row()对文件的内容不进行任何语言处理
#sents()函数把文本划分成句子,其中每一个句子是一个词链表


'''非正规文本语料库'''
from nltk.corpus import webtext
for fileid in webtext.fileids():
    print fileid

'''即时消息聊天会话语料库'''
from nltk.corpus import nps_chat
chatroom =nps_chat.posts('10-19-20s_706posts.xml')
chatroom[123]

'''2、布朗语料库
布朗语料库是第一个百万词级的英语电子语料库的,
由布朗大学于 1961 年创建。这个语料库包含 500 个不同来源的文本,
按照文体分类,如:新闻、社论等。'''


'''3、路透社语料库
路透社语料库包含 10,788 个新闻文档,共计 130 万字。这些文档分成 90 个主题,
按照“训练”和“测试”分为两组。与布朗语料库不同,路透社语料库的类别是有互相重叠的,
只是因为新闻报道往往涉及多个主题。我们可以查找由一个或多个文档涵盖的主题,
也可以查找包含在一个或多个类别中的文档。
'''


'''4、就职演说语料库
实际上是 55 个文本的集合,每个文本都是一个总统的演说。这个集合的一个有趣特性是它的时间维度。'''

'''5标注文本语料库
NLTK 包含多国语言语料库。“世界人权宣言” (udhr )语料库中不同语言版本中的字长差异。
NLTK 语料库阅读器支持高效的访问大量语料库,并且能用于处理新的语料库。NLTK 中定义的基本语料库函数。'''

'''6 载入你自己的语料库
(1) 将变量corpus_root的值设置为自己的语料的文件夹目录

(2) PlaintextCorpusReader 初始化函数的第二个参数可以是需要加载的文件,可以使用正则表达式

(3) CropsBPCRTest导入txt一类的数据很顺利,但是BracketParseCorpusReader载入宾州树库的实验是失败的,
我看了自己的宾州树库语料库与书中描述的不一致但是不应该啊,还没有找到原因,先留下这个悬案,待日后再审。'''

 测试代码2.0

#!/usr/python/bin
# Filename:NltkTest59,一些关于语料库使用的测试
import nltk
from nltk.corpus import brown
from nltk.corpus import reuters
from nltk.corpus import inaugural
from nltk.corpus import udhr
from nltk.corpus import BracketParseCorpusReader
from nltk.corpus import PlaintextCorpusReader

class NltkTest59:
    def __init__(self):
        print 'Initing...'
    #布朗语料库
    def BrownTest(self, genres, modals):
        '''来源于p59,对于不同问题的常用词统计的测试'''
        #词在各类别中的频率表
        cfd = nltk.ConditionalFreqDist( \
            (genre, word) \
            for genre in brown.categories() \
            for word in brown.words(categories=genre))
        cfd.tabulate(conditions=genres, samples=modals)
    #路透社语料库
    def ReutersTest(self):
        print reuters.fileids()   #所有测试文本和训练文本
        print reuters.categories()     #主题类别
        print reuters.categories('training/9865')  #一个文本所属多个主题类别
        print reuters.categories(['training/9865', 'training/9880'])#多个文本所属多个主题类别
        print reuters.fileids('barley')               #单个主题类别中的文本
        print reuters.fileids(['barley', 'corn'])       #多个主题类别中的文本
        print reuters.words('training/9865')[:14]        #单个文本中的片段词
        print reuters.words(['training/9865', 'training/9880'])  #多个文本中的词
        print reuters.words(categories='barley')                 #单个主题类别中的所有词
        print reuters.words(categories=['barley', 'corn'])

    def InauguralTest(self):
        '''运行会出错 '''
        cfd = nltk.ConditionalFreqDist( \
            (target, file[:4]) \
            for fileids in inaugural.fileids() \
            for w in inaugural.words(fileids) \
            for target in ['america', 'citizen'] \
            if w.lower().startswith(target))
        cfd.plot()
    #标注文本语料库,“世界人权宣言” (udhr )语料库
    #统计词在语料库中的频率分布
    def UdhrTest(self):
        languages = ['Chickasaw', 'English', 'German_Deutsch', \
                     'Greenlandic_Inuktikut', 'Hungarian_Magyar', 'Ibibio_Efik']
        cfd = nltk.ConditionalFreqDist( \
            (lang, len(word)) \
            for lang in languages \
            for word in udhr.words(lang + '-Latin1'))
        cfd.plot(cumulative=False)
        # cfd.plot(cumulative=True)

    #自定义预料库
    def CropsPCRTest(self):
        corpus_root = r'C:\corpora\udhr2'
        file_pattern = r'.*'
        encoding = 'utf-8'
        pcr = PlaintextCorpusReader(corpus_root, file_pattern)
        print pcr.fileids()
        print pcr.words('007.txt')

    def CropsBPCRTest(self):
        '''可耻的失败了,没法运行,可能是语料库版本问题,或者其他,待查'''
        corpus_root = r'C:\corpora\penntreebank\parsed'
        file_pattern = r'*.wsj'
        ptb = BracketParseCorpusReader(corpus_root, file_pattern)
        print ptb.fileids()
        print len(ptb.sents())
        ptb.sents(fileids='\wsj_0001.mrg')[19]

nt59 = NltkTest59()
genres = ['news', 'religion', 'hobbies', 'science_fiction', 'romance', 'humor']
modals = ['can', 'could', 'may', 'might', 'must', 'will']
# nt59.BrownTest(genres,modals)      #词在不同域中出现的次数 (布朗语料库)
# nt59.ReutersTest()                  #(路透社语料库)
# nt59.InauguralTest()      # 不能运行,因为存在SOAP版本错误,不急着解决,以后再补一个解决方案
nt59.UdhrTest()
# nt59.CropsPCRTest()
# nt59.CropsBPCRTest()

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值