python中文分句_python中文处理问题——分句 | 学步园

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值