Я не думаю, что nltk в первую очередь поддерживает арабский язык, поэтому sent_tokenize
не будет работать должным образом.Если вы посмотрите на исходный код , вы увидите, что по умолчанию используется английский, если язык не указан.
В вашем примере кода неверный отступ.
Следующая функцияимена должны начинаться со строчной буквы, только классы должны иметь заглавные имена.См. PEP 8 - Руководство по стилю для кода Python
Ваш print(sent.encode('utf-8'))
- это то, что вызывает вывод консоли.То, что вы видите, является байтовой версией любой строки, которую sent_tokenize
считает предложением.См. Документацию для str.encode()
.Если вы хотите, чтобы это выглядело "нормально", просто сделайте print(sent)
.
Наконец, я не вижу причины писать в csv, если вы хотите вывести текст в файл, вы можете просто сделать
with open('Output_AR.txt', 'w', encoding='utf-8') as f:
for sent in sent_tokenize(sentences):
f.write(sent)
Или просто записать все строки в файл одновременно, вот так:
with open('Output_AR.txt', 'w', encoding='utf-8') as f:
f.writelines(sent_tokenize(sentences))
Я не совсем понимаю, что вы пытаетесь сделать с NewCount
(и это должноможно переименовать в нижний регистр), но вы можете просто
with open('Output_AR.txt', 'w', encoding='utf-8') as f:
for i, sent in enumerate(sent_tokenize(sentences)):
f.write(f"{i} {sent}")
, если хотите включить номер предложения (как, по-вашему, вы делаете?).
Скорее всего, что вы хотите сделатьне будет работать (должным образом), хотя, потому что nltk не поддерживает язык.Проверьте это, чтобы увидеть, поможет ли это вам: Python Arabic NLP