TASK2

任務(wù)要求:

  • 基本文本處理技能:中英文字符串處理(刪除不相關(guān)的字符幌陕、去停用詞);分詞(結(jié)巴分詞)汽煮;詞搏熄、字符頻率統(tǒng)計。
  • 語言模型暇赤;unigram心例、bigramtrigram頻率統(tǒng)計鞋囊。
  • jiebe分詞介紹和使用
  1. 中英文字符串處理(刪除不相關(guān)的字符止后、去停用詞)
  • 以保留相關(guān)字符方式刪除不相關(guān)字符
    for text in data['text']:
        for uchar in text:
            # 判斷是否為漢字
            if uchar >= u'\u4e00' and uchar<=u'\u9fa5':
                continue
             # 判斷是否為數(shù)字
            if uchar >= u'\u0030' and uchar<=u'\u0039':    
                continue
            # 判斷是否為英文字母
            if (uchar >= u'\u0041' and uchar<=u'\u005a') or (uchar >= u'\u0061' and uchar<=u'\u007a'):     
                continue
            else:
                text = text.replace(uchar, '')
        content.append(text)
  • jieba分詞
        text_jieba = jieba.cut(text, cut_all=False)

cut_all 參數(shù)用來控制是否采用全模式

  • 去停用詞
    使用中文停用詞表
        for word in text_jieba:
            if word not in stop_words:
                text.append(word)
  1. 詞、字符頻率統(tǒng)計
def get_wordsCounter(data):
    all_content = []
    # 把所有的text放到一個list中
    for content in data:
        all_content.extend(content)
    # 對字符頻率統(tǒng)計
    counter = Counter(all_content)
    count_pairs = counter.most_common(VOCAB_SIZE - 1)
    
    words_counter = pd.DataFrame([i[0] for i in count_pairs], columns={'words'})
    words_counter['counter'] = [i[1] for i in count_pairs]
    return words_counter
  1. 語言模型

統(tǒng)計語言模型是一個單詞序列上的概率分布溜腐,對于一個給定長度為m的序列译株,它可以為整個序列產(chǎn)生一個概率,即想辦法找到一個概率分布挺益,它可以表示任意一個句子或序列出現(xiàn)的概率歉糜。

  • unigram

    一元文法模型——上下文無關(guān)模型
    該模型只考慮當(dāng)前詞本身出現(xiàn)的概率,而不考慮當(dāng)前詞的上下文環(huán)境望众。
    P(w_1, w_2,...,w_m)=P(w_1)*P(w_2)*...*P(w_m)
    每個句子出現(xiàn)的概率為每個單詞概率成績

  • N-gram
    依賴于上下文環(huán)境的詞的概率分布的統(tǒng)計計算機(jī)語言模型匪补。可以理解為當(dāng)前詞的概率與前面的n個詞有關(guān)系

    • bigram:當(dāng)N=2時稱為二元 bigram模型烂翰,當(dāng)前詞只與它前面的一個詞相關(guān)夯缺,這樣概率求解公式:
      P(w_1,w_2,...,w_m)=\prod_{i=1}^{m} P(w_i|w_{i-(n-1)},...,w_{i-1})=\prod_{i=1}^{m} P(w_i|w_{i-1})
    • trigram: 當(dāng)N=3時稱為三元trigram模型,同理當(dāng)前詞只與它前面的兩個詞相關(guān)

完整代碼

# -*- coding: utf-8 -*-
"""
Created on Mon May 13 13:49:10 2019

@author: pc
"""

import pandas as pd
import jieba
from collections import Counter

TRAIN_PATH = 'E:/task2/cnews.train.txt'
STOPWORDS_PATH = 'E:/task2/ChineseStopWords.txt'
VOCAB_SIZE = 5000

def read_file(file_name):
    '''
        讀文件
    '''
    file_path = {'train': TRAIN_PATH}
    contents = []
    labels = []
    with open(file_path[file_name], 'r', encoding='utf-8') as f:
        for line in f:
            try:
                labels.append(line.strip().split('\t')[0])
                contents.append(line.strip().split('\t')[1])
            except:
                pass
    data = pd.DataFrame()
    data['text'] = contents
    data['label'] = labels
    return data


def get_stopwordslist(path):
    stopwords = [line.strip() for line in open(path, 'r', encoding='utf-8').readlines()]  
    return stopwords          


def pre_data(data):
    content = []
    stop_words = get_stopwordslist(STOPWORDS_PATH)
    for text in data['text']:
        for uchar in text:
            # 判斷是否為漢字
            if uchar >= u'\u4e00' and uchar<=u'\u9fa5':
                continue
             # 判斷是否為數(shù)字
            if uchar >= u'\u0030' and uchar<=u'\u0039':    
                continue
            # 判斷是否為英文字母
            if (uchar >= u'\u0041' and uchar<=u'\u005a') or (uchar >= u'\u0061' and uchar<=u'\u007a'):     
                continue
            else:
                text = text.replace(uchar, '')
        # jieba分詞
        text_jieba = jieba.cut(text, cut_all=False)
        # 去停用詞
        text = []
        for word in text_jieba:
            if word not in stop_words:
                text.append(word)
        content.append(text)
    
    return content

def get_wordsCounter(data):
    '''
        詞甘耿,字符頻率統(tǒng)計
    '''
    all_content = []
    # 把所有的text放到一個list中
    for content in data:
        all_content.extend(content)
    # 對字符頻率統(tǒng)計
    counter = Counter(all_content)
    count_pairs = counter.most_common(VOCAB_SIZE - 1)
    
    words_counter = pd.DataFrame([i[0] for i in count_pairs], columns={'words'})
    words_counter['counter'] = [i[1] for i in count_pairs]
    return words_counter
        

train = read_file('train')
train = train.iloc[:100]
content = pre_data(train)
counter_words = get_wordsCounter(content)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踊兜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子棵里,更是在濱河造成了極大的恐慌润文,老刑警劉巖姐呐,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異典蝌,居然都是意外死亡曙砂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門骏掀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸠澈,“玉大人,你說我怎么就攤上這事截驮⌒Τ拢” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵葵袭,是天一觀的道長涵妥。 經(jīng)常有香客問我,道長坡锡,這世上最難降的妖魔是什么蓬网? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮鹉勒,結(jié)果婚禮上帆锋,老公的妹妹穿的比我還像新娘。我一直安慰自己禽额,他們只是感情好锯厢,可當(dāng)我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脯倒,像睡著了一般实辑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盔憨,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天徙菠,我揣著相機(jī)與錄音,去河邊找鬼郁岩。 笑死,一個胖子當(dāng)著我的面吹牛缺狠,可吹牛的內(nèi)容都是我干的问慎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挤茄,長吁一口氣:“原來是場噩夢啊……” “哼如叼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起穷劈,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笼恰,失蹤者是張志新(化名)和其女友劉穎踊沸,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體社证,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡逼龟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了追葡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腺律。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宜肉,靈堂內(nèi)的尸體忽然破棺而出匀钧,到底是詐尸還是另有隱情,我是刑警寧澤谬返,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布之斯,位于F島的核電站,受9級特大地震影響遣铝,放射性物質(zhì)發(fā)生泄漏吊圾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一翰蠢、第九天 我趴在偏房一處隱蔽的房頂上張望项乒。 院中可真熱鬧,春花似錦梁沧、人聲如沸檀何。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽频鉴。三九已至,卻和暖如春恋拍,著一層夾襖步出監(jiān)牢的瞬間垛孔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工施敢, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留周荐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓僵娃,卻偏偏與公主長得像概作,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子默怨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容