рдпрд╣ рдЖрдЙрдЯрдкреБрдЯ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИред рдкреЛрд░реНрдЯрд░рд╕реНрдЯреЗрдорд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ In
рдХреИрдкрд┐рдЯрд▓рд╛рдЗрдЬрд╝ In
рд▓реМрдЯрд╛рддрд╛ рд╣реИред
>>> from nltk.stem import PorterStemmer
>>> porter = PorterStemmer()
>>> porter.stem('In')
'In'
https://stackoverflow.com/q/60387288/610569 рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдХрд┐рд╕реА рднреА рд╕реНрдЯреЗрдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдЕрд░рдХреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
Oh
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрдВрдЬреАрдХреГрдд рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг
>>> from nltk.stem import PorterStemmer
>>> porter = PorterStemmer()
>>> porter.stem('Oh')
'Oh'
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рдВрдХреНрд╖реЗрдк рдХрд╛ рдореВрд▓ рд░реВрдк рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬрдм рд╢рдмреНрдж рдХреА рд▓рдВрдмрд╛рдИ 2 рд╕реЗ рдХрдо рд╣реЛ, рдЬреИрд╕реЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рдВрдХреНрд╖реЗрдкред
def stem(self, word):
stem = word.lower()
if self.mode == self.NLTK_EXTENSIONS and word in self.pool:
return self.pool[word]
if self.mode != self.ORIGINAL_ALGORITHM and len(word) <= 2:
# With this line, strings of length 1 or 2 don't go through
# the stemming process, although no mention is made of this
# in the published algorithm.
return word
stem = self._step1a(stem)
stem = self._step1b(stem)
stem = self._step1c(stem)
stem = self._step2(stem)
stem = self._step3(stem)
stem = self._step4(stem)
stem = self._step5a(stem)
stem = self._step5b(stem)
return stem
рд╢рдмреНрдж 'рдЗрди' рдФрд░ 'рдУрд╣' рджреЛрдиреЛрдВ self.pool
, рдФрд░ len(word)<=2
, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рд╕реНрдЯреЗрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред
рдЕрдЧрд░ рдЗрд╕реЗ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИред
@PhanatosZou рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдФрд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИред рдореБрдЦреНрдп рдХреЛрдб рдЬрд┐рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ:
if self.mode != self.ORIGINAL_ALGORITHM and len(word) <= 2:
# With this line, strings of length 1 or 2 don't go through
# the stemming process, although no mention is made of this
# in the published algorithm.
return stem
рд▓реЗрдХрд┐рди рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ self.pool
рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрджрд┐ рд╡реЗ рдЧреИрд░-рдХреИрдк рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рднреА рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВ:
if self.mode == self.NLTK_EXTENSIONS and word in self.pool:
return self.pool[stem]
рдмрдврд╝рд┐рдпрд╛ рд╣реИ! рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред