文本分块
文本数据经常需要被分成一小块来进行分析,这个过程称之为分块。这种技术在文本分析中使用频繁。使用文本分块的情况变化很多,各部相同,这依赖于手头的项目。文本分块与分词单词分词不同.分块,不受任何条件的限制,并且输出的结果是由意义的。
当我们处理大篇幅的文本文档时,将文本分块就显得很重要,这有利于提取有意义的信息。在这一节中,我们将弄明白怎样将输入的文本分成很多片。
创建一个新的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个字符