AttributeError:'textChunker'对象没有属性'print_chunks'

问题描述 投票:0回答:1

当我运行以下代码时,它给我以下错误:

printchunks = text_Chunker.print_chunks(input_data,chunk_size)
AttributeError: 'textChunker' object has no attribute 'print_chunks'

为什么它给我这个错误?

这是我的代码。它有一个textChunker类,我在主函数中调用它。

为什么函数print_chunks没有定义?

import numpy as np
from nltk.corpus import brown

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

    def __init__(self, input_data='', chunk_size=0):

        self.input_data = input_data
        self.chunk_size = chunk_size

    def chunker(self,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

        def print_chunks(self,input_data,chunk_size):
            import chunker
            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])

if __name__=='__main__':

    input_data = ' '.join(brown.words()[:12000])
    chunk_size = 700

    text_Chunker=textChunker()
    printchunks =text_Chunker.print_chunks(input_data,chunk_size)
python python-3.x
1个回答
0
投票

你需要取消你的print_chunks函数,因此它与你在textChunker类中的其他函数一致。

编辑:除了unindentation(参见编辑历史)之外,其他编辑已被提问者使代码工作。

试试这个:

import numpy as np
from nltk.corpus import brown

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

    def __init__(self, input_data='', chunk_size=0):

        self.input_data = input_data
        self.chunk_size = chunk_size

    def chunker(self,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

    def print_chunks(self,input_data,chunk_size):
        import textChunker
        chunks = self.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])

if __name__=='__main__':

    input_data = ' '.join(brown.words()[:12000])
    chunk_size = 700

    text_Chunker=textChunker()
    printchunks =text_Chunker.print_chunks(input_data,chunk_size)
    print(sent_tokenize(input_data))
© www.soinside.com 2019 - 2024. All rights reserved.