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

问题描述 投票:0回答:2

我想在 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')

输出为:

输出应该是'একবার'而不是'একব''র'。可以做什么??提前致谢。

python nlp text-processing
2个回答
7
投票

您需要为孟加拉语字符提供Unicode范围。

使用

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

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


0
投票

以下代码对我来说很好用:

#!/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')
© www.soinside.com 2019 - 2024. All rights reserved.