ieba庫實(shí)現(xiàn)詞性標(biāo)注及小說人物角色抽取

Jieba庫實(shí)現(xiàn)詞性標(biāo)注及小說人物角色抽取

原創(chuàng):?HR和Python?大鄧和他的Python?今天

公眾號: 小葉葉學(xué)Python

4年人力資源從業(yè)經(jīng)驗(yàn),情報(bào)學(xué)碩士,主要內(nèi)容涵蓋python、數(shù)據(jù)分析和人力資源相關(guān)內(nèi)容

本文運(yùn)用自然語言處理技術(shù)稀拐,對中文小說《神雕俠侶》人物角色進(jìn)行抽取,為使用通過社會(huì)網(wǎng)絡(luò)分析法對人物關(guān)系進(jìn)行分析奠定基礎(chǔ),使文學(xué)研究者睬塌、社會(huì)學(xué)家和普通讀者對小說人物關(guān)系和背景有更全面的認(rèn)識

自然語言處理技術(shù)

自然語言處理(NLP)是一門融語言學(xué)、計(jì)算機(jī)科學(xué)歇万、數(shù)學(xué)于一體的科學(xué)揩晴。國外學(xué)者于20世紀(jì)40年代末至50年代初開始NLP相關(guān)的研究,近年來贪磺,隨著人工智能和計(jì)算機(jī)技術(shù)的發(fā)展硫兰,自然語言處理(NLP)已經(jīng)成為一個(gè)重要的人工智能發(fā)展方向,目前已廣泛的應(yīng)用于機(jī)器翻譯寒锚、問答系統(tǒng)劫映、文本分類、信息檢索刹前、自動(dòng)文本摘要等領(lǐng)域泳赋。中文的自然語言處理相對于英文還是有諸多差異的,英文是以空格來區(qū)分詞語腮郊,每一個(gè)單詞即是一個(gè)詞語摹蘑,而中文則是以字為字符單位,以詞語來表達(dá)意思轧飞,而且存在一詞多義衅鹿、多詞一義等情況,所以相對于英文來說过咬,中文的自然語言處理更為艱難大渤。分詞、詞性標(biāo)注掸绞、句法分析是中文自然語言處理的三大基本任務(wù)泵三,本文主要應(yīng)用分詞耕捞、詞性標(biāo)注兩類處理技術(shù)。

jieba庫基本介紹

jieba庫概述

jieba是優(yōu)秀的中文分詞第三方庫? 中文文本需要通過分詞獲得單個(gè)的詞語 jieba是優(yōu)秀的中文分詞第三方庫烫幕,需要額外安裝 jieba庫提供三種分詞模式俺抽,最簡單只需掌握一個(gè)函數(shù)

jieba分詞的原理

Jieba分詞依靠中文詞庫? 利用一個(gè)中文詞庫,確定漢字之間的關(guān)聯(lián)概率 漢字間概率大的組成詞組较曼,形成分詞結(jié)果 除了分詞磷斧,用戶還可以添加自定義的詞組

jieba庫的優(yōu)點(diǎn)

支持三種分詞模式:

精確模式,試圖將句子最精確地切開捷犹,適合文本分析弛饭;

全模式,把句子中所有的可以成詞的詞語都掃描出來, 速度非称记福快侣颂,但是不能解決歧義;

搜索引擎模式枪孩,在精確模式的基礎(chǔ)上憔晒,對長詞再次切分,提高召回率销凑,適合用于搜索引擎分詞丛晌。

安裝jieba:

命令行安裝方法

pip3 install jieba

jupyter notebook中的安裝方法

!pip3 install jieba

!pip3 install jieba

Requirement already satisfied: jieba in d:\ancanda3\lib\site-packages (0.39)

jieba庫常用函數(shù)

分詞

代碼功能

jieba.cut(s)精確模式,返回一個(gè)可迭代的數(shù)據(jù)類型

jieba.cut(s斗幼,cut_all=True)全模式澎蛛,輸出文本s中所有可能單詞

