
API OpenHOwnet dikembangkan oleh Thunlp, yang menyediakan cara yang nyaman untuk mencari informasi di Hownet, menampilkan pohon sememe, menghitung kesamaan kata melalui semem, dll. Anda juga dapat mengunjungi situs web kami untuk menikmati pencarian dan memamerkan sememes kata secara online.
Jika Anda menggunakan data atau API apa pun yang disediakan oleh OpenHownet dalam penelitian Anda, silakan kutip makalah berikut:
@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 adalah basis pengetahuan Sememe yang paling khas. SEMEMA didefinisikan sebagai unit semantik minimum dalam linguistik, dan beberapa ahli bahasa percaya bahwa makna semua kata dalam bahasa apa pun dapat diwakili oleh serangkaian semem yang terbatas. Mr Zhendong Dong dan putranya Qiang Dong mempraktikkannya, dan menghabiskan hampir 30 tahun membangun Hownet, yang mendahului sekitar 2.000 semem dan menggunakannya untuk membuat anotasi lebih dari 200.000 pengertian bahasa Inggris dan Cina.
Sejak Hownet dibangun, telah banyak digunakan dalam berbagai tugas NLP. Anda dapat merujuk ke daftar kertas ini untuk melihat semua studi terkait Hownet.
File data inti Hownet (yaitu Kamus Hownet yang dapat diunduh di sini) terdiri dari 237.973 konsep (atau indera) yang diwakili oleh kata dan frasa Cina & Inggris. Setiap konsep di Hownet dianotasi dengan definisi berbasis sememe, tag POS, orientasi sentimen, contoh kalimat, dll. Berikut adalah contoh bagaimana konsep dianotasi dalam 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=
Anda dapat memilih salah satu dari dua metode berikut untuk menginstal OpenHOwnet API.
pip install OpenHowNetgit clone https://github.com/thunlp/OpenHowNet/
cd OpenHowNet
python setup.py installCuplikan kode berikut menggambarkan beberapa fungsi dasar API OpenHownet. Anda juga dapat mengunduh notebook Jupyter ini untuk menjalankan kode. Untuk lebih banyak fungsi dan informasi terperinci, silakan beralih ke dokumentasi kami.
import OpenHowNet
hownet_dict = OpenHowNet . HowNetDict () Kesalahan akan terjadi jika Anda belum mengunduh data Hownet. Dalam hal ini Anda perlu menjalankan OpenHowNet.download() terlebih dahulu.
Secara default, API akan mencari Hownet untuk semua konsep (indera) yang diwakili oleh kata yang diberikan (dalam bahasa Inggris atau Cina) dan mengembalikan daftar contoh di kelas indera. Anda juga dapat mengatur bahasa untuk mengurangi waktu pencarian. Jika kata yang diberikan tidak ada di Hownet, API ini akan mengembalikan daftar kosong.
> >> # 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 |苹果]Anda bisa mendapatkan informasi terperinci dari suatu akal sehat oleh instance indera.
> >> 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 |生殖}Anda dapat memvisualisasikan definisi Sense Sense yang Berbasis Sememe (yaitu "Pohon Sememe")
> >> sense_example . visualize_sememe_tree ()
[ sense ] No .244401 | apple |苹果
└── [ None ] tree |树
└── [ agent ] reproduce |生殖
└── [ PatientProduct ] fruit |水果Paket ini menyediakan API untuk mendapatkan semua indera, kata -kata, dan semem di 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 Anda dapat mengambil definisi indera berbasis Sememe yang diwakili oleh kata yang diberikan. Secara default, paket akan mengambil semua indera yang diwakili oleh kata dan mengembalikan daftar sememe mereka secara terpisah.
> >> 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 |树}}] Dengan mengubah display , semem dari suatu akal dapat ditampilkan dalam bentuk daftar ( list ), bentuk kamus ( dict ), bentuk simpul pohon ( tree ) dan bentuk visualisasi ( 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 |水果Selain itu, ketika display=='list' , Anda dapat memilih untuk menggabungkan semua daftar sememe menjadi satu dan membatasi lapisan pengembangan pohon sememe dengan mengubah parameter expanded_layer (-1 berarti memperluas semua lapisan).
> >> 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 |树}Anda bisa mendapatkan hubungan antara dua semem dengan memasukkan kata -kata (bahasa Inggris atau Cina) yang mewakili semem. Anda dapat memilih untuk menunjukkan kembar tiga (SEMEME1, Relationship, 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 |圆)]Anda dapat mencari semua semem yang memiliki hubungan tertentu dengan sememe. Demikian pula, sememe harus diwakili oleh kata (Inggris atau Cina), tetapi hubungannya harus dalam bahasa Inggris kecil.
> >> 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 |成形)]Implementasinya didasarkan pada kertas:
Jiangming Liu, Jinan Xu, Yujie Zhang. Suatu pendekatan struktur hierarkis hibrida untuk komputasi kesamaan kata oleh Hownet. Dalam Prosiding IJCNLP 2013. [PDF]
Karena ada beberapa file yang diperlukan untuk dimuat untuk perhitungan kesamaan, overhead inisialisasi akan lebih besar dari sebelumnya.
Untuk memulainya, Anda dapat menginisialisasi objek hownet_dict sebagai berikut:
> >> hownet_dict_advanced = OpenHowNet . HowNetDict ( init_sim = True )
Initializing OpenHowNet succeeded !
Initializing similarity calculation succeeded !Anda juga dapat menunda inisialisasi perhitungan kesamaan sampai digunakan.
> >> hownet_dict . initialize_similarity_calculation ()
Initializing similarity calculation succeeded !Anda bisa mendapatkan indera yang memiliki definisi berbasis sememe yang sama dengan rasa.
> >> 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 |无花果]Paket pencarian untuk indera yang diwakili oleh kata yang diberikan, memperoleh indera top-k terdekat, dan mengembalikan kata-kata yang sesuai. Perhatikan bahwa bahasa kata yang diberikan harus diatur.
Anda juga dapat mengatur POS kata -kata, memilih untuk menghasilkan kesamaan, dan menggabungkan semua kata milik indera perbedaan menjadi satu daftar, dll. Silakan lihat dokumentasi untuk informasi lebih lanjut.
Jika kata input tidak ada di Hownet, API mengembalikan daftar kosong.
> >> 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' , '东芝' , '华为' , '戴尔' , '索尼' ] Jika salah satu dari dua kata yang diberikan tidak ada di Hownet, itu akan kembali -1 .
> >> print ( 'The similarity of 苹果 and 梨 is {}.' . format ( hownet_dict_advanced . calculate_word_similarity ( '苹果' , '梨' )))
The similarity of 苹果 and 梨 is 1.0 .Paket ini mengintegrasikan fungsi kueri untuk informasi sinset di Babelnet (Synset Babelnet). Babelnet adalah kamus ensiklopedia multibahasa yang terdiri dari sinset babelnet, yang masing -masing berisi beberapa sinonim multibahasa yang memiliki arti yang sama. Pekerjaan berikut ini membuat anotasi semem untuk beberapa sinset babelnet, dan fungsi pada bagian ini didasarkan pada hasil anotasi.
Menuju membangun basis pengetahuan sememe multibahasa: memprediksi sememes untuk sinset babelnet . Fanchao Qi, Liang Chang, Maosong Sun, Sicong Ouyang dan Zhiyuan Liu . Aaai-20. [pdf] [kode]
Untuk memulainya, Anda harus menginisialisasi kamus 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 berikut memungkinkan Anda untuk menanyakan informasi yang kaya dalam sinset Babelnet (sinonim Cina dan Inggris, definisi, URL gambar, dll.).
> >> 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 : [ '像丝瓜花或向日葵花的颜色。' ]Anda bisa mendapatkan sinset Babelnet terkait dengan sinset yang diberikan.
> >> 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 |黄色]Anda bisa mendapatkan semem Sinset Babelnet dengan memasukkan kata dalam Sinset 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 |黄]Untuk instruksi yang lebih rinci, silakan merujuk ke dokumentasi.
Jika kode atau data membantu Anda, silakan mengutip makalah berikut:
@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}
}