
تم تطوير OpenHownet API بواسطة THUNLP ، الذي يوفر طريقة مريحة للبحث عن المعلومات في Hownet ، وعرض أشجار Sememe ، وحساب تشابه الكلمات عبر sememes ، وما إلى ذلك ، يمكنك أيضًا زيارة موقعنا على الويب للاستمتاع بالبحث وعرض Sememes of Words عبر الإنترنت.
إذا كنت تستخدم أي بيانات أو واجهة برمجة تطبيقات توفرها 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 على أنه الحد الأدنى للوحدة الدلالية في اللغويات ، ويعتقد بعض اللغويين أن معاني كل الكلمات بأي لغة يمكن تمثيلها بمجموعة محدودة من sememes. وضع السيد تشينج دونغ وابنه تشيانغ دونغ هذه الفكرة موضع التنفيذ ، وقضى ما يقرب من 30 عامًا في بناء Hownet ، والذي يرفع ما يقرب من 2000 من Sememes ويستخدمهما لتوضيح أكثر من 200000 من الحواس من اللغة الإنجليزية والصينية.
منذ أن تم بناء Hownet ، تم استخدامه على نطاق واسع في مختلف مهام NLP. يمكنك الرجوع إلى القائمة الورقية هذه لإلقاء نظرة على جميع الدراسات المتعلقة بالهول.
يتكون ملف بيانات HowNet Core (وهو قاموس 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() أولاً.
بشكل افتراضي ، ستبحث واجهة برمجة التطبيقات عن Hownet لجميع المفاهيم (الحواس) التي تمثلها الكلمة المعطاة (باللغة الإنجليزية أو الصينية) وإعادة قائمة بالمثيلات في فئة المعنى. يمكنك أيضًا تعيين اللغة لتقليل وقت البحث. إذا كانت الكلمة المحددة غير موجودة في 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.
> >> 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 المهيكلة للمعنى (أي "شجرة Sememe")
> >> 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 يمكنك استرداد تعريفات SEMEME المستندة إلى الحواس التي تمثلها الكلمة المحددة. بشكل افتراضي ، ستقوم الحزمة باسترداد جميع الحواس التي تمثلها الكلمة وإرجاع قائمة Sememe بشكل منفصل.
> >> 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 عن طريق إدخال الكلمات (الإنجليزية أو الصينية) التي تمثل sememes. يمكنك اختيار إظهار ثلاثة توائم (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 |圆)]يمكنك البحث في جميع sememes التي لها علاقة معينة مع sememe. وبالمثل ، يجب تمثيل 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-K ، ويعيد الكلمات المقابلة. لاحظ أنه يجب تعيين لغة الكلمة المحددة.
يمكنك أيضًا تعيين POS للكلمات ، واختيار إخراج التشابه ، ودمج جميع الكلمات التي تنتمي إلى اختلاف الحواس في قائمة واحدة ، وما إلى ذلك. يرجى الاطلاع على الوثائق لمزيد من المعلومات.
إذا لم تكن كلمة الإدخال في Hownet ، فإن واجهة برمجة التطبيقات تُرجع قائمة فارغة.
> >> 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 (babelnet synset). Babelnet هو قاموس موسوع متعدد اللغات يتكون من متلازمات بابل ، كل منها يحتوي على بعض المرادفات متعددة اللغات التي لها نفس المعنى. يقوم العمل التالي بتعليقات Sememes لبعض متزامن البابل ، وتستند الوظيفة في هذا الجزء إلى نتائج التعليقات التوضيحية.
نحو بناء قاعدة المعرفة sememe متعددة اللغات: التنبؤ sememes لمخططات babelnet . Fanchao Qi و Liang Chang و Maosong Sun و Sicong Ouyang و Zhiyuan Liu . AAAI-20. [PDF] [رمز]
بادئ ذي بدء ، يجب عليك تهيئة قاموس Babelnet Synset:
> >> 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 !تتيح لك واجهة برمجة التطبيقات التالية الاستعلام عن المعلومات الغنية في 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 ذات الصلة مع 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 من Synsets babelnet عن طريق إدخال الكلمة في 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}
}