NLP-CISUC / NLPyPort

MIT License
23 stars 15 forks source link

Encoding error #5

Open wallacemoraes opened 4 years ago

wallacemoraes commented 4 years ago

Oi, como vão?

Estou tentando fazer um teste com o projeto, mas não consigo processar o arquivo. Aparece o erro: UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 7897: character maps to Tentei o próprio arquivo de teste "Sample.txt", mas aparece o mesmo erro

Vocês pode ajudar, por favor? Existe alguma codificação específica? Tenho testado no Windows.

Com os melhores cumprimentos

jdportugal commented 4 years ago

Olá wallacemoraes, Eu ainda não experimentei correr num windows, mas em geral quando tive erros semelhantes devia-se à versão de python, o que está a usar?

Cumprimentos, João

wallacemoraes commented 4 years ago

Estou usando a 3.7, vou testar na 3.5

wallacemoraes commented 4 years ago

Eu não conseguiu rodar o programa no Windows, infelizmente. Todavia, eu fiz no Google Colab, e funcionou perfeitamente. Acho que precisa do Linux mesmo para rodar o programa.

Com os melhores cumprimento Wallace

ProfessorAlexandreSarquis commented 4 years ago

O erro pode ser uma questão de codificação. Tente carregar o arquivo com encoding="utf-8", porque 0x9d faz sentido nessa codificação.

gabrielaleon commented 4 years ago

Olá, tentei importar o arquivo usando o encoding ou só uma string teste='testando uma frase'. Porém, em ambas situações, o erro persiste. A forma que encontrei de corrigir foi alterar a função load do arquivo NLPyPort/NLPyPort/LemPyPort/rank/word_ranking.py Como no LINUX e MAC o encoding default é o 'utf-8' e pro WINDOWS não, é preciso colocar o encoding dentro da função. Fiz a alteração no meu computador, mas acho que é interessante fazer a correção aqui para que todas as instalações da biblioteca não tenham problema.

def load(self,input_file):
    rank = 0
    frequency = 0
    word = 0
    lineNumber = 0
    **with open(input_file,"r", encoding='utf-8') as f:**
        for line in f:
            line = line.strip()
            if(len(line)>0 and not (line[0]=="#")):
                if("\t" in line and (line.find("\t")+1<len(line))):
                    word = line[line.find("\t")+1:].replace("="," ")
                    frequency = line[0:line.find("\t")]
                    rank += 1
                    new_entry = word_list_entry(word,frequency,rank)
                    #new_entry.print_word_list_entry()
                    self.wordMap[word] = new_entry
                else:
                    break

segue erro:

UnicodeDecodeError Traceback (most recent call last)

in ----> 1 texto=new_full_pipe(text,options=options) 2 if(text!=0): 3 text.print_conll() ~\AppData\Local\Continuum\anaconda3\lib\site-packages\NLPyPort\FullPipeline.py in new_full_pipe(input_file, options, config_list) 429 debug_print("Lemmatizer is True") 430 if(options["pre-load"]==False): --> 431 lemas = lematizador_normal(tokens,tags) 432 text.set_lemas(lemas) 433 debug_print("Pre-load option set to False, Lemmas gotten") ~\AppData\Local\Continuum\anaconda3\lib\site-packages\NLPyPort\FullPipeline.py in lematizador_normal(tokens, tags) 129 mesmas = 0 130 alteradas = 0 --> 131 resultado = nlpyport_lematizer(tokens,tags,LemPort_config_file) 132 return resultado 133 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\NLPyPort\LemPyPort\LemFunctions.py in nlpyport_lematizer(token, tag, LemPort_config_file) 437 def nlpyport_lematizer(token,tag,LemPort_config_file): 438 get_paths_lematizador(LemPort_config_file) --> 439 adverb_norm,number_norm,superlative_norm,augmentative_norm,diminutive_norm,gender_norm,gender_name_norm,verb_norm,ranking,novo_dict = load_lematizador() 440 valor = [] 441 for i in range(len(token)): ~\AppData\Local\Continuum\anaconda3\lib\site-packages\NLPyPort\LemPyPort\LemFunctions.py in load_lematizador() 396 397 ranking = word_ranking() --> 398 ranking.load(ranking_path) 399 400 ~\AppData\Local\Continuum\anaconda3\lib\site-packages\NLPyPort\LemPyPort\rank\word_ranking.py in load(self, input_file) 10 lineNumber = 0 **11 ****with open(input_file,"r") as f: ---> 12 for line in f:** 13 line = line.strip() 14 if(len(line)>0 and not (line[0]=="#")):** ~\AppData\Local\Continuum\anaconda3\lib\encodings\cp1252.py in decode(self, input, final) 21 class IncrementalDecoder(codecs.IncrementalDecoder): 22 def decode(self, input, final=False): ---> 23 return codecs.charmap_decode(input,self.errors,decoding_table)[0] 24 25 class StreamWriter(Codec,codecs.StreamWriter):** UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 7897: character maps to