分块是指将输入文本划分成片段, 它们基于任意随机条件. 这不同于在没有约束的意义上的标记化, 并且块根本不需要有意义. 这在文本分析过程中非常频繁地使用. 当您处理真正的大文本文档时, 您需要将其分成多个块进行进一步分析. 在这个食谱中, 我们将把输入文本分成多个部分, 每个部分有一个固定数量的单词.
怎么做...?
- 创建文件并导入需要的包:
from nltk.corpus import brown
- 我们定义一个函数来将文本分割成块. 第一步是根据空格划分文本:
def splitter(data, num_words):
words = data.split(' ')
output = []
cur_count = 0
cur_words = []
for word in words:
cur_words.append(word)
cur_count += 1
if cur_count == num_words:
output.append(' '.join(cur_words))
cur_words = []
cur_count = 0
output.append(' '.join(cur_words))
return output
- 我们现在可以定义主要主函数. 加载来自Brown语料库的数据. 我们将使用前10,000个单词:
if __name__ == '__main__':
# Read the data from the Brown corpus
data = ' '.join(brown.words()[:10000])
# Number of words in each chunk
num_words = 1700
chunks = []
counter = 0
text_chunks = splitter(data, num_words)
print ("Number of text chunks =", len(text_chunks))
- 运行这段代码后, 会在命令行输出结果: 6