nltk 阿拉伯语文本输出断开连接

一种

我一直在尝试编写用于拆分句子的代码。它在英语和其他从左到右的拉丁字母语言中效果很好。当我尝试用阿拉伯语做同样的事情时,文本出现完全断开连接,就像每个字母单独一样。我不确定问题是什么。

我的输入文本:

当世界想要交谈时,它会说 Unicode。立即注册参加将于 3 月在德国美因茨举行的第 10 届国际 Unicode 会议。会议将汇集来自互联网和 Unicode 行业各个领域的专家,在国际和地方层面,在现有系统中以及在计算机应用程序、字体、文本设计和多语言计算方面使用 Unicode 的方法将进行讨论。

我的代码:

# -*- coding: utf-8 -*-

import nltk
from nltk import sent_tokenize

import codecs
import csv

sentences = codecs.open('SampleArabic.txt', 'r', 'utf-8-sig').read()

def split_sentences(sentences):
    with codecs.open('Output_AR.txt', 'w', encoding='utf-8') as writer:
        newcount = 0
        for sent in sent_tokenize(sentences):
            print(sent.encode('utf-8'))
            wr = csv.writer(writer,delimiter='\n')
            wr.writerow(str(sent))
            newcount = sentences.count(sentences)+newcount
        print(newcount)
    pass

split_sentences(sentences)

我的第一个问题是控制台在代码中打印文本:

b'\xd8\xb9\xd9\x86\xd8\xaf\xd9\x85\xd8\xa7 \xd9\x8a\xd8\xb1\xd9\x8a\xd8\xaf \xd8\xa7\xd9\x84\xd8\xb9\xd8\xa7\xd9\x84\xd9\x85 \xd8\xa3\xd9\x86 \xd9\x8a\xd8\xaa\xd9\x83\xd9\x84\xd9\x91\xd9\x85 \xe2\x80\xac \xd8\x8c \xd9\x81\xd9\x87\xd9\x88 \xd9\x8a\xd8\xaa\xd8\xad\xd8\xaf\xd9\x91\xd8\xab \xd8\xa8\xd9\x84\xd8\xba\xd8\xa9 \xd9\x8a\xd9\x88\xd9\x86\xd9\x8a\xd9\x83\xd9\x88\xd8\xaf.'
b'\xd8\xb3\xd8\xac\xd9\x91\xd9\x84 \xd8\xa7\xd9\x84\xd8\xa2\xd9\x86 \xd9\x84\xd8\xad\xd8\xb6\xd9\x88\xd8\xb1 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xaa\xd9\x85\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xa7\xd8\xb4\xd8\xb1 \xd9\x84\xd9\x8a\xd9\x88\xd9\x86\xd9\x8a\xd9\x83\xd9\x88\xd8\xaf\xd8\x8c \xd8\xa7\xd9\x84\xd8\xb0\xd9\x8a \xd8\xb3\xd9\x8a\xd8\xb9\xd9\x82\xd8\xaf \xd9\x81\xd9\x8a \xd8\xa2\xd8\xb0\xd8\xa7\xd8\xb1 \xd8\xa8\xd9\x85\xd8\xaf\xd9\x8a\xd9\x86\xd8\xa9 \xd9\x85\xd9\x8e\xd8\xa7\xd9\x8a\xd9\x90\xd9\x86\xd9\x92\xd8\xaa\xd9\x92\xd8\xb3\xd8\x8c \xd8\xa3\xd9\x84\xd9\x85\xd8\xa7\xd9\x86\xd9\x8a\xd8\xa7.'
b'\xd9\x88 \xd8\xb3\xd9\x8a\xd8\xac\xd9\x85\xd8\xb9 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xaa\xd9\x85\xd8\xb1 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xae\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xa1 \xd9\x85\xd9\x86 \xd9\x83\xd8\xa7\xd9\x81\xd8\xa9 \xd9\x82\xd8\xb7\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb5\xd9\x86\xd8\xa7\xd8\xb9\xd8\xa9 \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x86\xd8\xaa\xd8\xb1\xd9\x86\xd9\x8a\xd8\xaa \xd9\x88\xd9\x8a\xd9\x88\xd9\x86\xd9\x8a\xd9\x83\xd9\x88\xd8\xaf\xd8\x8c \xd8\xad\xd9\x8a\xd8\xab \xd8\xb3\xd8\xaa\xd8\xaa\xd9\x85\xd8\x8c \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb5\xd8\xb9\xd9\x8a\xd8\xaf\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84\xd9\x8a \xd9\x88\xd8\xa7\xd9\x84\xd9\x85\xd8\xad\xd9\x84\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xad\xd8\xaf \xd8\xb3\xd9\x88\xd8\xa7\xd8\xa1 \xd9\x85\xd9\x86\xd8\xa7\xd9\x82\xd8\xb4\xd8\xa9 \xd8\xb3\xd8\xa8\xd9\x84 \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xae\xd8\xaf\xd8\xa7\xd9\x85 \xd9\x8a\xd9\x88\xd9\x86\xd9\x83\xd9\x88\xd8\xaf \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x86\xd8\xb8\xd9\x85 \xd8\xa7\xd9\x84\xd9\x82\xd8\xa7\xd8\xa6\xd9\x85\xd8\xa9 \xd9\x88\xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd9\x8a\xd8\xae\xd8\xb5 \xd8\xa7\xd9\x84\xd8\xaa\xd8\xb7\xd8\xa8\xd9\x8a\xd9\x82\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xad\xd8\xa7\xd8\xb3\xd9\x88\xd8\xa8\xd9\x8a\xd8\xa9\xd8\x8c \xd8\xa7\xd9\x84\xd8\xae\xd8\xb7\xd9\x88\xd8\xb7\xd8\x8c \xd8\xaa\xd8\xb5\xd9\x85\xd9\x8a\xd9\x85 \xd8\xa7\xd9\x84\xd9\x86\xd8\xb5\xd9\x88\xd8\xb5 \xd9\x88\xd8\xa7\xd9\x84\xd8\xad\xd9\x88\xd8\xb3\xd8\xa8\xd8\xa9 \xd9\x85\xd8\xaa\xd8\xb9\xd8\xaf\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x84\xd8\xba\xd8\xa7\xd8\xaa.'
3

