python中文處理問題——分句

來源:互聯網
上載者:User

從普通檔案中例如txt中讀到的中文是使用gbk編碼的。但是我始終不知道decode('gbk')之後是什麼編碼。但是那種應該是某個unicode編碼.

我不知道有沒有好的處理方式。但是中文分詞要先分句。結果我使用string.maketrans()或者是re.sub()..都沒有起到將七七八八的符號轉換為空白格的效果。最後發現可能是由於編碼的問題。然後使用了笨方法來做分句,一個一個字元讀,讀到對應的就分句。另外注意這裡如果是gbk編碼一定要decode('gbk'),而且不能編碼成utf-8,也不能使用過去的gbk活著gb2312編碼。否則你分出來的句子就會有亂碼的問題。這個問題,我一直不明白為啥米。下面是:

def Cut(cutlist,lines):<br /> l = []<br /> line = []</p><p> for i in lines:<br /> if FindTok(cutlist,i):<br /> l.append("".join(line))<br /> l.append(i)<br /> line = []<br /> else:<br /> line.append(i)<br /> return l

 

然後以行讀檔案,在切分行為句。上面返回的結果中含有標點符號。標點符號單獨存。並且可能結果中包含空格。

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

大家要copy代碼的時候注意格式。反正不管怎麼說,總算把中文分句搞定了。大家可以根據自己的需要減少或者增加cutlist

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.