Python >> Tutoriel Python >  >> Python Tag >> NLTK

Comment puis-je imprimer tout le contenu de Wordnet (de préférence avec NLTK) ?

Pour wordnet, c'est une ressource de sens de mot donc les éléments de la ressource sont indexés par sens (alias synsets ).

Pour parcourir synsets :

>>> from nltk.corpus import wordnet as wn
>>> for ss in wn.all_synsets():
...     print ss
...     print ss.definition()
...     break
... 
Synset('able.a.01')
(usually followed by `to') having the necessary means or skill or know-how or authority to do something

Pour chaque synset (sens/concept), il y a une liste de mots qui lui est attachée, appelée lemmas :les lemmes sont la forme canonique ("racine") des mots que nous utilisons lorsque nous vérifions un dictionnaire.

Pour obtenir une liste complète des lemmes dans wordnet en utilisant une ligne :

>>> lemmas_in_wordnet = set(chain(*[ss.lemma_names() for ss in wn.all_synsets()]))

Fait intéressant, wn.words() renverra également tous les lemma_names :

>>> lemmas_in_words  = set(i for i in wn.words())
>>> len(lemmas_in_wordnet)
148730
>>> len(lemmas_in_words)
147306

Mais étrangement, il y a des écarts quant au nombre total de mots collectés en utilisant wn.words() .

"Imprimer l'intégralité du contenu" de wordnet en texte semble être quelque chose de trop ambitieux, car wordnet est structuré comme un graphe hiérarchique, avec des synsets interconnectés les uns aux autres et chaque synset a ses propres propriétés/attributs. C'est pourquoi les fichiers wordnet ne sont pas simplement conservés comme un seul fichier texte.

Pour voir ce que contient un synset :

>>> first_synset = next(wn.all_synsets())
>>> dir(first_synset)
['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_all_hypernyms', '_definition', '_examples', '_frame_ids', '_hypernyms', '_instance_hypernyms', '_iter_hypernym_lists', '_lemma_names', '_lemma_pointers', '_lemmas', '_lexname', '_max_depth', '_min_depth', '_name', '_needs_root', '_offset', '_pointers', '_pos', '_related', '_shortest_hypernym_paths', '_wordnet_corpus_reader', 'also_sees', 'attributes', 'causes', 'closure', 'common_hypernyms', 'definition', 'entailments', 'examples', 'frame_ids', 'hypernym_distances', 'hypernym_paths', 'hypernyms', 'hyponyms', 'instance_hypernyms', 'instance_hyponyms', 'jcn_similarity', 'lch_similarity', 'lemma_names', 'lemmas', 'lexname', 'lin_similarity', 'lowest_common_hypernyms', 'max_depth', 'member_holonyms', 'member_meronyms', 'min_depth', 'name', 'offset', 'part_holonyms', 'part_meronyms', 'path_similarity', 'pos', 'region_domains', 'res_similarity', 'root_hypernyms', 'shortest_path_distance', 'similar_tos', 'substance_holonyms', 'substance_meronyms', 'topic_domains', 'tree', 'unicode_repr', 'usage_domains', 'verb_groups', 'wup_similarity']

En passant par ce howto serait utile pour savoir comment accéder aux informations dont vous avez besoin dans wordnet :http://www.nltk.org/howto/wordnet.html