但我认为这是小问题。

正如我之前提到的,主要问题是输出文本文件的文本完全断开。

在记事本中它看起来像这样: https://i.stack.imgur.com/Fhmqh.png

在 NotePad++ 中,它看起来像这样: https://i.stack.imgur.com/gcA6z.png

我正在使用 Python 3.4。这只是我第二次尝试使用 Python。所以,我可能需要一些额外的细节。

洛姆楚尔

我认为 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 阿拉伯语 NLP

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python nltk 无法标记阿拉伯文本

来自分类Dev

使用R进行阿拉伯语文本挖掘

来自分类Dev

如何使用 PHP 阅读阿拉伯语文本

来自分类Dev

在MySQL数据库中存储波斯语\阿拉伯语文本

来自分类Dev

PostgreSQL数据库中的阿拉伯语和英语文本

来自分类Dev

用正则表达式匹配阿拉伯语文本

来自分类Dev

PostgreSQL数据库中的阿拉伯语和英语文本

来自分类Dev

如何使用 tm 包进行希伯来语或阿拉伯语文本分析

来自分类Dev

希伯来语、阿拉伯语、意第绪语文本在 PDFBox 2.0.5 中以相反的顺序书写

来自分类Dev

从对象填充的下拉列表中未正确显示波斯语/阿拉伯语文本

来自分类Dev

连接从左到右和从右到左的语言(阿拉伯语等)

来自分类Dev

UITextview显示文本阿拉伯语但数字英语

