使用Python自然语言工具包阅读孟加拉语

bnl4lu3b  于 2023-04-28  发布在  Python
关注(0)|答案(2)|浏览(124)

我想在NLTK的CategorizedPlainCorpusReader中阅读孟加拉语文本。对于gedit文本编辑器中我的孟加拉语文本文件的此快照:

Sublime文本编辑器中的文件快照:

从快照中可以看出问题所在。问题是Unicode组合问题(虚线环是一个死的赠品)。下面是阅读文本的代码段:

>>> path = os.path.expanduser('~/nltk_data/corpora/Bangla')
>>> from nltk.corpus.reader import CategorizedPlaintextCorpusReader
>>> from nltk import RegexpTokenizer
>>> word_tokenize = RegexpTokenizer("[\w']+")
>>> reader = CategorizedPlaintextCorpusReader(path,r'.*\.txt',cat_pattern=r'(.*)_.*',word_tokenizer=word_tokenize)
>>> reader.sents(categories='pos')

输出为:

输出应为“”而不是“”“”。我们能做些什么呢??先谢了。

eit6fx6z

eit6fx6z1#

您需要提供Bengali characters的Unicode范围。
使用

word_tokenize = RegexpTokenizer("[\u0980-\u09FF']+")

撇号可以按原样保留在字符类中。

t5fffqht

t5fffqht2#

下面的代码对我来说很好:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from nltk.corpus.reader import CategorizedPlaintextCorpusReader
from nltk import RegexpTokenizer

path = os.path.expanduser('~/nltk_data/corpora/Bangla')    
word_tokenize = RegexpTokenizer("[\u0980-\u09FF']+")
reader = CategorizedPlaintextCorpusReader(path, r'.*\.txt', cat_pattern=r'(.*)_.*', word_tokenizer=word_tokenize)
reader.sents(categories='pos')

相关问题