Python nltk载入自己的中文语料库的两种方法 for Windows7

前提:把自己的语料库(sogou文本分类语料库)放在LTK_DATA/corpora/目录下;
然后在命令行输入以下之后,即可看到所有的txt文件名列表了。

  • 第一种方法:BracketParseCorpusReader更适合已解析过的语料库
from nltk.corpus import BracketParseCorpusReader
corpus_root =r"F:\nltk_data\corpora\SogouC.reduced.20061127\SogouC.reduced\Reduced"  # r"" 防止转义
file_pattern = r".*/.*\.txt"    #匹配corpus_root目录下的所有子目录下的txt文件
ptb = BracketParseCorpusReader(corpus_root, file_pattern)   #初始化读取器:语料库目录和要加载文件的格式,默认utf8格式的编码
ptb.fileids()   #至此,可以看到目录下的所有文件名,例如C000008/1001.txt,则成功了
ptb.raw(“C000008/1001.txt”) # 如果C000008/1001.txt编码格式和ptb格式一致,则看到内容

得到文件的内容后,就可以分词处理了

import jieba
w = jieba.cut(ptb.raw(“C000008/1001.txt”)) #jieba分词工具对文本分词
wlst = list(w)      #得到分词列表
w1 = “ ”.join(w)    #得到空格划分的分词后文本字符串
  • 另一种方法:PlaintextCorpusReader更适合文本文件
from nltk.corpus import PlaintextCorpusReader
corpus_root = r"F:\nltk_data\corpora\SogouC.reduced.20061127\SogouC.reduced\Reduced"
file_pattern = r"1001\.txt"
wordlists = PlaintextCorpusReader(corpus_root, file_pattern)
wordlists.fileids()
wordlists.words("1001.txt")

问题1:下面的命令没办法成功执行?

len(ptb.sents())    #   由于没有sents预处理过,所有没有这个方法,不知道怎么设置??
ptb.sents(fileid='C000024/999.txt')[19] #同上

问题2:在BracketParseCorpusReadr加载中文txt文件时,如何解决gb2312编码问题?(不考虑手动更改文件编码格式前提下)

补充:
Python 解决中文编码问题基本可以用以下逻辑:
utf-8(输入) ——> unicode(处理) ——> (输出)utf-8

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值