• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于舞臺說明挖掘的亞線性角色網(wǎng)絡(luò)抽取方法

      2018-07-19 13:02:38李建敦羅宜元
      計算機工程與設(shè)計 2018年7期
      關(guān)鍵詞:語料庫舞臺算法

      李建敦,羅宜元,呂 品

      (上海電機學(xué)院 電子信息學(xué)院,上海 201306)

      0 引 言

      對于劇本中的角色網(wǎng)絡(luò)(character network)挖掘問題來講,角色發(fā)現(xiàn)較直觀,因此判定角色之間關(guān)聯(lián)與否及關(guān)聯(lián)強弱是關(guān)鍵[1]。鑒于語料庫的規(guī)模及其在行文風(fēng)格、所屬流派等方面的不確定性,致使裸眼分析、手工構(gòu)建、定性分析或純粹的語義類方案[2],如基于自然語言處理(na-tural language processing,NLP)[3]等算法,在可靠性、可擴展性與效率等方面表現(xiàn)不佳。相比之下,統(tǒng)計分析類方法在計算精度的保證下,算法效率更高。目前,主流的統(tǒng)計類方法基本上圍繞兩個指標(biāo)來刻畫角色關(guān)系,即引用距離與對白距離。

      角色引用距離類方法假設(shè),如果多個角色同時出現(xiàn)在一個時空內(nèi),如連續(xù)劇、劇本的連續(xù)幾幕、單獨場次、小說的章節(jié)或段落、預(yù)定義的文本窗口(寬度為閾值θ)等[4-7],那么他們兩兩之間就應(yīng)該有直接關(guān)系,權(quán)重為他們協(xié)同出現(xiàn)次數(shù)或引用距離的反比例函數(shù)[8,9]。此類方法對角色協(xié)同出現(xiàn)的時空采用閾值估計方法,精度無法保障;同時,協(xié)同在場的角色語義上并非一定有關(guān)系,因此該基本假設(shè)適用面有限;最后,連接也未能反映角色間的偏序關(guān)系。

      圍繞劇本的主體元素,即對白來刻畫角色間關(guān)系,較引用距離類方法更優(yōu)?;舅悸肥菍⑶昂笙嗬^對白的主體(即隸屬角色)進行有序關(guān)聯(lián)(who-talk-to-whom),其權(quán)重可以是對白規(guī)模(如行數(shù)、字數(shù)等)、對白中某角色被提及次數(shù)等[10,12]。該類方法實現(xiàn)了連接的有向性,而且圍繞劇本主體(平均占比>80%)的對白進行分析,較好提升了模型的可靠性與精度[13]。然而,相鄰對白并非一定有關(guān)系,且其偏序關(guān)系在非語義分析下較難確定,因此該類方法依然存在過度關(guān)聯(lián)的問題。再者,以提及某角色頻次為連接權(quán)重與實際往往并不相符,因為除了問候、命令等特殊場合外,社交場合中我們幾乎不會直呼對方姓名。

      通過上述分析發(fā)現(xiàn),無論是圍繞引用距離還是對白距離開展的角色網(wǎng)絡(luò)建模,都存在噪聲過多(引入過多冗余連接)、精度不高的問題。為此,圍繞劇本中廣泛存在但并不占主體地位的舞臺說明元素,以65部西方經(jīng)典戲劇為語料庫,本文提出了一種亞線性角色網(wǎng)絡(luò)抽取方法??傮w上,該方法綜合了上述兩個指標(biāo)的優(yōu)勢,并在精度與效率上有較大提升。具體來說,該方法通過解析舞臺說明文字來確定兩兩角色是否協(xié)同在場;另外,同時在場僅僅構(gòu)成了直接關(guān)系的必要條件,連接的最終生成還需來自對白上下文的舞臺說明來佐證。與全文掃描相比,該方法視對白段落為整體,僅僅針對劇本中的輔助文本,即舞臺說明,進行線性掃描,遍歷規(guī)模遠低于劇本長度N,因此是亞線性算法。

      1 數(shù)據(jù)集

      本文的語料庫由65部歐洲多幕劇構(gòu)成,出自3位不同時代的劇作家,即威廉·莎士比亞(William Shakespeare),亨利克·易卜生(Henrik Ibsen)與喬治·蕭伯納(George Bernard Shaw)。所有劇本數(shù)據(jù)均為HTML格式,來源于麻省理工大學(xué)在線經(jīng)典文獻項目(Internet Classic Archive)[14]與Gutenberg項目[15],劇本目錄詳見表1。下節(jié)將面向此數(shù)據(jù)集,進行角色網(wǎng)絡(luò)的深度高效挖掘。

      2 聚焦舞臺說明的角色網(wǎng)絡(luò)提取方法

      總體來講,本文主要面向劇本文本,特別是其中的舞臺說明部分進行統(tǒng)計分析。詳細地,該方法由預(yù)處理、識別角色與關(guān)聯(lián)角色3個步驟組成,重點是有向含權(quán)連接的建模。相關(guān)源代碼,參見作者在Github上發(fā)布的classicPlayParsing項目[16]。

      2.1 預(yù)處理

      鑒于語料庫中不同劇本在元素到樣式的映射上存在異構(gòu)性,從提高方法可擴展性的思路出發(fā),非常有必要對其進行標(biāo)準(zhǔn)化處理。本文關(guān)注3種元素,即角色(protagonists)、對白(dialogues)與舞臺說明(stage directions),而如何識別并標(biāo)記它們是預(yù)處理階段的主要工作。通過將異構(gòu)的HTML文件轉(zhuǎn)化為標(biāo)準(zhǔn)的XML文件格式,劇本元素就可以通過樣式來辨識(參見表2)。

      表1 語料庫詳情

      表2 語料庫詳情

      Algorithm I: 預(yù)處理與標(biāo)記

      Input:HF,LL,I,R,S

      Output:XF

      Begin:

      (1) ScanHFto initializell,i,rands;

      (2) Compare withLL,I,R,Sto identifyHF’s style;

      (3) For line inHF:

      (4) If this is a character line and ‘but’ in line:

      (5) Truncate words from ‘but’ to the end line;

      (6) Write line intoXF;

      End

      2.2 角色識別

      算法Ⅱ以標(biāo)準(zhǔn)文件XF為輸入,并通過搜索舞臺說明中的有向指示詞匯,完成含時舞臺的增量枚舉,從而將不定代詞解析為具體角色名。具體地,如果當(dāng)前為開場行(算法Ⅱ第2至4行),那么基于鍵值對新建一個含時舞臺對象,并將其置入順序舞臺列表DS中,表示在當(dāng)前行(時刻)舞臺為空;其中,臨時變量pre_stage(第(5)行)是角色子集,目的是為下一個含時舞臺對象提供基礎(chǔ)人物(第(7)、(18)行)。當(dāng)有角色登上舞臺(第(8)至(10)行)或退下舞臺(第(11)、(12)行)時,相應(yīng)地更新變量cur_stage。特別地,當(dāng)所有在場人物同時下場時,清空cur_stage,并將含時舞臺對象置入舞臺列表DS中(第(13)至(15)行)。在不同于pre_stage的情況下,第(16)至(18)行將追加至DS末,并更新pre_stage,為下一輪迭代做準(zhǔn)備。至此,我們已經(jīng)得到了舞臺在不同時刻的人物快照,角色行中的不定代詞也得以還原為實際人物(第(19)、(20)行)。最后,生成更新后的劇本RXF并返回含時舞臺列表DS。

      Algorithm Ⅱ: 含時舞臺迭代

      Input:XF

      Output:RXF,DS

      Begin:

      (1) Forln,line inXF:

      (2) If ‘Scene’ in line:

      (3) Append toDS;

      (4) pre_stage =Null;

      (5) temp = []

      (6) If this is a stage direction line:

      (7)cur_stage=pre_stage;

      (8) If ‘Enter’ in line:

      (9) Append followed characters to temp;

      (10) Append temp tocur_stage;

      (11) If ‘Exit’ in line:

      (12) Truncate characters fromcur_stage;

      (13) Elif ‘Exeunt’ in line:

      (14) Append to DS;

      (15)pre_stage=Null;

      (16) Ifpre_stage!=cur_stage:

      (17) Append to DS;

      (18)pre_stage=cur_stage;

      (19) If this is a character line:

      (20) Substitute indefinite pronouns with names;

      (21) write revision toRXF;

      (22) returnDS;

      End

      算法Ⅲ通過掃描改進標(biāo)準(zhǔn)版RXF中的角色行,生成了角色全集U。具體地,視行中角色數(shù)量來定,如果僅含有一個角色名,那么考慮直接添加至全集U(第(8)、(9)行),否則需要在拆分后再逐個考慮加入(第(3)至(7)行)。最后,U被返回以作后續(xù)之用。

      Algorithm III: 角色識別

      Input:RXF

      Output:CS

      Begin:

      (1) For line inRXF:

      (2) If this is a character line:

      (3) If it has multiple characters:

      (4) Split it into temp;

      (5) For t in temp:

      (6) If t not inCS:

      (7) Append character names toCS;

      (8) Elif line not inCS:

      (9) Append line toCS;

      (10) returnCS;

      End

      2.3 角色關(guān)聯(lián)

      為角色全集U中的節(jié)點添加有向含權(quán)連接,是生成角色網(wǎng)絡(luò)的最后一步,也是算法核心。為了有效克服對白距離類方法精度不足的問題,此處著力挖掘?qū)Π组g的指向關(guān)系,即誰對誰講的偏序關(guān)系。思路源于劇本中元素間的極端不平衡關(guān)系,即對白段落占比高、具有內(nèi)在指向性與語言異構(gòu)性,而舞臺說明元素圍繞對白展開,占比低卻具有鮮明的指向性。鑒于語料庫中劇本間的異構(gòu)特征,此處盡量不涉及對白文本的語義理解,僅圍繞對白的輔助部分,如舞臺說明、標(biāo)點符號等搜集角色間交流的偏序線索。

      (1)X∈DSs且Y∈DSs;

      (2)至少滿足以下一種情況:

      當(dāng)然,其中的方向性介詞“to”可替換為“toward(s)”,“address”,“tell” or “order”等同義詞。同時,我們也認識到,在不利用語義解析對白的情況下,僅依靠舞臺說明的指示來建立節(jié)點間聯(lián)系并不完備,故而此處引入問號做補充??紤]到反問句的可能性,我們將問號的優(yōu)先級降至最低。此外,X→Y的權(quán)重wXY也可以面向上述3種情況分別計算,其最大值為對白總行數(shù)t-s。

      Case 3:因為在此情境下沒有具體地“XtoY”或“toY”指示,因此權(quán)重直接取最大值t-s。

      連接X→Y的最終權(quán)重是針對X各對白分量上結(jié)果的積聚,并以劇本總行數(shù)為基進行歸一化(normalization)處理。至此,給定劇本的角色網(wǎng)絡(luò)已經(jīng)完成建模,具體見算法Ⅳ。

      算法Ⅳ以RXF為輸入,通過一次掃描實現(xiàn)含權(quán)連接集合(ES)的輸出。具體地,第(3)至(6)行定位Case 1情況下的對話雙方,并標(biāo)記當(dāng)前情境為Case 1。第(7)行至(12)行處理角色行,如果情境上下文為Case 3,那么直接將上段對白長度作為變量speaker至本角色間的權(quán)重,并更新spea-ker。第(13)至第(16)行處理對白首行,分別為Case 3與Case 1更新變量start3_line與start_line。第(17)行至第(24)行試圖枚舉Case 2,如果命中,那么結(jié)束上一個情境并將結(jié)果寫入ES(第(19)、(20)行),并更新相關(guān)變量為Case 2做準(zhǔn)備(第(21)-(24)行)。當(dāng)掃描至對白段末行(第(25)行),完成Case 1或Case 2情境并寫入ES(第(26)-(28)行);最后辨別結(jié)束標(biāo)點是否為問號,如果是,則設(shè)定當(dāng)前的情境為Case 3,并由下一次迭代在算法Ⅳ第(9)行處理完成。為了邏輯連貫性,算法Ⅳ并未考慮多角色同行情況,可用集合替換單個角色從而實現(xiàn)全覆蓋。

      Algorithm Ⅳ: 連接發(fā)現(xiàn)及其權(quán)重計算

      Input:RXF

      Output:ES

      Begin:

      (1)speaker=",listener=",case=0,line_count=0;

      (2) Forln,line inRXF:

      (3) If this is stage direction line and ‘to’ spotted:

      (4)speaker= character preceded to ‘to’;

      (5)listener= character succeeded to ‘to’;

      (6)case= 1;

      (7) Elif this is a character line:

      (8) Ifcase==3:

      (9) Write ‘speaker,line,end_line-start3_line’;

      (10)case=0;

      (11)q_line=end_line= 0;

      (12)speaker= line;

      (13) Elif this is the starting of a speech section:

      (14)start3_line=ln;// starting line for case-3

      (15) ifcase==1:

      (16)start_line=ln;

      (17) If this is one line of a speech section:

      (18) If an embedded direction with‘To’spotted:

      (19) Ifcase==1 orcase==2:

      (20) Write ‘speaker,listener,ln-start_line’;

      (21)case=2;

      (22)listener= character succeeded to ′To′;

      (23)start_line=ln;

      (24)q_line=ln;

      (25) If this is the end line of a speech section:

      (26) Ifcase==1 orcase==2:

      (27) Write ‘speaker,listener,ln-start_line’;

      (28)case=0;

      (29) Elif line end with ‘?’:

      (30)case=3;

      (31)end_line=ln;

      (32) returnES;

      End

      2.4 算法復(fù)雜性分析

      本節(jié)所述通過分析舞臺說明中的提示信息來建立角色網(wǎng)絡(luò)的方法,是輕量級的。雖然該方法的建立至少需要掃描劇本3次,即預(yù)處理、角色識別與角色關(guān)聯(lián),但是考慮到其關(guān)注核心并非劇本的主體——角色對白段落,而僅監(jiān)聽劇本的輔助元素,即舞臺說明、角色行與對白尾行,而這些輔助元素之和在劇本中的平均占比不足20%。因此本文所述方法是輕量級算法,屬于亞線性算法范疇,復(fù)雜度為o(N),其中N為劇本規(guī)模(如行數(shù))。

      3 實驗與討論

      面向65部西方經(jīng)典戲劇的劇本,基于Python(V2.7)對進行了實現(xiàn),其中的3個角色網(wǎng)絡(luò)(來自不同作家)如圖1所示。網(wǎng)絡(luò)節(jié)點代表劇中人物,連接表示直接對話關(guān)系,連接粗度表示關(guān)系親密度。比如從劇本Hamlet的角色網(wǎng)絡(luò)中不難發(fā)現(xiàn),王子Hamlet對Horatio講話最多,因此關(guān)系最密切(圖1)。

      在角色網(wǎng)絡(luò)生成基礎(chǔ)上,利用Gephi[17]對網(wǎng)絡(luò)進行了系統(tǒng)全面的分析,得出一系列統(tǒng)計量,比如平均路徑長度、聚類系數(shù)與度分布(詳見表3)。就節(jié)點的無權(quán)度分布而言,絕大多數(shù)角色網(wǎng)絡(luò)符合Zipf法則(呈L型),圖2 展示了其中的3個。在語料庫上的多次實驗結(jié)果顯示,網(wǎng)絡(luò)的平均度分布服從無標(biāo)度的冪律函數(shù)P(x)=k-r, 其中r≈2.87。

      聚焦經(jīng)典悲劇Hamlet,在其所對應(yīng)的無差別連接網(wǎng)絡(luò)中,有對白的角色共26名,由65條連接成為社交網(wǎng)絡(luò)。在平均度為2.5的情況下,其中19個節(jié)點的度不超過5.0,因此它是典型的“小世界”網(wǎng)絡(luò)。同時,與真實的社交網(wǎng)絡(luò)相似,該網(wǎng)絡(luò)圍繞個別“熱點”,如Hamlet、Horatio與國王,形成了廣泛分布的社團結(jié)構(gòu),參見圖1與表4。

      圖1 角色網(wǎng)絡(luò)示例:Hamlet(a)、A Doll’s House(b)、Heartbreak House(c)

      莎士比亞悲劇喜劇歷史劇易卜生蕭伯納節(jié)點數(shù)28.122.8235.813.2523.88連接數(shù)64.1607134.2575.38平均度2.232.711.973.023.5網(wǎng)絡(luò)直徑5.25.596.82.924.88網(wǎng)絡(luò)密度0.110.140.060.420.24模塊度0.310.350.460.070.23連通組件數(shù)2.01.352.03.924.94平均聚類系數(shù)0.250.280.240.560.47平均路徑長度2.372.522.91.592.13

      圖2 無差別度分布示例:Hamlet(a)、A Doll’sHouse(b)、Heartbreak House(c)

      屬性值節(jié)點數(shù)26連接數(shù)65平均度2.5網(wǎng)絡(luò)直徑4.0網(wǎng)絡(luò)密度0.14模塊度0.32連通組件數(shù)1.0平均聚類系數(shù)0.66平均路徑長度2.44

      結(jié)合角色網(wǎng)絡(luò)的建模結(jié)果與分析發(fā)現(xiàn),利用本文所提出的基于舞臺說明的抽取方法,能夠在有效降低噪聲的基礎(chǔ)上精準(zhǔn)地挖出劇本中的虛擬網(wǎng)絡(luò)。多次實驗下平均耗時<1.0 s,因此方法是高效的。

      4 結(jié)束語

      隨著計算語言學(xué)與數(shù)字人文研究的持續(xù)發(fā)展,展望未來我們期待網(wǎng)絡(luò)科學(xué)在其中繼續(xù)發(fā)揮更大的作用。比如給定一個語料庫,文學(xué)評論家僅需幾次鼠標(biāo)單擊,就可實現(xiàn)定量比較與實時分析,本文便是推動當(dāng)前研究向此方向發(fā)展的重要一步。

      面向由65部經(jīng)典多幕劇構(gòu)成的語料庫,圍繞劇本舞臺說明分析,抽象出含時舞臺的動態(tài)概念,并基于此給出了角色網(wǎng)絡(luò)建模的亞線性方法。與角色引用距離或?qū)Π拙嚯x類算法相比,降低了噪聲,提高了建模精度與收斂效率。同時,本文所述方法面向標(biāo)準(zhǔn)交換格式,并不局限于特定的戲劇作品,在對預(yù)處理做必要修改后,可以應(yīng)用于任何給定的英文劇本中,因而通用性較好。

      猜你喜歡
      語料庫舞臺算法
      軍迷大舞臺
      軍迷大舞臺
      《語料庫翻譯文體學(xué)》評介
      基于MapReduce的改進Eclat算法
      Travellng thg World Full—time for Rree
      進位加法的兩種算法
      把課文的優(yōu)美表達存進語料庫
      一種改進的整周模糊度去相關(guān)算法
      基于JAVAEE的維吾爾中介語語料庫開發(fā)與實現(xiàn)
      語言與翻譯(2015年4期)2015-07-18 11:07:45
      吧啦吧啦小舞臺
      好孩子畫報(2014年6期)2014-07-25 03:20:04
      天门市| 溧水县| 卢龙县| 永修县| 巴林左旗| 平定县| 渭源县| 泌阳县| 苗栗县| 湘西| 天柱县| 特克斯县| 九龙县| 碌曲县| 留坝县| 葫芦岛市| 德兴市| 泸定县| 凌源市| 洛浦县| 崇信县| 彭泽县| 东城区| 宁安市| 巴马| 呈贡县| 阳西县| 平舆县| 玉环县| 东至县| 宁武县| 米林县| 府谷县| 兰西县| 汉寿县| 桦川县| 鄂伦春自治旗| 潼关县| 凤庆县| 应城市| 永吉县|