How to annotate in Chinese WordNet (CWN) - 中文詞彙網路 ...

文章推薦指數: 80 %
投票人數:10人

中文詞彙網路標記小實作 · 在cwn.lite計畫中,如何標記新的lemma以及相關features是重要的。

· 在此,我們利用cwn的資料以及Sean大神的程式碼來做一點cwn ... 在cwn.lite計畫中,如何標記新的lemma以及相關features是重要的。

在此,我們利用cwn的資料以及Sean大神的程式碼來做一點cwn標記的小實作,共分為基本graphquery以及annotation兩大部分。

I.CwnGraphQuery %load_extautoreload %autoreload2 importpickle fromCwnGraphimportCwnBase,CwnAnnotator fromCwnGraphimportCwnRelationType #loadincwndatabase cwn=CwnBase("data/cwn_graph.pyobj") #sensenode數目 len(cwn.V) 90780 查詢synset以及其sense:以「看」的synset為例 lemmas=cwn.find_lemma("看") print(lemmas) [,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,] 查詢synset以及其sense:以「看看_1」的sense為例 lemma0=lemmas[0] senses=lemma0.senses print(senses) [,,,,,,,,,] 查詢sense的例句和PoS senses[0].data() {'annot':{}, 'def':'用眼睛察覺,但限於不經意或時間短暫。

', 'examples':['欸欸欸,你,這我們的存款簿,怎麼好幾個月都沒存錢進去了?', '找本書,找一個山明水秀的地方,好好的輕鬆一下、靜一靜、書。

', '最近常經過這些擠滿人的書店,才鼓起勇氣不妨進去,為什麼那麼吸引人?', '天未明時,我走到屋外,抬頭天空,只見月兒彎彎,群星為伴,讓人感覺到那分寂靜之美。

', '廣場的對面是一個像高雄火車站那樣的建築物。

我車站的名字,那站名是我聞所未聞的。

'], 'node_type':'sense', 'pos':'VC'} 查詢synset以及其sense:查詢「看看_1」每個sense與其他lemma/sense的語意關係 forsense_xinsenses: print(sense_x) print(sense_x.relations) print("--") [('hypernym',),('hypernym',),('hypernym',),('hypernym',),('hypernym',),('hypernym',),('hyponym(rev)',),('hyponym(rev)',),('hyponym(rev)',)] -- [('synonym',),('varword',),('synonym',),('synonym',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',),('varword(rev)',)] -- [('synonym',),('synonym',),('synonym',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',)] -- [('synonym',),('synonym',),('synonym',),('synonym',),('synonym',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',)] -- [('synonym',),('synonym(rev)',)] -- [('synonym',),('synonym',),('synonym(rev)',),('synonym(rev)',)] -- [('synonym',),('synonym',),('synonym(rev)',),('synonym(rev)',)] -- [('synonym',),('synonym',),('synonym',),('synonym',),('synonym',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',),('synonym(rev)',)] -- [('hypernym',),('hyponym(rev)',)] -- [] -- II.Annotation annot=CwnAnnotator(cwn,"cwn_testing") 利用上述方式查詢lemma,若cwn內不存在該lemma,則可以直接新增lemma,sense以及其他相關資訊。

若已存在該lemma,那就直接新增相關資訊就好。

#發現lemma"五神無主"不存在並新增它 findlemma=cwn.find_lemma('五神無主') findlemma new_lemma=annot.create_lemma('五神無主') new_lemma #發現已存在的lemma「振奮」沒有任何sense,要新增一個sense my_lemmas=cwn.find_lemma("振奮") my_lemma=my_lemmas[0] print(my_lemma) print(my_lemma.senses) [] #Addzhuyin my_lemma.zhuyin="ㄓㄣˋㄈㄣˋ" annot.set_lemma(my_lemma) #Addsense my_sense=annot.create_sense("以特定事件鼓勵特定對象,使其增加該事件正面精神特質。

") my_sense #AddPoSandexample my_sense.pos="V" my_sense.examples=["謝總的鼓勵總是人心。

"] annot.set_sense(my_sense) #Seethestructure annot.V {'132394':{'annot':{}, 'lemma':'振奮', 'lemma_sno':1, 'node_type':'lemma', 'zhuyin':'ㄓㄣˋㄈㄣˋ'}, 'cwn_testing_000001':{'annot':{}, 'lemma':'五神無主', 'lemma_sno':1, 'node_type':'lemma', 'zhuyin':''}, 'cwn_testing_000002':{'annot':{}, 'def':'以特定事件鼓勵特定對象,使其增加該事件正面精神特質。

', 'examples':['謝總的鼓勵總是人心。

'], 'node_type':'sense', 'pos':'V'}, 'cwn_testing_000003':{'annot':{}, 'lemma':'五神無主', 'lemma_sno':1, 'node_type':'lemma', 'zhuyin':''}, 'cwn_testing_000004':{'annot':{}, 'def':'以特定事件鼓勵特定對象,使其增加該事件正面精神特質。

', 'examples':['謝總的鼓勵總是人心。

'], 'node_type':'sense', 'pos':'V'}, 'cwn_testing_000005':{'annot':{}, 'lemma':'五神無主', 'lemma_sno':1, 'node_type':'lemma', 'zhuyin':''}, 'cwn_testing_000006':{'annot':{}, 'def':'以特定事件鼓勵特定對象,使其增加該事件正面精神特質。

', 'examples':['謝總的鼓勵總是人心。

'], 'node_type':'sense', 'pos':'V'}} 連接senses之間的語意關係 #Lookintoaexistedsense my_lemmas_2=cwn.find_lemma("激") my_lemma_2=my_lemmas_2[4] my_lemma_2.senses[3] #create_relation(src_id,tgt_id,rel_type) rel1=annot.create_relation(my_lemma_2.senses[3].id,my_sense.id,CwnRelationType.synonym) rel2=annot.create_relation(my_sense.id,my_lemma_2.senses[3].id,CwnRelationType.synonym) print(rel1,rel2) tablet_has_sense=annot.create_relation(my_sense.id,my_lemma_2.senses[3].id,CwnRelationType.has_sense) synonym:07076504->cwn_testing_000006synonym:cwn_testing_000006->07076504 #Seetherelationsregardingthesense annot.E {('07076504','cwn_testing_000002'):{'annot':{},'edge_type':'synonym'}, ('07076504','cwn_testing_000004'):{'annot':{},'edge_type':'synonym'}, ('07076504','cwn_testing_000006'):{'annot':{},'edge_type':'synonym'}, ('cwn_testing_000002','07076504'):{'annot':{},'edge_type':'has_sense'}, ('cwn_testing_000004','07076504'):{'annot':{},'edge_type':'has_sense'}, ('cwn_testing_000006','07076504'):{'annot':{},'edge_type':'has_sense'}} #session結束自動匯出json檔 annot.save() 根據GWAcoreverb(5000_bc.xml),目前已嘗試加入約十餘組cwn沒有cover到的lemma,結果如annot資料夾中所示。



請為這篇文章評分?