Обрабатывать строки юникода в python - PullRequest
1 голос
/ 13 апреля 2019

Я использую предварительно обученную модель быстрого текста на основе английской википедии. Работает как положено ...

https://github.com/shantanuo/pandas_examples/blob/master/nlp/fasttext_english.ipynb

Но когда я пытаюсь использовать тот же код на другом языке, я получаю сообщение об ошибке, как показано на этой странице ...

https://github.com/shantanuo/pandas_examples/blob/master/nlp/fasttext_marathi.ipynb

Ошибка связана с юникодом:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 15: invalid start byte

Я пытался открыть файл, используя опцию Raw Binary. Я изменил функцию load_words_raw в файле load.py:

with open(file_path, 'rb') as f:

А теперь я получаю другую ошибку:

ValueError: не удалось преобразовать строку в число с плавающей точкой: b '\ x00l \ x02'

Понятия не имею, как с этим справиться.

Ответы [ 3 ]

1 голос
/ 16 апреля 2019

байт 0x80 в позиции 15 . Существует вероятность того, что файл может быть закодирован в UTF-16. Попробуйте это:

with open(path, encoding='utf-16') as f:
   // your logic   

1 голос
/ 16 апреля 2019

Вам следует изменить вторую строку файла записной книжки на:

#!wget https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.mr.300.vec.gz

Итак, указывая на файл vec, а не на файл bin:

#!wget https://dl.fbaipublicfiles.com/fasttext/vectors-crawl/cc.mr.300.bin.gz
0 голосов
/ 14 апреля 2019

Попробуйте это:

data : str
with open('crawl-D.txt' ,'r', encoding='utf8') as file:
    data = file.read()

str будет содержать весь файл как string.

парсинг float с float().

...