help.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # Natural Language Toolkit (NLTK) Help
  2. #
  3. # Copyright (C) 2001-2020 NLTK Project
  4. # Authors: Steven Bird <stevenbird1@gmail.com>
  5. # URL: <http://nltk.org/>
  6. # For license information, see LICENSE.TXT
  7. """
  8. Provide structured access to documentation.
  9. """
  10. import re
  11. from textwrap import wrap
  12. from nltk.data import load
  13. def brown_tagset(tagpattern=None):
  14. _format_tagset("brown_tagset", tagpattern)
  15. def claws5_tagset(tagpattern=None):
  16. _format_tagset("claws5_tagset", tagpattern)
  17. def upenn_tagset(tagpattern=None):
  18. _format_tagset("upenn_tagset", tagpattern)
  19. #####################################################################
  20. # UTILITIES
  21. #####################################################################
  22. def _print_entries(tags, tagdict):
  23. for tag in tags:
  24. entry = tagdict[tag]
  25. defn = [tag + ": " + entry[0]]
  26. examples = wrap(
  27. entry[1], width=75, initial_indent=" ", subsequent_indent=" "
  28. )
  29. print("\n".join(defn + examples))
  30. def _format_tagset(tagset, tagpattern=None):
  31. tagdict = load("help/tagsets/" + tagset + ".pickle")
  32. if not tagpattern:
  33. _print_entries(sorted(tagdict), tagdict)
  34. elif tagpattern in tagdict:
  35. _print_entries([tagpattern], tagdict)
  36. else:
  37. tagpattern = re.compile(tagpattern)
  38. tags = [tag for tag in sorted(tagdict) if tagpattern.match(tag)]
  39. if tags:
  40. _print_entries(tags, tagdict)
  41. else:
  42. print("No matching tags found.")
  43. if __name__ == "__main__":
  44. brown_tagset(r"NN.*")
  45. upenn_tagset(r".*\$")
  46. claws5_tagset("UNDEFINED")
  47. brown_tagset(r"NN")