
Die OpenHownet -API wurde von Thunlp entwickelt, das eine bequeme Möglichkeit bietet, Informationen in Hownet zu durchsuchen, Semembäume anzuzeigen, die Wort Ähnlichkeit über Sememen zu berechnen usw. Sie können auch unsere Website besuchen, um Suchen und Ausstellen von Sememen von Wörtern online zu genießen.
Wenn Sie Daten oder APIs von OpenHownet in Ihrer Forschung verwenden, geben Sie bitte das folgende Papier an:
@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 ist die typischste Sememwissensbasis . Ein Semem ist definiert als die minimale semantische Einheit in der Linguistik, und einige Linguisten glauben, dass die Bedeutungen aller Wörter in jeder Sprache durch eine begrenzte Reihe von Sememen dargestellt werden können. Herr Zhendong Dong und sein Sohn Qiang Dong haben diese Idee in die Praxis umsetzten und fast 30 Jahre lang aufgebaut, das etwa 2.000 Sememe vorschreibt und sie verwendet, um über 200.000 Sinne englischer und chinesischer Wörter zu kommentieren.
Seit dem Bau von Hownet wurde es in verschiedenen NLP -Aufgaben weit verbreitet. Sie können sich auf diese Papierliste beziehen, um sich alle Studien im Zusammenhang mit den Hownet-bezogenen anzusehen.
Hownet Core Dateidatei (nämlich Hownet Dictionary, das hier heruntergeladen werden kann) besteht aus 237.973 Konzepten (oder Sinnen), die durch chinesische und englische Wörter und Sätze dargestellt werden. Jedes Konzept in Hownet ist mit einer semembasierten Definition, dem POS-Tag, der Stimmungsorientierung, beispielsweise Sätzen usw. kommentiert. Hier ist ein Beispiel dafür, wie Konzepte in Hownet kommentiert werden:
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=
Sie können eine der folgenden zwei Methoden zur Installation von OpenHownet -API auswählen.
pip install OpenHowNetgit clone https://github.com/thunlp/OpenHowNet/
cd OpenHowNet
python setup.py installDie folgenden Codeausschnitte veranschaulichen einige grundlegende Funktionen der OpenHownet -API. Sie können dieses Jupyter -Notizbuch auch herunterladen, um den Code auszuführen. Weitere Funktionen und detaillierte Informationen finden Sie in unserer Dokumentation.
import OpenHowNet
hownet_dict = OpenHowNet . HowNetDict () Ein Fehler tritt auf, wenn Sie die Hownet -Daten nicht heruntergeladen haben. In diesem Fall müssen Sie zuerst OpenHowNet.download() ausführen.
Standardmäßig sucht die API Hownet nach allen Konzepten (Sinne), die durch das angegebene Wort (in englischer oder chinesischer) dargestellt werden, und geben eine Liste von Instanzen in der Sense -Klasse zurück. Sie können die Sprache auch festlegen, um die Suchzeit zu verkürzen. Wenn das angegebene Wort in Hownet nicht vorhanden ist, gibt diese API eine leere Liste zurück.
> >> # 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 |苹果]Sie können die detaillierten Informationen eines Sinns durch die Sense -Instanz erhalten.
> >> 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 |生殖}Sie können die strukturierte semembasierte Definition eines Sinns visualisieren (nämlich den "Semembaum")
> >> sense_example . visualize_sememe_tree ()
[ sense ] No .244401 | apple |苹果
└── [ None ] tree |树
└── [ agent ] reproduce |生殖
└── [ PatientProduct ] fruit |水果Das Paket bietet API, um alle Sinne, Wörter und Sememe in Hownet zu erhalten.
> >> 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 Sie können semembasierte Definitionen der durch das angegebenen Wort dargestellten Sinne abrufen. Standardmäßig wird das Paket alle durch das Wort dargestellten Sinne abrufen und ihre Sememliste separat zurückgeben.
> >> 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 |树}}] Durch Ändern display können die Sememe eines Sinns in Listenform ( list ), Wörterbuchform ( dict ), Baumknotenform ( tree ) und Visualisierungsform ( visual ) angezeigt werden.
# 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 |水果Außerdem können Sie bei display=='list' alle Sememlisten in eins zusammenführen und die Erweiterungsschicht der Semembäume einschränken, indem Sie den Parameter expanded_layer ändern (-1 bedeutet, alle Ebenen zu erweitern).
> >> 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 |树}Sie können die Beziehung zwischen zwei Sememen erhalten, indem Sie die Wörter (Englisch oder Chinesisch) eingeben, die die Sememe darstellen. Sie können die Triplets von (Semem1, Relation, Sememe2) zeigen.
> >> 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 |圆)]Sie können alle Sememe durchsuchen, die eine bestimmte Beziehung zu einem Semem haben. In ähnlicher Weise sollte ein Semem durch ein Wort (Englisch oder Chinesisch) dargestellt werden, aber die Beziehung muss in Englisch in Kleinbuchstaben stehen.
> >> 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 |成形)]Die Implementierung basiert auf dem Papier:
Jiangming Liu, Jinan Xu, Yujie Zhang. Ein Ansatz der hybriden hierarchischen Struktur für das Wort Ähnlichkeits -Computer durch Hownet. In Proceedings of IJCNLP 2013. [PDF]
Da einige Dateien für die Berechnung der Ähnlichkeit geladen werden müssen, ist der Initialisierungsaufwand größer als zuvor.
Zunächst können Sie das hownet_dict -Objekt wie folgt initialisieren:
> >> hownet_dict_advanced = OpenHowNet . HowNetDict ( init_sim = True )
Initializing OpenHowNet succeeded !
Initializing similarity calculation succeeded !Sie können auch die Initialisierung der Ähnlichkeitsberechnung bis zur Verwendung verschieben.
> >> hownet_dict . initialize_similarity_calculation ()
Initializing similarity calculation succeeded !Sie können Sinne erhalten, die die gleiche semembasierte Definition mit einem Sinn haben.
> >> 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 |无花果]Die Paketsuche nach Sinnen, die durch das angegebene Wort dargestellt werden, erhält die nächsten Sinne der Top-K und gibt die entsprechenden Wörter zurück. Beachten Sie, dass die Sprache des angegebenen Wortes festgelegt werden sollte.
Sie können auch die POS von Wörtern festlegen, die Ähnlichkeit ausgeben und alle Wörter, die zu Differenzsensen gehören, in eine einzelne Liste usw. verschmelzen. Weitere Informationen finden Sie in der Dokumentation.
Wenn sich das Eingabeford nicht in Hownet befindet, gibt die API eine leere Liste zurück.
> >> 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' , '东芝' , '华为' , '戴尔' , '索尼' ] Wenn eines der beiden angegebenen Wörter in Hownet nicht existiert, gibt es -1 zurück.
> >> print ( 'The similarity of 苹果 and 梨 is {}.' . format ( hownet_dict_advanced . calculate_word_similarity ( '苹果' , '梨' )))
The similarity of 苹果 and 梨 is 1.0 .Dieses Paket integriert die Abfragefunktion für Informationen von Synsets in Babelnet (Babelnet Synset). Babelnet ist ein mehrsprachiges Enzyklopädie -Wörterbuch, das aus Babelnet -Synsets besteht, von denen jedes einige mehrsprachige Synonyme enthält, die die gleiche Bedeutung haben. Die folgenden Arbeiten für einige Babelnet -Synsets für die Arbeit und die Funktion in diesem Teil basieren auf seinen Annotationsergebnissen.
Um eine mehrsprachige Semem -Wissensbasis aufzubauen: Vorhersage von Sememen für Babelnet -Synsets . Fanchao Qi, Liang Chang, Maosong Sun, Sicong Ouyang und Zhiyuan Liu . AAAI-20. [PDF] [Code]
Zunächst sollten Sie das Babelnet -Synset -Wörterbuch initialisieren:
> >> 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 !Mit der folgenden API können Sie die reichhaltigen Informationen in einem Babelnet -Synset abfragen (chinesische und englische Synonyme, Definitionen, Bild -URLs usw.).
> >> 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 : [ '像丝瓜花或向日葵花的颜色。' ]Sie können die zugehörigen Babelnet -Synsets mit einem bestimmten Synset erhalten.
> >> 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 |黄色]Sie können die Sememe von Babelnet -Synsets erhalten, indem Sie das Wort in die Babelnet -Synsets eingeben:
> >> 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 |黄]Weitere detailliertere Anweisungen finden Sie in der Dokumentation.
Wenn Ihnen der Code oder die Daten Ihnen helfen, zitieren Sie bitte das folgende Papier:
@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}
}