python中文处理问题——分句

从普通文件中例如txt中读到的中文是使用gbk编码的。但是我始终不知道decode(‘gbk’)之后是什么编码。但是那种应该是某个unicode编码.

我不知道有没有好的处理方式。但是中文分词要先分句。结果我使用string.maketrans()或者是re.sub()..都没有起到将七七八八的符号转换为空
格的效果。最后发现可能是由于编码的问题。然后使用了笨方法来做分句,一个一个字符读,读到对应的就分句。另外注意这里如果是gbk编码一定要decode(‘gbk
‘),而且不能编码成utf-8,也不能使用过去的gbk活着gb2312编码。否则你分出来的句子就会有乱码的问题。这个问题,我一直不明白为啥米。下面是:

1
2
3
4
5
6
7
8
9
10
11
12
def Cut(cutlist,lines):
l = []
line = []
for i in lines:
if FindTok(cutlist,i):
l.append("".join(line))
l.append(i)
line = []
else:
line.append(i)
return l

然后以行读文件,在切分行为句。上面返回的结果中含有标点符号。标点符号单独存。并且可能结果中包含空格。

1
2
3
4
5
6
7
8
cutlist = "[。,,!……!《》<>/"'::?/?、/|“”‘’;]{}(){}【】(){}():?!。,;、~——+%%`:“”"'‘/n/r".decode('gbk')
for lines in file(inputfilename):
l = Cut(list(cutlist),list(lines.decode('gbk')))
for line in l:
if line.strip() <> "":#这里可能包含空格
li = line.strip().split()
for sentence in li:
print "se:",sentence

大家要copy代码的时候注意格式。反正不管怎么说,总算把中文分句搞定了。大家可以根据自己的需要减少或者增加cutlist

  • 本文作者: 帐前卒
  • 本文链接: http://chillyc.info/2009/4141471/
  • 版权声明: 本博客所有文章除特别声明外,只能复制超链接地址,且必须注明出处!