人工智能:python 实现 第十章,NLP 第三天 文本分块

文本分块

文本数据经常需要被分成一小块来进行分析,这个过程称之为分块。这种技术在文本分析中使用频繁。使用文本分块的情况变化很多,各部相同,这依赖于手头的项目。文本分块与分词单词分词不同.分块,不受任何条件的限制,并且输出的结果是由意义的。

当我们处理大篇幅的文本文档时,将文本分块就显得很重要,这有利于提取有意义的信息。在这一节中,我们将弄明白怎样将输入的文本分成很多片。


创建一个新的python 文档 ,导入下列包:

import numpy as np

from nltk.corpus import brown

定义一个分块函数,第一个参数是文本,第二个参数是每一块的单词数量:

#Split the input text into chunks,where each chunk contains  N words

def chunker(input_data,N):
    input_words = input_data.split(' ')
    output=[]

`迭代是输入文本,并对文本进行分块:函数的返回一个list

 cur_chunk = []
    count = 0
    for word in input_words:
        cur_chunk.append(word)
        count+=1
        if count==N:
            output.append(' '.join(cur_chunk))
            count,cur_chunk =0,[]
    output.append(' '.join(cur_chunk))
    return output


定义主函数 并且读入布朗语料库的文本,我们将读入12000个单词。读入多少自己决定。

if __name__=='__main__':
    #从brown语料库中读入前12000单词
    input_data = ' '.join(brown.words()[:12000])


定义每块的单词数

chunk_size =700

分块和显示输出结果

  chunks =chunker(input_data,chunk_size)
    print('\nNumber of text chunks =',len(chunks),'\n')
    for i,chunk in enumerate(chunks):
        print('Chunk',i+1,'==>',chunk[:50])

import numpy as np 
from nltk.corpus import brown

#将输入的文本分块,每一块含有N个单词
def chunker(input_data,N):
    input_words = input_data.split(' ')
    output=[]
    cur_chunk = []
    count = 0
    for word in input_words:
        cur_chunk.append(word)
        count+=1
        if count==N:
            output.append(' '.join(cur_chunk))
            count,cur_chunk =0,[]
    output.append(' '.join(cur_chunk))

    return output

if __name__=='__main__':
    #从brown语料库中读入前12000单词
    input_data = ' '.join(brown.words()[:12000])
    #定义每块的大小
    chunk_size =700

    chunks =chunker(input_data,chunk_size)
    print('\nNumber of text chunks =',len(chunks),'\n')
    for i,chunk in enumerate(chunks):
        print('Chunk',i+1,'==>',chunk[:50])

运行的代码结果如下:


截图显示每个块显示了50个字符


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值