python處理中文與英文(python中英文字符和中文字符)

  • 1、如何用 Python 中的 NLTK 對中文進行分析和處理
  • 2、python 格式化帶中文等字符與純英文顯示串位的問題
  • 3、如何解決Python中文問題

最近正在用nltk 對中文網絡商品評論進行褒貶情感分類,計算評論的信息熵(entropy)、互信息(point mutual information)和困惑值(perplexity)等(不過這些概念我其實也還理解不深…只是nltk 提供了相應方法)。

我感覺用nltk 處理中文是完全可用的。其重點在於中文分詞和文本表達的形式。

中文和英文主要的不同之處是中文需要分詞。因為nltk 的處理粒度一般是詞,所以必須要先對文本進行分詞然後再用nltk 來處理(不需要用nltk 來做分詞,直接用分詞包就可以了。嚴重推薦結巴分詞,非常好用)。

中文分詞之後,文本就是一個由每個詞組成的長數組:[word1, word2, word3…… wordn]。之後就可以使用nltk 裏面的各種方法來處理這個文本了。比如用FreqDist 統計文本詞頻,用bigrams 把文本變成雙詞組的形式:[(word1, word2), (word2, word3), (word3, word4)……(wordn-1, wordn)]。

再之後就可以用這些來計算文本詞語的信息熵、互信息等。

再之後可以用這些來選擇機器學習的特徵,構建分類器,對文本進行分類(商品評論是由多個獨立評論組成的多維數組,網上有很多情感分類的實現例子用的就是nltk 中的商品評論語料庫,不過是英文的。但整個思想是可以一致的)。

另外還有一個困擾很多人的Python 中文編碼問題。多次失敗後我總結出一些經驗。

Python 解決中文編碼問題基本可以用以下邏輯:

utf8(輸入) —— unicode(處理) —— (輸出)utf8

Python 裏面處理的字符都是都是unicode 編碼,因此解決編碼問題的方法是把輸入的文本(無論是什麼編碼)解碼為(decode)unicode編碼,然後輸出時再編碼(encode)成所需編碼。

由於處理的一般為txt 文檔,所以最簡單的方法,是把txt 文檔另存為utf-8 編碼,然後使用Python 處理的時候解碼為unicode(sometexts.decode(‘utf8’)),輸出結果回txt 的時候再編碼成utf8(直接用str() 函數就可以了)。

對字符串中的每個字符判斷一下是不是ascii碼就是了,如果不是很大量的數據,效率也還好啦,

像這樣的用string.rjust string.ljust比較好吧

python的中文問題一直是困擾新手的頭疼問題,Python的發行版至今尚未包括任何中文支持模塊。當然,幾乎可以確定的是,在將來的版本中,python會徹底解決此問題,不用我們這麼麻煩了。 筆者使用的是2.5版本。Python的版本可以通過調用sys模塊的sys.version查看。在幾個月的學習中,主要遇到以下問題:

1. print打印中文的問題:

在編輯器中輸入一段測試代碼:

s=』測試』

print s

運行結果如下:

Non-ASCII character ‘\xb2’ in file c:\Documents and Settings\Administrator\桌面\2.py on line 1, but no encoding declared; see for details: 2.py, line 1, pos 0

原因是如果文件里有非ASCII字符,需要指定編碼聲明。把2.py文件的編碼重新改為utf-8,並加上編碼聲明:

# -*- coding: utf-8 -*-

s=』測試』

print s

運行後可以正確打印中文。

2.中文路徑的問題。

在D盤下保存一個名字為『中文.txt『的文件。運行如下測試代碼:

# -*- coding: utf-8 -*-

f=open(‘D:\\中文.txt’, ‘r’)

print f.read()

運行結果如下:

IOError: [Errno 2] No such file or directory: ‘D:\\\xe4\xb8\xad\xe6\x96\x87.txt’

字符串有很多的編碼,不同的系統和平台有各自的編碼 ,為了實現系統或平台之間的信息交互可能需要編碼轉換。這裡只需要先使用UNICODE編碼一下,這樣再讀取中文路徑就不會有問題了:

