這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Python中怎么實(shí)現(xiàn)文本數(shù)據(jù)預(yù)處理,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)公司2013年成立,先為瀘縣等服務(wù)建站,瀘縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為瀘縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
input_str = """ There are some people who think love is sex And marriage And six o'clock-kisses And children, And perhaps it is, Miss Lester. But do you know what I think? I think love is a touch and yet not a touch """ input_str = input_str.lower() print(input_str)
結(jié)果如下:
如果文本中的數(shù)字與文本分析無(wú)關(guān)的話,那就刪除這些數(shù)字。
import re input_str = 'Hello Python123 666 Hi jupyter notebook 1111' result = re.sub(r'\d+', '', input_str) print(result)
結(jié)果如下:
而在有些情況下,比如獲取的數(shù)據(jù)中,招聘崗位信息里薪資是 15K 這樣的,商品購(gòu)買信息里商品購(gòu)買人數(shù)是 8500+ 人購(gòu)買了此商品,這時(shí)我們需要從中提取出數(shù)字。
input_str = '薪資:15K 8500+人付款 3.0萬(wàn)+人付款' result = re.findall("-?\d+\.?\d*e?-?\d*?", input_str) print(result)
結(jié)果如下:
import re input_str = """This &is [an] example? \葉庭云<< 1""!。。;11???【】>>1 *yetingyun/p:?| {of} string. with.? punctuation!!!!""" s = re.sub(r'[^\w\s]', '', input_str) print(s)
結(jié)果如下:
可以看到文本中亂七八糟的符號(hào)都被濾除了,用正則表達(dá)式過(guò)濾文本中的標(biāo)點(diǎn)符號(hào),如果空白符也需要過(guò)濾,可以使用 r'[^\w]'。原理很簡(jiǎn)單:在正則表達(dá)式中,\w 匹配字母或數(shù)字或下劃線或漢字(具體與字符集有關(guān)),^\w表示相反匹配。
input_str = " \t yetingyun \t " input_str = input_str.strip() input_str
結(jié)果如下:
# 從Github下載停用詞數(shù)據(jù) https://github.com/zhousishuo/stopwords import jieba import re # 讀取用于測(cè)試的文本數(shù)據(jù) 用戶評(píng)論 with open('comments.txt') as f: data = f.read() # 文本預(yù)處理 去除一些無(wú)用的字符 只提取出中文出來(lái) new_data = re.findall('[\u4e00-\u9fa5]+', data, re.S) new_data = "/".join(new_data) # 文本分詞 精確模式 seg_list_exact = jieba.cut(new_data, cut_all=False) # 加載停用詞數(shù)據(jù) with open('stop_words.txt', encoding='utf-8') as f: # 獲取每一行的停用詞 添加進(jìn)集合 con = f.read().split('\n') stop_words = set() for i in con: stop_words.add(i) # 列表解析式 去除停用詞和單個(gè)詞 result_list = [word for word in seg_list_exact if word not in stop_words and len(word) > 1] result_list
結(jié)果如下:
首先讀取用于測(cè)試的文本數(shù)據(jù),該數(shù)據(jù)是爬取的商品評(píng)論,這一類數(shù)據(jù)通常有很多無(wú)意義的字詞和符號(hào),通過(guò)正則表達(dá)式濾除掉無(wú)用的符號(hào),只提取出中文出來(lái)。使用 jieba 庫(kù)進(jìn)行文本分詞,加載停用詞數(shù)據(jù)到集合,然后一行列表解析式濾除停用詞和單個(gè)詞,這樣效率很高。停用詞數(shù)據(jù)可以下載一些公開的,再根據(jù)實(shí)際文本處理需要,添加字詞語(yǔ)料進(jìn)去,使濾除效果更好。
Github下載停用詞數(shù)據(jù):https://github.com/zhousishuo/stopwords
SnowNLP是一個(gè) Python 寫的類庫(kù),可以方便的處理中文文本內(nèi)容,是受到了 TextBlob 的啟發(fā)而寫的,由于現(xiàn)在大部分的自然語(yǔ)言處理庫(kù)基本都是針對(duì)英文的,于是寫了一個(gè)方便處理中文的類庫(kù),并且和 TextBlob 不同的是,這里沒有用NLTK,所有的算法都是自己實(shí)現(xiàn)的,并且自帶了一些訓(xùn)練好的字典。注意本程序都是處理的 unicode 編碼,所以使用時(shí)請(qǐng)自行 decode 成 unicode 編碼。
使用 SnowNLP 處理中文文本數(shù)據(jù)非常方便,以詞性標(biāo)注和關(guān)鍵詞提取為例:
from snownlp import SnowNLP word = u'今天天氣好 這個(gè)姑娘真好看' s = SnowNLP(word) print(s.words) # 分詞 print(list(s.tags)) # 詞性標(biāo)注
from snownlp import SnowNLP text = u''' 自然語(yǔ)言處理是計(jì)算機(jī)科學(xué)領(lǐng)域與人工智能領(lǐng)域中的一個(gè)重要方向。 它研究能實(shí)現(xiàn)人與計(jì)算機(jī)之間用自然語(yǔ)言進(jìn)行有效通信的各種理論和方法。 自然語(yǔ)言處理是一門融語(yǔ)言學(xué)、計(jì)算機(jī)科學(xué)、數(shù)學(xué)于一體的科學(xué)。 因此,這一領(lǐng)域的研究將涉及自然語(yǔ)言,即人們?nèi)粘J褂玫恼Z(yǔ)言, 所以它與語(yǔ)言學(xué)的研究有著密切的聯(lián)系,但又有重要的區(qū)別。 自然語(yǔ)言處理并不是一般地研究自然語(yǔ)言, 而在于研制能有效地實(shí)現(xiàn)自然語(yǔ)言通信的計(jì)算機(jī)系統(tǒng), 特別是其中的軟件系統(tǒng)。因而它是計(jì)算機(jī)科學(xué)的一部分。 ''' s = SnowNLP(text) print(s.keywords(limit=6)) # 關(guān)鍵詞提取
上述就是小編為大家分享的Python中怎么實(shí)現(xiàn)文本數(shù)據(jù)預(yù)處理了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文名稱:Python中怎么實(shí)現(xiàn)文本數(shù)據(jù)預(yù)處理
標(biāo)題來(lái)源:http://m.newbst.com/article28/jeihjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站排名、網(wǎng)站設(shè)計(jì)、、網(wǎng)站制作、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)