自然语言处理 之 语料库相关(三)

来源:互联网 发布:蓝牙单片机 编辑:程序博客网 时间:2024/06/05 07:52

一:针对nltk语料库的相关处理函数

           1 、导入语料库的方法

        1)一步到位导入语料库 如:导入gutenberg的语料库

         nltk.corpus.gutenberg.fileids()

        2)为避免1)中的过场语句,可以分开导入,如下:

        from nltk.corpus import gutenberg

        读取文件:gutenberg.fileids()

        读取语料库中的单词:gutenberg.words()

       注意,这里读取语料库的词或者是文件名也好,最终返回的结果是列表的形式,如果想要使用之前我的博客 自然语言处理(1)中针对文本的相关函数呢,这里是不可以直接使用的,需要用函数nltk.Text()将读取的单词转换成文本。如下:

        import nltk
        from nltk.corpus import gutenberg
        gutenberg.fileids()
        words=nltk.Text(gutenberg.words('austen-emma.txt'))
        words.concordance('by')  #查询单词by

         2、针对对语料库的一些基本处理函数:查找文件、分类以及字词句等

        语料库中包含不同种类(category)、不同文件(fileids)的文本资源。在介绍nltk语料库之前,先对语料库的一些基本处理函数做一个简单的介绍。共17个函数,如下图:


             乍一看,似乎很难记忆,其实仔细分析就会很好记:

            针对语料库有不同文件和种类,怎么查找不同种类中下的件以及不同文件的指定分类,由此产生前4个函数;

            语料库即文章,是由字、词、句组成,针对如何查看整个语料库、指定文件以及指定分类中的字词句,由此产生中间9个函数;

            最后四个函数涉及到语料库所在文件的路径问题。

           注意:这里raw()函数是查看的语料库中的一个个字符,包括字母、空格以及标点符号。

示例:查找gutenberg中每个文件的字词句长度:

for file in gutenberg.fileids():
    #文件名的长度
    num_name=len(file)
    #每个file的字词句长度
    num_raw=len(gutenberg.raw(file))
    #每个file的词的长度
    num_words=len(gutenberg.words(file))
    #每个句子的长度
    num_sents=len(gutenberg.sents(file))

二、相关语料库:

       相关语料库有:古登堡语料库、布朗语料库、聊天文本语料库、路透社语料库、就职演讲语料库等。

       古登堡语料库:简单的文本集合,是离散的语料库。

       布朗语料库:将语料分成不同种类的形式。比如:新闻、宗教类等等。

       路透社语料库:一个语料库与多个种类是重叠的。

       就职演讲语料库是按照时间顺序分类的。

       利用条件词频分布可以查看不同种类中单词的使用情况,如下:

cfd=nltk.ConditionalFreqDist(
    (genre,word) 
    for genre in brown.categories()
                for word in brown.words(categories=genre))
genres=['news','religion','hobbies','science_fiction','romance','humor']
modal=['can','could','may','might','must','will']
cfd.tabulate(conditions=genres,samples=modal)

运行结果如下:


三、制作、加载自己的语料库

       该部分目前还没学,最终肯定是要回归到自己的语料库,所以以后要学。

阅读全文
0 0
原创粉丝点击