複製代碼

# -*- coding: utf-8 -*-

path=’D:\\中文.txt’

spath=unicode(path , “utf8”)

f=open(spath,’r’)

print f.read()

複製代碼

然後就可以正確顯示文件內容

總結:

所有的中文顯示問題都可以歸結為編碼問題,遇到其他類似的問題,那隻能仔細看文檔,靠你的經驗,靠你多做測試。而且根據python所報出來的錯誤一般也可以判斷出來。那麼當發現需要編碼轉換時,剩下的就是如何正確進行碼制轉換。

為了正確處理多語言文本,Python在2.0版後引入了Unicode字符串。從那時起,Python語言中的字符串就分為兩種:一種是2.0版之前就已經使用很久的傳統Python字符串,一種則是新的Unicode字符串。在Python語言中,一般的解決辦法是使用unicode()內建函數對一個傳統Python字符串進行「解碼」,得到一個Unicode字符串,然後又通過Unicode字符串的encode()方法對這個Unicode字符串進行「編碼」,將其「編碼」成為傳統Python字符串。

原創文章,作者:BPSXD,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/126290.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BPSXD的頭像BPSXD
上一篇 2024-10-03 23:07
下一篇 2024-10-03 23:07

相關推薦

  • 英語年齡用連字符號(Hyphenation for English Age)

    英語年齡通常使用連字符號表示,比如 “five-year-old boy”。本文將從多個方面探討英語年齡的連字符使用問題。 一、英語年齡的表達方式 英語中表…

    編程 2025-04-29
  • Python字符轉列表指南

    Python是一個極為流行的腳本語言,在數據處理、數據分析、人工智能等領域廣泛應用。在很多場景下需要將字符串轉換為列表,以便於操作和處理,本篇文章將從多個方面對Python字符轉列…

    編程 2025-04-29
  • 如何切分英文

    切分英文是自然語言處理中的一個重要步驟,它包括將一段英文文本劃分成若干個單詞和標點符號。如何準確地切分英文對於後續的文本處理任務具有決定性的影響,因此切分英文也成為了自然語言處理領…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Python讀取中文

    Python是一種高級編程語言,被廣泛地應用於各種領域中。而處理中文數據也是其中重要的一部分。本文將介紹在Python中如何讀取中文,為大家提供指導和幫助。 一、讀取中文文件 在P…

    編程 2025-04-29
  • jQuery Datatable分頁中文

    jQuery Datatable是一個非常流行的數據表插件,它可以幫助您快速地在頁面上創建搜索、過濾、排序和分頁的數據表格。不過,它的默認設置是英文的,今天我們就來探討如何將jQu…

    編程 2025-04-29
  • 不懂英文可以學Python嗎

    答案是肯定的!Python是一門非常友好的編程語言,具有簡單易學的特點。相信只要您具備基本的計算機操作知識和一股學習的態度,就能夠輕鬆進入Python的世界。在本篇文章中,我們將從…

    編程 2025-04-29
  • Python計算中文字符個數

    本文將從多個方面對Python計算中文字符個數進行詳細的闡述,包括字符串長度計算、正則表達式統計和模塊使用方法等內容。 一、字符串長度計算 在Python中,計算字符串長度是非常容…

    編程 2025-04-29
  • Gogs倉庫名為什麼必須是英文?

    對於使用Gogs進行代碼管理的開發者來說,他們可能已經發現Gogs倉庫名需要使用英文命名。這是為什麼呢?下面我們將分別從歷史原因、技術原因、國際化考慮三個方面進行詳細闡述。 一、歷…

    編程 2025-04-29
  • Python中如何判斷字符為數字

    判斷字符是否為數字是Python編程中常見的需求,本文將從多個方面詳細闡述如何使用Python進行字符判斷。 一、isdigit()函數判斷字符是否為數字 Python中可以使用i…

    編程 2025-04-29

發表回復

登錄後才能評論