jieba.cut_for_search(s)搜索引擎模式,適合搜索建立索引的分詞

jieba.lcut(s)精確模式蜕窿,返回一個(gè)列表類型谋逻,常用

jieba.lcut(s,cut_all=True)全模式桐经,返回一個(gè)列表類型毁兆,常用

jieba.lcut_for_search(s)搜索引擎模式,返回一個(gè)列表類型阴挣,常用

jieba.add_word(w)向詞典中增加新詞

詞性標(biāo)注

Jieba0.39版本提供55種詞性標(biāo)注气堕,部分符號及含義如表1所示。由表1可知畔咧,人名被標(biāo)注為nr,因此對小說進(jìn)行分詞和詞性標(biāo)注后的文本進(jìn)行進(jìn)一步提取茎芭,提取出詞性為nr的詞作為人物角色名稱,即可構(gòu)建角色列表誓沸。

import jieba

text = '我來到北京清華大學(xué)'

wordlist = jieba.lcut(text)

wordlist

Building prefix dict from the default dictionary ...

Dumping model to file cache C:\Users\z\AppData\Local\Temp\jieba.cache

Loading model cost 1.717 seconds.

Prefix dict has been built succesfully.

['我', '來到', '北京', '清華大學(xué)']

jieba分詞的簡單應(yīng)用

使用 jieba 分詞對一個(gè)文本進(jìn)行分詞梅桩,統(tǒng)計(jì)長度大于2,出現(xiàn)次數(shù)最多的詞語拜隧,這里以《神雕俠侶》為例

import jieba

txt = open("神雕俠侶-網(wǎng)絡(luò)版.txt","r",encoding="utf-8").read()

words = jieba.lcut(txt)? ? # 使用精確模式對文本進(jìn)行分詞

counts = {}? ? # 通過鍵值對的形式存儲詞語及其出現(xiàn)的次數(shù)

for word in words:

? ? if len(word) == 1:? ? # 單個(gè)詞語不計(jì)算在內(nèi)

? ? ? ? continue

? ? else:

? ? ? ? counts[word] = counts.get(word, 0) + 1# 遍歷所有詞語宿百,每出現(xiàn)一次其對應(yīng)的值加 1

items = list(counts.items())

items.sort(key=lambda x: x[1], reverse=True)? ? # 根據(jù)詞語出現(xiàn)的次數(shù)進(jìn)行從大到小排序

for i in range(len(items)):

? ? word, count = items[i]

print("{0:<5}{1:>5}".format(word, count))

從小說中抽取出現(xiàn)的人名及次數(shù)

詞性標(biāo)注

Jieba0.39版本提供55種詞性標(biāo)注趁仙,部分符號及含義如表1所示。由表1可知垦页,人名被標(biāo)注為nr,因此對小說進(jìn)行分詞和詞性標(biāo)注后的文本進(jìn)行進(jìn)一步提取雀费,提取出詞性為nr的詞作為人物角色名稱,即可構(gòu)建角色列表外臂。

import jieba.posseg as psg

sent='中文分詞是文本處理不可或缺的一步坐儿!'

seg_list=psg.cut(sent)

for w in seg_list:

? ? if w.flag == "n":

? ? print(w.flag)

Building prefix dict from the default dictionary ...

Loading model from cache C:\Users\z\AppData\Local\Temp\jieba.cache

Loading model cost 1.535 seconds.

Prefix dict has been built succesfully.

n

n

jieba詞性標(biāo)注的簡單應(yīng)用

使用 jieba 分詞對一個(gè)文本進(jìn)行分詞及詞性標(biāo)注,統(tǒng)計(jì)詞性為nr宋光,出現(xiàn)次數(shù)最多的詞語,這里以《神雕俠侶》為例

import jieba

import jieba.posseg as psg

txt = open("神雕俠侶-網(wǎng)絡(luò)版.txt","r",encoding="utf-8").read()

words = psg.cut(txt)? ? # 使用精確模式對文本進(jìn)行分詞

