如何用python中的nltk对中文进行分析和处理?

用nltk对自己的日记进行分析。得到以下结果(节选)’\xb8\xb0′, ‘\xe5\xbc\xba\xe8\xba’, ‘\xe5\xbd\xbc\xe5’, ‘\xb8\xb4’, ‘\xb8\x8a’, ‘\xb8\x8b’, ‘\xb8\x88’, ‘\xb8\x89’, ‘\xb8\x8e’, ‘\xb8\x8f’, ‘\xb8\x8d’, ‘\xb8\x82’, ‘\xb8\x83’, ‘\xb8\x80’, ‘\xb8\x81’, ‘\xb8\x87’, ‘tend’, ‘\xb8\x9a’,请问对于中文的自然语言分析,有哪些方法和工具可以推荐?回复内容:
最近正在用nltk 对中文网络商品评论进行褒贬情感分类,计算评论的信息熵(entropy)、互信息(point mutual information)和困惑值(perplexity)等(不过这些概念我其实也还理解不深…只是nltk 提供了相应方法)。我感觉用nltk 处理中文是完全可用的。其重点在于中文分词和文本表达的形式。中文和英文主要的不同之处是中文需要分词。因为nltk 的处理粒度一般是词,所以必须要先对文本进行分词然后再用nltk 来处理(不需要用nltk 来做分词,直接用分词包就可以了。严重推荐结巴分词,非常好用)。中文分词之后,文本就是一个由每个词组成的长数组:[word1, word2, word3…… wordn]。之后就可以使用nltk 里面的各种方法来处理这个文本了。比如用freqdist 统计文本词频,用bigrams 把文本变成双词组的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。再之后就可以用这些来计算文本词语的信息熵、互信息等。再之后可以用这些来选择机器学习的特征,构建分类器,对文本进行分类(商品评论是由多个独立评论组成的多维数组,网上有很多情感分类的实现例子用的就是nltk 中的商品评论语料库,不过是英文的。但整个思想是可以一致的)。另外还有一个困扰很多人的python 中文编码问题。多次失败后我总结出一些经验。python 解决中文编码问题基本可以用以下逻辑:utf8(输入) ——> unicode(处理) ——> (输出)utf8python 里面处理的字符都是都是unicode 编码,因此解决编码问题的方法是把输入的文本(无论是什么编码)解码为(decode)unicode编码,然后输出时再编码(encode)成所需编码。由于处理的一般为txt 文档,所以最简单的方法,是把txt 文档另存为utf-8 编码,然后使用python 处理的时候解码为unicode(sometexts.decode(‘utf8’)),输出结果回txt 的时候再编码成utf8(直接用str() 函数就可以了)。另外这篇文章也有很详细的讲到nltk 的中文应用,很值得参考:http://blog.csdn.net/huyoo/article/details/12188573
额,楼主遇到的只是编码的问题…有很多好用的中文处理包:jieba:可以用来做分词,词性标注,textrankhanlp:分词,命名实体识别,依存句法分析,还有fudannlp,nlpir个人觉得都比nltk好用~
中文分词用结巴就好了,我做了个小例子 nltk-比较中文文档相似度
你说这个跟nltk无关,换python3,就没有这些鬼了!中文还得utf8!大爱nltk!其它包,除了固定任务的,java就算了,
使用:text.decode(‘gbk’)分词:你找相应的中文分词包 https://github.com/fxsjy/jieba
因为nltk不能对中文进行分词的原因吧,最近也在学习这方面的东西,推荐一个工具中文處理工具,可以研究一下
我遇到同样的问题,在看《python自然语言处理》一书,成功加载自己的文档后,却看到里面的中文如你所示,应该是编码设置的问题,但是不知道该设置哪里。这方面的资料太少了

Posted in 未分类

发表评论