首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于印度语言的NLTK CorpusReader

用于印度语言的NLTK CorpusReader
EN

Stack Overflow用户
提问于 2017-12-12 21:18:54
回答 1查看 935关注 0票数 1

试图让NLTK对从印度政府研究网站下载的旁遮普语语料库进行分析,脚本是Gurmikhi。我的主要目标是获得整个语料库上的词频分布,所以这里的目标是对所有单词进行标记化。

我的问题似乎是NLTK是如何读取文本的,因为当我使用Python的内置方法时:

代码语言:javascript
复制
    with open("./Punjabi_Corpora/Panjabi_Monolingual_TextCorpus_Sample.txt", "r") as f:
        lines = [line for line in f]
        fulltxt = "".join(lines)
        print(fulltxt.split)

结果(不完美,但可行):

代码语言:javascript
复制
    ['\ufeffਜਤਿੰਦਰ', 'ਸਾਬੀ', 'ਜਲੰਧਰ,', '10', 'ਜਨਵਰੀ-ਦੇਸ਼-ਵਿਦੇਸ਼', 'ਦੇ',...]

但是,在使用NLTK时,如下所示:

代码语言:javascript
复制
    from nltk.corpus import PlaintextCorpusReader
    corpus_root = "./Punjabi_Corpora"
    corpus = PlaintextCorpusReader(corpus_root,"Panjabi Monolingual_TextCorpus_Sample.txt")
    corpus.words('Panjabi_Monolingual_TextCorpus_Sample.txt')

我得到了以下信息

代码语言:javascript
复制
    ['ਜਤ', 'ਿੰ', 'ਦਰ', 'ਸ', 'ਾ', 'ਬ', 'ੀ', 'ਜਲ', 'ੰ', 'ਧਰ', ...]

在这里,NLTK认为每个字符的字形都是一个完整的单词,我猜它的印度文字知识还不是很清楚:)

根据NLTK文档我可以推测,这个问题与Unicode编码有关,似乎文件和NLTK之间存在一些不一致……我一直在尽我所能修修补补和谷歌搜索,结果碰壁了。任何想法都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-12 21:49:46

你是正确的。根据文档,PlainTextCorpusReader是为ascii输入设置的阅读器。因此,它无法正常工作也就不足为奇了。

我在这个问题上不是专家,但我尝试使用IndianCorpusReader代替您的数据集,它似乎起作用了:

代码语言:javascript
复制
from nltk.corpus import IndianCorpusReader
corpus = IndianCorpusReader("./Punjabi_Corpora", "Panjabi Monolingual_TextCorpus_Sample.txt")
print(corpus.words('Panjabi Monolingual_TextCorpus_Sample.txt'))

和输出:

代码语言:javascript
复制
['ਜਤਿੰਦਰ', 'ਸਾਬੀ', 'ਜਲੰਧਰ', '10', 'ਜਨਵਰੀ-ਦੇਸ਼-ਵਿਦੇਸ਼', ...]

在Python 3上进行了测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47773666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档