中文文本的分詞囤耳、去標(biāo)點(diǎn)符號(hào)、去停用詞偶芍、詞性標(biāo)注

利用Python代碼實(shí)現(xiàn)中文文本的自然語(yǔ)言處理充择,包括分詞、去標(biāo)點(diǎn)符號(hào)匪蟀、去停用詞椎麦、詞性標(biāo)注&過(guò)濾。

在剛開始的每個(gè)模塊材彪,介紹它的實(shí)現(xiàn)观挎。最后會(huì)將整個(gè)文本處理過(guò)程封裝成 TextProcess 類。

頁(yè)面導(dǎo)航

結(jié)巴分詞

jieba 是比較好的中文分詞庫(kù)段化,在此之前嘁捷,需要 pip install jieba

結(jié)巴分詞有三種模式:

  • 全模式 :把句子中所有的可以成詞的詞語(yǔ)都掃描出來(lái)
jieba.cut(text, cut_all=True)
  • 精確模式 :將句子最精確地切開,適合文本分析
jieba.cut(text, cut_all=False)  # 默認(rèn)模式
  • 搜索引擎模式 :在精確模式的基礎(chǔ)上显熏,對(duì)長(zhǎng)詞再次切分雄嚣,適合用于搜索引擎分詞
jieba.cut_for_search(txt)

三種分詞效果如下圖所示:

想要進(jìn)一步了解 jieba 三種模式,請(qǐng)參考 jieba分詞 喘蟆。因?yàn)槲乙龅氖俏谋痉治龌荷赃x用的是默認(rèn)的精確模式。

對(duì)于一些詞蕴轨,比如“吃雞”港谊,jieba 往往會(huì)將它們分成 “吃” 和 “雞” ,但是又不太想讓它們分開橙弱,這該怎么做呢歧寺?這時(shí)候就需要加載自定義的詞典 dict.txt燥狰。建立該文檔,在其中加入“吃雞”成福,執(zhí)行以下代碼:

file_userDict = 'dict.txt'  # 自定義的詞典
jieba.load_userdict(file_userDict)

效果對(duì)比圖:


詞性標(biāo)注

在用 posseg 分詞后碾局,結(jié)果是一對(duì)值,包括 wordflag 奴艾,可以用 for 循環(huán)獲取。關(guān)于漢語(yǔ)詞性對(duì)照表内斯,請(qǐng)看 詞性標(biāo)注表

import jieba.posseg as pseg
sentence = "酒店就在海邊蕴潦,去鼓浪嶼很方便。"
words_pair = pseg.cut(sentence)
result = " ".join(["{0}/{1}".format(word, flag) for word, flag in words_pair])
print(result)

在這里插入圖片描述

在此基礎(chǔ)上俘闯,可以進(jìn)一步做詞性過(guò)濾潭苞,只保留特定詞性的詞。首先在 tag_filter 表明想要留下哪些詞真朗,接著對(duì)于詞性標(biāo)注后的句子中的每一個(gè)詞此疹,如果詞性符合,則加入到 list 中遮婶。在這里只保留了名詞和動(dòng)詞蝗碎。

import jieba.posseg as pseg
list = []
sentence = "人們寧愿去關(guān)心一個(gè)蹩腳電影演員的吃喝拉撒和雞毛蒜皮,而不愿了解一個(gè)普通人波濤洶涌的內(nèi)心世界"
tag_filter = ['n', 'v']  # 需要保留的詞性
seg_result = pseg.cut(sentence)  # 結(jié)果是一個(gè)pair旗扑,有flag和word兩種值
list.append([" ".join(s.word for s in seg_result if s.flag in tag_filter)])
print("詞性過(guò)濾完成")
print(list)

在這里插入圖片描述

去停用詞

去停用詞時(shí)蹦骑,首先要用到停用詞表,常見的有哈工大停用詞表 && 百度停用詞表臀防。