counts = {}? ? # 通過鍵值對的形式存儲詞語及其出現(xiàn)的次數(shù)

for word in words:

? ? if len(word.word) == 1: # 單個(gè)詞語不計(jì)算在內(nèi)

? ? ? ? continue

? ? else:

? ? ? ? if word.flag == "nr":? ? # 僅統(tǒng)計(jì)詞性為nr的詞語

? ? ? ? ? ? counts[word] = counts.get(word, 0) + 1# 遍歷所有詞語炭菌,每出現(xiàn)一次其對應(yīng)的值加 1

items = list(counts.items())

items.sort(key=lambda x: x[1], reverse=True)? ? # 根據(jù)詞語出現(xiàn)的次數(shù)進(jìn)行從大到小排序

fi = open("人物角色提取.txt","w",encoding="utf-8")

for i in range(len(items)):

? ? word,pos = items[i][0]

? ? count = items[i][1]

? ? a = word + ","+ str(count)

? ? fi.write(a + "\n")

fi.close()

提取后的文件內(nèi)容如下圖所示

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罪佳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子黑低,更是在濱河造成了極大的恐慌赘艳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件克握,死亡現(xiàn)場離奇詭異蕾管,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)菩暗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門掰曾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人停团,你說我怎么就攤上這事旷坦。” “怎么了佑稠?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵秒梅,是天一觀的道長。 經(jīng)常有香客問我舌胶,道長捆蜀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任幔嫂,我火速辦了婚禮辆它,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘婉烟。我一直安慰自己娩井,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布似袁。 她就那樣靜靜地躺著洞辣,像睡著了一般咐刨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扬霜,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天定鸟,我揣著相機(jī)與錄音,去河邊找鬼著瓶。 笑死联予,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的材原。 我是一名探鬼主播沸久,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼余蟹!你這毒婦竟也來了卷胯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤威酒,失蹤者是張志新(化名)和其女友劉穎窑睁,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葵孤,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡担钮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尤仍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箫津。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吓著,靈堂內(nèi)的尸體忽然破棺而出鲤嫡,到底是詐尸還是另有隱情,我是刑警寧澤绑莺,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布暖眼,位于F島的核電站,受9級特大地震影響纺裁,放射性物質(zhì)發(fā)生泄漏诫肠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一欺缘、第九天 我趴在偏房一處隱蔽的房頂上張望栋豫。 院中可真熱鬧,春花似錦谚殊、人聲如沸丧鸯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丛肢。三九已至围肥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜂怎,已是汗流浹背穆刻。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杠步,地道東北人氢伟。 一個(gè)月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像幽歼,于是被迫代替她去往敵國和親朵锣。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

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

  • 前言 從本文開始试躏,我們進(jìn)入實(shí)戰(zhàn)部分猪勇。首先,我們按照中文自然語言處理流程的第一步獲取語料颠蕴,然后重點(diǎn)進(jìn)行中文分詞的學(xué)習(xí)...
    Element靜婷閱讀 872評論 0 0
  • 前言 從本文開始,我們進(jìn)入實(shí)戰(zhàn)部分助析。首先犀被,我們按照中文自然語言處理流程的第一步獲取語料,然后重點(diǎn)進(jìn)行中文分詞的學(xué)習(xí)...
    lanlantian123閱讀 5,328評論 0 2
  • 參考:Python 中文分詞組件 jiabaPython中文分詞 jieba 十五分鐘入門與進(jìn)階jieba完整文檔...
    領(lǐng)悟悟悟閱讀 4,290評論 1 1
  • 轉(zhuǎn)自 進(jìn)擊的Coder 公眾號 原理 中文分詞外冀,即 Chinese Word Segmentation寡键,即將一個(gè)漢...
    Epiphron閱讀 11,548評論 2 56
  • 在接下來的分詞練習(xí)中將使用到四川大學(xué)公共管理學(xué)院的一篇新聞進(jìn)行練習(xí),文本如下: 為貫徹落實(shí)黨的十九大精神雪隧,不斷提升...
    nicokani閱讀 1,224評論 0 4