pythonnltk语义分析_如何⽤Python中的NLTK对中⽂进⾏分析
和处理?
最近正在⽤nltk 对中⽂⽹络商品评论进⾏褒贬情感分类,计算评论的信息熵(entropy)、互信息(point mutual information)和困惑值(perplexity)等(不过这些概念我其实也还理解不深...只是nltk 提供了相应⽅法)。
我感觉⽤nltk 处理中⽂是完全可⽤的。其重点在于中⽂分词和⽂本表达的形式。
python中文文档中⽂和英⽂主要的不同之处是中⽂需要分词。因为nltk 的处理粒度⼀般是词,所以必须要先对⽂本进⾏分词然后再⽤nltk 来处理(不需要⽤nltk 来做分词,直接⽤分词包就可以了。严重推荐结巴分词,⾮常好⽤)。
中⽂分词之后,⽂本就是⼀个由每个词组成的长数组:[word1, word2, word3…… wordn]。之后就可以使⽤nltk ⾥⾯的各种⽅法来处理这个⽂本了。⽐如⽤FreqDist 统计⽂本词频,⽤bigrams 把⽂本变成双词组的形式:[(word1, word2), (word2, word3), (word3,
word4)……(wordn-1, wordn)]。
再之后就可以⽤这些来计算⽂本词语的信息熵、互信息等。
再之后可以⽤这些来选择机器学习的特征,构建分类器,对⽂本进⾏分类(商品评论是由多个独⽴评论组成的多维数组,⽹上有很多情感分类的实现例⼦⽤的就是nltk 中的商品评论语料库,不过是英⽂的。但整个思想是可以⼀致的)。
另外还有⼀个困扰很多⼈的Python 中⽂编码问题。多次失败后我总结出⼀些经验。
Python 解决中⽂编码问题基本可以⽤以下逻辑:
utf8(输⼊) ——> unicode(处理) ——> (输出)utf8
Python ⾥⾯处理的字符都是都是unicode 编码,因此解决编码问题的⽅法是把输⼊的⽂本(⽆论是什么编码)解码为
(decode)unicode编码,然后输出时再编码(encode)成所需编码。
由于处理的⼀般为txt ⽂档,所以最简单的⽅法,是把txt ⽂档另存为utf-8 编码,然后使⽤Python 处理的时候解码为
unicode(sometexts.decode('utf8')),输出结果回txt 的时候再编码成utf8(直接⽤str() 函数就可以了)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。