在去停用詞之前眠菇,首先要通過(guò) load_stopword( ) 方法來(lái)加載停用詞列表,接著按照上文所示袱衷,加載自定義詞典捎废,對(duì)句子進(jìn)行分詞,然后判斷分詞后的句子中的每一個(gè)詞致燥,是否在停用詞表內(nèi)登疗,如果不在,就把它加入 outstr篡悟,用空格來(lái)區(qū)分 谜叹。

import jieba

#  加載停用詞列表
def load_stopword():
    f_stop = open('hit_stopwords.txt', encoding='utf-8')  # 自己的中文停用詞表
    sw = [line.strip() for line in f_stop]  # strip() 方法用于移除字符串頭尾指定的字符(默認(rèn)為空格)
    f_stop.close()
    return sw

# 中文分詞并且去停用詞
def seg_word(sentence):
    file_userDict = 'dict.txt'  # 自定義的詞典
    jieba.load_userdict(file_userDict)

    sentence_seged = jieba.cut(sentence.strip())
    stopwords = load_stopword()
    outstr = ''
    for word in sentence_seged:
        if word not in stopwords:
            if word != '/t':
                outstr += word
                outstr += " "
    print(outstr)
    return outstr

if __name__ == '__main__':
    sentence = "人們寧愿去關(guān)心一個(gè)蹩腳電影演員的吃喝拉撒和雞毛蒜皮,而不愿了解一個(gè)普通人波濤洶涌的內(nèi)心世界"
    seg_word(sentence)

去標(biāo)點(diǎn)符號(hào)

導(dǎo)入 re 包搬葬,定義標(biāo)點(diǎn)符號(hào)荷腊,使用 sub( ) 方法將之替換。

import re

sentence = "+螞=蟻急凰!花!唄/期?免,息★.---《平凡的世界》:了*解一(#@)個(gè)“普通人”波濤洶涌的內(nèi)心世界女仰!"
sentenceClean = []
remove_chars = '[·’!"\#$%&\'()#2履辍()*+,-./:;<=>?\@,:?¥★疾忍、….>【】[]《》乔外?“”‘’\[\\]^_`{|}~]+'
string = re.sub(remove_chars, "", sentence)
sentenceClean.append(string)
print(sentence)
print(sentenceClean)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市一罩,隨后出現(xiàn)的幾起案子杨幼,更是在濱河造成了極大的恐慌,老刑警劉巖聂渊,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件差购,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡汉嗽,警方通過(guò)查閱死者的電腦和手機(jī)欲逃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)饼暑,“玉大人稳析,你說(shuō)我怎么就攤上這事」眩” “怎么了彰居?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)邪码。 經(jīng)常有香客問(wèn)我裕菠,道長(zhǎng),這世上最難降的妖魔是什么闭专? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任奴潘,我火速辦了婚禮,結(jié)果婚禮上影钉,老公的妹妹穿的比我還像新娘画髓。我一直安慰自己,他們只是感情好平委,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布奈虾。 她就那樣靜靜地躺著,像睡著了一般廉赔。 火紅的嫁衣襯著肌膚如雪肉微。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天蜡塌,我揣著相機(jī)與錄音碉纳,去河邊找鬼。 笑死馏艾,一個(gè)胖子當(dāng)著我的面吹牛劳曹,可吹牛的內(nèi)容都是我干的奴愉。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼铁孵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锭硼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蜕劝,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤檀头,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后熙宇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳖擒,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烫止,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戳稽。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馆蠕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惊奇,到底是詐尸還是另有隱情互躬,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布颂郎,位于F島的核電站吼渡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏乓序。R本人自食惡果不足惜寺酪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望替劈。 院中可真熱鬧寄雀,春花似錦、人聲如沸陨献。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)眨业。三九已至急膀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間龄捡,已是汗流浹背卓嫂。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留墅茉,地道東北人命黔。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓呜呐,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親悍募。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蘑辑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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