来自分类Dev

我想在一个文本框中输入英语并将阿拉伯语文本转换为另一种文本

来自分类Dev

为什么在TextBlock中向阿拉伯语/波斯语文本添加格式会破坏XAML中的字符组合

来自分类Dev

从数据库中读取阿拉伯语文本并以镶木地板格式存储在 s3 中

来自分类Dev

iOS阿拉伯语Pushnotification

来自分类Dev

iOS阿拉伯语Pushnotification

来自分类Dev

笔尖镜像阿拉伯语

来自分类Dev

Redis阿拉伯语解码

来自分类Dev

输出阿拉伯字母。

来自分类Dev

具有HttpServletResponse的UTF-8阿拉伯语截断输出

来自分类Dev

如何使用 ODBC 连接从 MSSQL 服务器获取阿拉伯语内容?

来自分类Dev

如何使我的编辑文本以编程方式使用阿拉伯语键盘?

来自分类Dev

如何正确地将阿拉伯语脚本插入Tkinter文本小部件?

来自分类Dev

从Java中的给定文本中提取阿拉伯语短语

来自分类Dev

将SQL Server文本从法语转换为阿拉伯语

来自分类Dev

Android RadioButton阿拉伯语(左侧文本)以编程方式

来自分类Dev

如何使我的编辑文本以编程方式使用阿拉伯语键盘?

来自分类Dev

如何从右到左更改特定列表项文本(例如阿拉伯语/希伯来语)?

Related 相关文章

  1. 1

    Python nltk 无法标记阿拉伯文本

  2. 2

    使用R进行阿拉伯语文本挖掘

  3. 3

    如何使用 PHP 阅读阿拉伯语文本

  4. 4

    在MySQL数据库中存储波斯语\阿拉伯语文本

  5. 5

    PostgreSQL数据库中的阿拉伯语和英语文本

  6. 6

    用正则表达式匹配阿拉伯语文本

  7. 7

    PostgreSQL数据库中的阿拉伯语和英语文本

  8. 8

    如何使用 tm 包进行希伯来语或阿拉伯语文本分析

  9. 9

    希伯来语、阿拉伯语、意第绪语文本在 PDFBox 2.0.5 中以相反的顺序书写

  10. 10

    从对象填充的下拉列表中未正确显示波斯语/阿拉伯语文本

  11. 11

    连接从左到右和从右到左的语言(阿拉伯语等)

  12. 12

    UITextview显示文本阿拉伯语但数字英语

  13. 13

    我想在一个文本框中输入英语并将阿拉伯语文本转换为另一种文本

  14. 14

    为什么在TextBlock中向阿拉伯语/波斯语文本添加格式会破坏XAML中的字符组合

  15. 15

    从数据库中读取阿拉伯语文本并以镶木地板格式存储在 s3 中

  16. 16

    iOS阿拉伯语Pushnotification

  17. 17

    iOS阿拉伯语Pushnotification

  18. 18

    笔尖镜像阿拉伯语

  19. 19

    Redis阿拉伯语解码

  20. 20

    输出阿拉伯字母。

  21. 21

    具有HttpServletResponse的UTF-8阿拉伯语截断输出

  22. 22

    如何使用 ODBC 连接从 MSSQL 服务器获取阿拉伯语内容?

  23. 23

    如何使我的编辑文本以编程方式使用阿拉伯语键盘?

  24. 24

    如何正确地将阿拉伯语脚本插入Tkinter文本小部件?

  25. 25

    从Java中的给定文本中提取阿拉伯语短语

  26. 26

    将SQL Server文本从法语转换为阿拉伯语

  27. 27

    Android RadioButton阿拉伯语(左侧文本)以编程方式

  28. 28

    如何使我的编辑文本以编程方式使用阿拉伯语键盘?

  29. 29

    如何从右到左更改特定列表项文本(例如阿拉伯语/希伯来语)?

热门标签

归档