Python 中文分句

來源:互聯網
上載者:User

今天在某論壇中看到應用Python對中文進行分句的源碼(http://www.corpus4u.org/forum/showthread.php?s=86a8e08ccda003206c8f8d66c011df67&t=8662&page=2),原理很簡單,帖上來傳播一下。注釋是我自己加上去的。向原作者致謝!

# coding: utf-8 #設定分句的標誌符號;可以根據實際需要進行修改cutlist ="。!?".decode('utf-8')#檢查某字元是否分句標誌符號的函數;如果是,返回True,否則返回Falsedef FindToken(cutlist, char):    if char in cutlist:        return True    else:        return False #進行分句的核心函數    def Cut(cutlist,lines):          #參數1:引用分句標誌符;參數2:被分句的文本,為一行中文字元    l = []         #句子列表,用於儲存單個分句成功後的整句內容,為函數的傳回值    line = []    #臨時列表,用於儲存捕獲到分句標誌符之前的每個字元,一旦發現分句符號後,就會將其內容全部賦給l,然後就會被清空            for i in lines:         #對函數參數2中的每一字元逐個進行檢查 (本函數中,如果將if和else對換一下位置,會更好懂)        if FindToken(cutlist,i):       #如果當前字元是分句符號            line.append(i)          #將此字元放入臨時列表中            l.append(''.join(line))   #並把當前臨時列表的內容加入到句子列表中            line = []  #將符號列表清空,以便下次分句使用        else:         #如果當前字元不是分句符號,則將該字元直接放入臨時列表中            line.append(i)         return l #以下為調用上述函數實現從文字檔中讀取內容並進行分句。for lines in file("t.txt"):        l = Cut(list(cutlist),list(lines.decode('gbk')))         for line in l:         if line.strip() !="":                  li = line.strip().split()               for sentence in li:                print i,sentence

===================節操分隔線,以上為7月6日內容,以下為7月7日內容============================

不知何故,上述程式突然運行報錯,位於“ l = Cut(list(cutlist),list(lines.decode('gbk'))) ”:UnicodeDecodeError: 'gbk' codec can't decode bytes in position 8-9: illegal multibyte sequence。

這肯定又是編碼問題了!這是我目前最頭疼的一個問題。這與那個t.txt的編碼格式有關,之前是utf-8格式。經過多次嘗試發現,把該文字文件的編碼改為ANSI就又正常了。不懂,不理解,這東西吭爹!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.