__init__.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. __all__ = ('language', 'stemmer')
  2. from .arabic_stemmer import ArabicStemmer
  3. from .armenian_stemmer import ArmenianStemmer
  4. from .basque_stemmer import BasqueStemmer
  5. from .catalan_stemmer import CatalanStemmer
  6. from .danish_stemmer import DanishStemmer
  7. from .dutch_stemmer import DutchStemmer
  8. from .english_stemmer import EnglishStemmer
  9. from .finnish_stemmer import FinnishStemmer
  10. from .french_stemmer import FrenchStemmer
  11. from .german_stemmer import GermanStemmer
  12. from .greek_stemmer import GreekStemmer
  13. from .hindi_stemmer import HindiStemmer
  14. from .hungarian_stemmer import HungarianStemmer
  15. from .indonesian_stemmer import IndonesianStemmer
  16. from .irish_stemmer import IrishStemmer
  17. from .italian_stemmer import ItalianStemmer
  18. from .lithuanian_stemmer import LithuanianStemmer
  19. from .nepali_stemmer import NepaliStemmer
  20. from .norwegian_stemmer import NorwegianStemmer
  21. from .porter_stemmer import PorterStemmer
  22. from .portuguese_stemmer import PortugueseStemmer
  23. from .romanian_stemmer import RomanianStemmer
  24. from .russian_stemmer import RussianStemmer
  25. from .serbian_stemmer import SerbianStemmer
  26. from .spanish_stemmer import SpanishStemmer
  27. from .swedish_stemmer import SwedishStemmer
  28. from .tamil_stemmer import TamilStemmer
  29. from .turkish_stemmer import TurkishStemmer
  30. from .yiddish_stemmer import YiddishStemmer
  31. _languages = {
  32. 'arabic': ArabicStemmer,
  33. 'armenian': ArmenianStemmer,
  34. 'basque': BasqueStemmer,
  35. 'catalan': CatalanStemmer,
  36. 'danish': DanishStemmer,
  37. 'dutch': DutchStemmer,
  38. 'english': EnglishStemmer,
  39. 'finnish': FinnishStemmer,
  40. 'french': FrenchStemmer,
  41. 'german': GermanStemmer,
  42. 'greek': GreekStemmer,
  43. 'hindi': HindiStemmer,
  44. 'hungarian': HungarianStemmer,
  45. 'indonesian': IndonesianStemmer,
  46. 'irish': IrishStemmer,
  47. 'italian': ItalianStemmer,
  48. 'lithuanian': LithuanianStemmer,
  49. 'nepali': NepaliStemmer,
  50. 'norwegian': NorwegianStemmer,
  51. 'porter': PorterStemmer,
  52. 'portuguese': PortugueseStemmer,
  53. 'romanian': RomanianStemmer,
  54. 'russian': RussianStemmer,
  55. 'serbian': SerbianStemmer,
  56. 'spanish': SpanishStemmer,
  57. 'swedish': SwedishStemmer,
  58. 'tamil': TamilStemmer,
  59. 'turkish': TurkishStemmer,
  60. 'yiddish': YiddishStemmer,
  61. }
  62. try:
  63. import Stemmer
  64. cext_available = True
  65. except ImportError:
  66. cext_available = False
  67. def algorithms():
  68. if cext_available:
  69. return Stemmer.language()
  70. else:
  71. return list(_languages.keys())
  72. def stemmer(lang):
  73. if cext_available:
  74. return Stemmer.Stemmer(lang)
  75. if lang.lower() in _languages:
  76. return _languages[lang.lower()]()
  77. else:
  78. raise KeyError("Stemming algorithm '%s' not found" % lang)