
OpenHownet API ได้รับการพัฒนาโดย Thunlp ซึ่งเป็นวิธีที่สะดวกในการค้นหาข้อมูลใน Hownet, แสดงต้นไม้ sememe, คำนวณความคล้ายคลึงกันของคำผ่านเซมินเมน ฯลฯ คุณสามารถเยี่ยมชมเว็บไซต์ของเราเพื่อเพลิดเพลินกับการค้นหาและแสดงคำศัพท์ออนไลน์
หากคุณใช้ข้อมูลหรือ API ใด ๆ ที่จัดทำโดย OpenHownet ในการวิจัยของคุณโปรดอ้างอิงเอกสารต่อไปนี้:
@article{qi2019openhownet,
title={OpenHowNet: An Open Sememe-based Lexical Knowledge Base},
author={Qi, Fanchao and Yang, Chenghao and Liu, Zhiyuan and Dong, Qiang and Sun, Maosong and Dong, Zhendong},
journal={arXiv preprint arXiv:1901.09957},
year={2019},
}
Hownet เป็นฐานความรู้ ทั่วไป ทั่วไป Sememe ถูกกำหนดให้เป็นหน่วยความหมายขั้นต่ำในภาษาศาสตร์และนักภาษาศาสตร์บางคนเชื่อว่าความหมายของคำทั้งหมดในภาษาใด ๆ สามารถแสดงได้ด้วยชุดของเซมินที่ จำกัด Mr Zhendong Dong และลูกชายของเขา Qiang Dong นำความคิดนี้ไปใช้ในทางปฏิบัติและใช้เวลาเกือบ 30 ปีในการสร้าง Hownet ซึ่งกำหนดไว้ล่วงหน้าประมาณ 2,000 sememes และใช้พวกเขาเพื่อใส่คำอธิบายประกอบคำศัพท์ภาษาอังกฤษและภาษาจีนมากกว่า 200,000 คำ
ตั้งแต่ Hownet ถูกสร้างขึ้นจึงถูกใช้อย่างกว้างขวางในงาน NLP ต่างๆ คุณสามารถอ้างถึงรายการบทความนี้เพื่อดูการศึกษาที่เกี่ยวข้องกับ HOWNET ทั้งหมด
ไฟล์ข้อมูล Core Hownet (คือพจนานุกรม Hownet ที่สามารถดาวน์โหลดได้ที่นี่) ประกอบด้วย 237,973 แนวคิด (หรือประสาทสัมผัส) ที่แสดงด้วยคำและวลีภาษาจีนและภาษาอังกฤษ แต่ละแนวคิดใน Hownet มีคำอธิบายประกอบด้วยคำจำกัดความที่อิงตาม sememe, แท็ก POS, การวางแนวความเชื่อ, ประโยคตัวอย่าง ฯลฯ นี่คือตัวอย่างของวิธีการที่แนวคิดมีคำอธิบายประกอบใน Hownet:
NO.=000000026417 # Concept ID
W_C=不惜 # Chinese word
G_C=verb # POS tag of the Chinese word
S_C=PlusFeeling|正面情感 # Sentiment orientation
E_C=~牺牲业余时间,~付出全部精力,~出卖自己的灵魂 # Example sentences of the Chinese word
W_E=do not hesitate to # English word
G_E=verb # POS tag of the English word
S_E=PlusFeeling|正面情感 # Sentiment orientation
E_E= # Example sentences of the English word
DEF={willing|愿意} # Sememe-based definition
RMK=
คุณสามารถเลือกสองวิธีต่อไปนี้เพื่อติดตั้ง OpenHownet API
pip install OpenHowNetgit clone https://github.com/thunlp/OpenHowNet/
cd OpenHowNet
python setup.py installตัวอย่างโค้ดต่อไปนี้แสดงฟังก์ชั่นพื้นฐานบางอย่างของ OpenHownet API นอกจากนี้คุณยังสามารถดาวน์โหลดสมุดบันทึก Jupyter นี้เพื่อเรียกใช้รหัส สำหรับฟังก์ชั่นเพิ่มเติมและข้อมูลโดยละเอียดโปรดหันไปหาเอกสารของเรา
import OpenHowNet
hownet_dict = OpenHowNet . HowNetDict () ข้อผิดพลาดจะเกิดขึ้นหากคุณยังไม่ได้ดาวน์โหลดข้อมูล HOWNET ในกรณีนี้คุณต้องเรียกใช้ OpenHowNet.download() ก่อน
โดยค่าเริ่มต้น API จะค้นหา Hownet สำหรับแนวคิดทั้งหมด (ประสาทสัมผัส) ที่แสดงโดยคำที่กำหนด (เป็นภาษาอังกฤษหรือภาษาจีน) และส่งคืนรายการอินสแตนซ์ในคลาส Sense คุณยังสามารถตั้งค่าภาษาเพื่อลดเวลาการค้นหา หากคำที่กำหนดไม่มีอยู่ใน Hownet API นี้จะส่งคืนรายการที่ว่างเปล่า
> >> # Get all the senses represented by the word "苹果".
>> > result_list = hownet_dict . get_sense ( "苹果" )
> >> print ( "The number of retrievals: " , len ( result_list ))
The number of retrievals : 8
> >> print ( "An example of retrievals: " , result_list )
An example of retrievals : [ No . 244401 | apple |苹果, No . 244402 | malus pumila |苹果, No . 244403 | orchard apple tree |苹果, No . 244396 | apple |苹果, No . 244397 | apple |苹果, No . 244398 | IPHONE |苹果, No . 244399 | apple |苹果, No . 244400 | iphone |苹果]คุณสามารถรับข้อมูลโดยละเอียดเกี่ยวกับความรู้สึกโดยอินสแตนซ์ความรู้สึก
> >> sense_example = result_list [ 0 ]
> >> print ( "Sense example:" , sense_example )
Sense example : No . 244401 | apple |苹果
> >> print ( "Sense id: " , sense_example . No )
Sense id : 000000244401
> >> print ( "English word in the sense: " , sense_example . en_word )
English word in the sense : apple
> >> print ( "Chinese word in the sense: " , sense_example . zh_word )
Chinese word in the sense : 苹果
> >> print ( "HowNet Def of the sense: " , sense_example . Def )
HowNet Def of the sense : { tree |树:{ reproduce |生殖: PatientProduct = { fruit |水果}, agent = { ~ }}}
>> > print ( "Sememe list of the sense: " , sense_example . get_sememe_list ())
Sememe list of the sense : { fruit |水果, tree |树, reproduce |生殖}คุณสามารถเห็นภาพคำจำกัดความตามโครงสร้างที่มีโครงสร้างของความรู้สึก (คือ "Sememe Tree")
> >> sense_example . visualize_sememe_tree ()
[ sense ] No .244401 | apple |苹果
└── [ None ] tree |树
└── [ agent ] reproduce |生殖
└── [ PatientProduct ] fruit |水果แพ็คเกจให้ API เพื่อรับประสาทสัมผัสคำและเซมินเมททั้งหมดใน Hownet
> >> all_senses = hownet_dict . get_all_senses ()
> >> print ( "The number of all senses: {}" . format ( len ( all_senses )))
The number of all senses : 237974
> >> zh_word_list = hownet_dict . get_zh_words ()
> >> print ( "Chinese words in HowNet: " , zh_word_list [: 30 ])
Chinese words in HowNet : [ '' , '"' , '#' , '#号标签' , '$' , '$.J.' , '$A.' , '$NZ.' , '%' , "'" , '(' , ')' , '*' , '+' , ',' , '-' , '--' , '.' , '...' , '...为止' , '...也同样使然' , '...以上' , '...以内' , '...以来' , '...何如' , '...内' , '...出什么问题' , '...发生了什么' , '...发生故障' , '...家里有几口人' ]
> >> en_word_list = hownet_dict . get_en_words ()
> >> print ( "English words in HowNet: " , en_word_list [: 30 ])
English words in HowNet : [ 'A' , 'An' , 'Frenchmen' , 'Frenchwomen' , 'Ottomans' , 'a' , 'aardwolves' , 'abaci' , 'abandoned' , 'abbreviated' , 'abode' , 'aboideaux' , 'aboiteaux' , 'abscissae' , 'absorbed' , 'acanthi' , 'acari' , 'accepted' , 'acciaccature' , 'acclaimed' , 'accommodating' , 'accompanied' , 'accounting' , 'accused' , 'acetabula' , 'acetified' , 'aching' , 'acicula' , 'acini' , 'acquired' ]
> >> all_sememes = hownet_dict . get_all_sememes ()
> >> print ( 'There are {} sememes in HowNet' . format ( len ( all_sememes )))
There are 2540 sememes in HowNet คุณสามารถดึงคำจำกัดความที่อิงตามความรู้สึกของความรู้สึกที่แสดงโดยคำที่กำหนด โดยค่าเริ่มต้นแพ็คเกจจะดึงความรู้สึกทั้งหมดที่แสดงโดยคำและส่งคืนรายการภาควิชาแยกต่างหาก
> >> hownet_dict . get_sememes_by_word ( word = '苹果' , display = 'list' , merge = False , expanded_layer = - 1 , K = None )
[{ 'sense' : No . 244396 | apple |苹果,
'sememes' : { PatternValue |样式值, SpeBrand |特定牌子, able |能, bring |携带, computer |电脑}},
{ 'sense' : No . 244397 | apple |苹果,
'sememes' : { fruit |水果}},
{ 'sense' : No . 244398 | IPHONE |苹果,
'sememes' : { PatternValue |样式值, SpeBrand |特定牌子, able |能, bring |携带, communicate |交流, tool |用具}},
{ 'sense' : No . 244399 | apple |苹果,
'sememes' : { PatternValue |样式值, SpeBrand |特定牌子, able |能, bring |携带, communicate |交流, tool |用具}},
{ 'sense' : No . 244400 | iphone |苹果,
'sememes' : { PatternValue |样式值, SpeBrand |特定牌子, able |能, bring |携带, communicate |交流, tool |用具}},
{ 'sense' : No . 244401 | apple |苹果,
'sememes' : { fruit |水果, reproduce |生殖, tree |树}},
{ 'sense' : No . 244402 | malus pumila |苹果,
'sememes' : { fruit |水果, reproduce |生殖, tree |树}},
{ 'sense' : No . 244403 | orchard apple tree |苹果,
'sememes' : { fruit |水果, reproduce |生殖, tree |树}}] โดยการเปลี่ยน display sememes ของความรู้สึกสามารถแสดงในรูปแบบรายการ ( list ), รูปแบบพจนานุกรม ( dict ), รูปแบบโหนดต้นไม้ ( tree ) และรูปแบบการสร้างภาพ ( visual )
# Get the sememes in the form of dictionary
> >> hownet_dict . get_sememes_by_word ( word = '苹果' , display = 'dict' )[ 0 ]
{ 'sense' : No . 244396 | apple |苹果, 'sememes' : { 'role' : 'sense' , 'name' : No . 244396 | apple |苹果, 'children' : [{ 'role' : 'None' , 'name' : computer |电脑, 'children' : [{ 'role' : 'modifier' , 'name' : PatternValue |样式值, 'children' : [{ 'role' : 'CoEvent' , 'name' : able |能, 'children' : [{ 'role' : 'scope' , 'name' : bring |携带, 'children' : [{ 'role' : 'patient' , 'name' : '$' }]}]}]}, { 'role' : 'patient' , 'name' : SpeBrand |特定牌子}]}]}}
# Get the sememes in the form of tree node (get the root node of the sememe tree)
> >> d . get_sememes_by_word ( word = '苹果' , display = 'tree' )[ 0 ]
{ 'sense' : No . 244396 | apple |苹果, 'sememes' : Node ( '/No.244396|apple|苹果' , role = 'sense' )}
# Visualize the sememes (Set K to control the num of visualized tree to print)
> >> d . get_sememes_by_word ( word = '苹果' , display = 'visual' , K = 2 )
Find 8 result ( s )
Display #0 sememe tree
[ sense ] No .244396 | apple |苹果
└── [ None ] computer |电脑
├── [ modifier ] PatternValue |样式值
│ └── [ CoEvent ] able |能
│ └── [ scope ] bring |携带
│ └── [ patient ]$
└── [ patient ] SpeBrand |特定牌子
Display #1 sememe tree
[ sense ] No .244397 | apple |苹果
└── [ None ] fruit |水果นอกจากนี้เมื่อ display=='list' คุณสามารถเลือกที่จะรวมรายการ sememe ทั้งหมดเป็นหนึ่งเดียวและ จำกัด เลเยอร์ขยายของต้นไม้ Sememe โดยการเปลี่ยนพารามิเตอร์ expanded_layer (-1 หมายถึงการขยายเลเยอร์ทั้งหมด)
> >> hownet_dict . get_sememes_by_word ( word = '苹果' , display = 'list' , merge = True , expanded_layer = - 1 , K = None )
{ PatternValue |样式值, SpeBrand |特定牌子, able |能, bring |携带, communicate |交流, computer |电脑, fruit |水果,
reproduce |生殖, tool |用具, tree |树}คุณสามารถได้รับความสัมพันธ์ระหว่างสองเซมิกโดยการป้อนคำ (ภาษาอังกฤษหรือภาษาจีน) ที่เป็นตัวแทนของ sememes คุณสามารถเลือกที่จะแสดง triplets ของ (sememe1, ความสัมพันธ์, sememe2)
> >> relations = hownet_dict . get_sememe_relation ( 'FormValue' , '圆' , return_triples = False )
> >> print ( relations )
'hyponym'
> >> triples = hownet_dict . get_sememe_relation ( 'FormValue' , '圆' , return_triples = True )
> >> print ( triples )
[( FormValue |形状值, 'hyponym' , round |圆)]คุณสามารถค้นหาวาระทั้งหมดที่มีความสัมพันธ์บางอย่างกับภาควิชา ในทำนองเดียวกัน sememe ควรแสดงด้วยคำ (ภาษาอังกฤษหรือภาษาจีน) แต่ความสัมพันธ์จะต้องเป็นภาษาอังกฤษตัวพิมพ์เล็ก
> >> triples = hownet_dict . get_related_sememes ( 'FormValue' , relation = 'hyponym' , return_triples = True )
> >> print ( triples )
[( FormValue |形状值, 'hyponym' , round |圆), ( FormValue |形状值, 'hyponym' , unformed |不成形), ( AppearanceValue |外观值, 'hyponym' , FormValue |形状值), ( FormValue |形状值, 'hyponym' , angular |角), ( FormValue |形状值, 'hyponym' , square |方), ( FormValue |形状值, 'hyponym' , netlike |网), ( FormValue |形状值, 'hyponym' , formed |成形)]การดำเนินการขึ้นอยู่กับกระดาษ:
Jiangming Liu, Jinan Xu, Yujie Zhang วิธีการของโครงสร้างลำดับชั้นไฮบริดสำหรับการคำนวณความคล้ายคลึงกันของคำโดย Hownet ในการดำเนินการของ IJCNLP 2013 [PDF]
เนื่องจากมีบางไฟล์ที่จำเป็นต้องโหลดสำหรับการคำนวณความคล้ายคลึงกันค่าใช้จ่ายการเริ่มต้นจะมีขนาดใหญ่กว่าเดิม
ในการเริ่มต้นคุณสามารถเริ่มต้นวัตถุ hownet_dict ได้ดังนี้:
> >> hownet_dict_advanced = OpenHowNet . HowNetDict ( init_sim = True )
Initializing OpenHowNet succeeded !
Initializing similarity calculation succeeded !นอกจากนี้คุณยังสามารถเลื่อนการเริ่มต้นของการคำนวณความคล้ายคลึงกันจนกว่าจะใช้
> >> hownet_dict . initialize_similarity_calculation ()
Initializing similarity calculation succeeded !คุณสามารถรับความรู้สึกที่มีคำจำกัดความตาม sememe เดียวกันด้วยความรู้สึก
> >> s = hownet_dict_advanced . get_sense ( '苹果' )[ 0 ]
> >> hownet_dict_advanced . get_sense_synonyns ( s )[: 10 ]
[ No . 110999 | pear |山梨, No . 111007 | hawthorn |山楂, No . 111009 | haw |山楂树, No . 111010 | hawthorn |山楂树, No . 111268 | Chinese hawthorn |山里红, No . 122955 | Pistacia vera |开心果树, No . 122956 | pistachio |开心果树, No . 122957 | pistachio tree |开心果树, No . 135467 | almond tree |扁桃, No . 154699 | fig |无花果]การค้นหาแพ็คเกจสำหรับประสาทสัมผัสที่แสดงด้วยคำที่กำหนดจะได้รับความรู้สึกบนสุด -K ที่ใกล้ที่สุดและส่งคืนคำที่เกี่ยวข้อง โปรดทราบว่าควรตั้งค่าภาษาของคำที่กำหนด
นอกจากนี้คุณยังสามารถตั้งค่า POS ของคำเลือกที่จะส่งออกความคล้ายคลึงกันและรวมคำทั้งหมดที่เป็นของความแตกต่างประสาทสัมผัสลงในรายการเดียว ฯลฯ โปรดดูเอกสารสำหรับข้อมูลเพิ่มเติม
หากคำอินพุตไม่ได้อยู่ใน Hownet API จะส่งคืนรายการที่ว่างเปล่า
> >> hownet_dict_advanced . get_nearest_words ( '苹果' , language = 'zh' , K = 5 )
{ No . 244396 | apple |苹果: [ 'IBM' , '东芝' , '华为' , '戴尔' , '索尼' ],
No . 244397 | apple |苹果: [ '丑橘' , '乌梅' , '五敛子' , '凤梨' , '刺梨' ],
No . 244398 | IPHONE |苹果: [ 'OPPO' , '华为' , '苹果' , '智能手机' , '彩笔' ],
No . 244399 | apple |苹果: [ 'OPPO' , '华为' , '苹果' , '智能手机' , '彩笔' ],
No . 244400 | iphone |苹果: [ 'OPPO' , '华为' , '苹果' , '智能手机' , '彩笔' ],
No . 244401 | apple |苹果: [ '山梨' , '山楂' , '山楂树' , '山里红' , '开心果树' ],
No . 244402 | malus pumila |苹果: [ '山梨' , '山楂' , '山楂树' , '山里红' , '开心果树' ],
No . 244403 | orchard apple tree |苹果: [ '山梨' , '山楂' , '山楂树' , '山里红' , '开心果树' ]}
> >> hownet_dict_advanced . get_nearest_words ( '苹果' , language = 'zh' , K = 5 , merge = True )
[ 'IBM' , '东芝' , '华为' , '戴尔' , '索尼' ] หากทั้งสองคำที่ได้รับไม่ได้มีอยู่ใน Hownet มันจะกลับมา -1
> >> print ( 'The similarity of 苹果 and 梨 is {}.' . format ( hownet_dict_advanced . calculate_word_similarity ( '苹果' , '梨' )))
The similarity of 苹果 and 梨 is 1.0 .แพ็คเกจนี้รวมฟังก์ชั่นการสืบค้นสำหรับข้อมูลของ Synsets ใน Babelnet (Synset Babelnet) Babelnet เป็นพจนานุกรมสารานุกรมหลายภาษาที่ประกอบด้วย Babelnet synsets ซึ่งแต่ละตัวมีคำพ้องความหมายหลายภาษาที่มีความหมายเหมือนกัน งานต่อไปนี้มีคำอธิบายประกอบ Sememes สำหรับ synsets ของ Babelnet และฟังก์ชั่นในส่วนนี้ขึ้นอยู่กับผลลัพธ์ของคำอธิบายประกอบ
สู่การสร้างฐานความรู้ที่หลากหลายหลายภาษา: การทำนายเซมินสำหรับ Babelnet synsets Fanchao Qi, Liang Chang, Maosong Sun, Sicong Ouyang และ Zhiyuan Liu AAAI-20 [PDF] [รหัส]
ในการเริ่มต้นคุณควรเริ่มต้นพจนานุกรม Synset ของ Babelnet:
> >> hownet_dict . initialize_babelnet_dict ()
Initializing BabelNet synset Dict succeeded !
# Or you can initialize when create the HowNetDict instance
>> > hownet_dict_advanced = HowNetDict ( init_babel = True )
Initializing OpenHowNet succeeded !
Initializing BabelNet synset Dict succeeded !API ต่อไปนี้ช่วยให้คุณสามารถสอบถามข้อมูลที่หลากหลายใน synset ของ Babelnet (คำพ้องความหมายภาษาจีนและภาษาอังกฤษคำจำกัดความ url ภาพ ฯลฯ )
> >> syn_list = hownet_dict_advanced . get_synset ( '黄色' )
> >> print ( "{} results are retrieved and take the first one as an example" . format ( len ( syn_list )))
3 results are retrieved and take the first one as an example
>> > syn_example = syn_list [ 0 ]
> >> print ( "Synset: {}" . format ( syn_example ))
Synset : bn : 00113968 a | yellow |黄
> >> print ( "English synonyms: {}" . format ( syn_example . en_synonyms ))
English synonyms : [ 'yellow' , 'yellowish' , 'xanthous' ]
> >> print ( "Chinese synonyms: {}" . format ( syn_example . zh_synonyms ))
Chinese synonyms : [ '黄' , '黄色' , '淡黄色+的' , '黄色+的' , '微黄色' , '微黄色+的' , '黄+的' , '淡黄色' ]
> >> print ( "English glosses: {}" . format ( syn_example . en_glosses ))
English glosses : [ 'Of the color intermediate between green and orange in the color spectrum; of something resembling the color of an egg yolk' , 'Having the colour of a yolk, a lemon or gold.' ]
> >> print ( "Chinese glosses: {}" . format ( syn_example . zh_glosses ))
Chinese glosses : [ '像丝瓜花或向日葵花的颜色。' ]คุณสามารถรับ synsets babelnet ที่เกี่ยวข้องด้วย synset ที่กำหนด
> >> related_synsets = syn_example . get_related_synsets ()
> >> print ( "There are {} synsets that have relation with the {}, they are: " . format ( len ( related_synsets ), syn_example ))
There are 6 synsets that have relation with the bn : 00113968 a | yellow |黄, they are :
>> > print ( related_synsets )
[ bn : 00099663 a | chromatic |彩色, bn : 00029925 n | egg_yolk |蛋黄, bn : 00092876 v | resemble |相似, bn : 00020726 n | color |颜色, bn : 00020748 n | visible_spectrum |可见光, bn : 00081866 n | yellow |黄色]คุณสามารถรับ sememes ของ babelnet synsets ได้โดยป้อนคำใน synsets babelnet:
> >> print ( hownet_dict_advanced . get_sememes_by_word_in_BabelNet ( '黄色' ))
[{ 'synset' : bn : 00113968 a | yellow |黄, 'sememes' : [ yellow |黄]}, { 'synset' : bn : 00101430 a | dirty |淫秽的, 'sememes' : [ lascivious |淫, dirty |龊, despicable |卑劣, BadSocial |坏风气]}, { 'synset' : bn : 00081866 n | yellow |黄色, 'sememes' : [ yellow |黄]}]
> >> print ( hownet_dict_advanced . get_sememes_by_word_in_BabelNet ( '黄色' , merge = True ))
[ lascivious |淫, despicable |卑劣, BadSocial |坏风气, dirty |龊, yellow |黄]สำหรับคำแนะนำโดยละเอียดเพิ่มเติมโปรดดูเอกสารประกอบ
หากรหัสหรือข้อมูลช่วยคุณโปรดอ้างอิงกระดาษต่อไปนี้:
@article{qi2019openhownet,
title={Openhownet: An open sememe-based lexical knowledge base},
author={Qi, Fanchao and Yang, Chenghao and Liu, Zhiyuan and Dong, Qiang and Sun, Maosong and Dong, Zhendong},
journal={arXiv preprint arXiv:1901.09957},
year={2019}
}