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