Я разрабатываю программу обработки текста, и позже мне нужно будет подобрать слова для исследовательского анализа. Один из моих процессов — вычленение слов, и я должен использовать Портера Стеммера.
Я разработал структуру DataFrame для хранения своих данных. Кроме того, я также разработал функцию для применения к DataFrame. Когда я применяю функцию к DataFrame, определение основы работает, но не сохраняет слова с заглавной буквы (или имена собственные).
Фрагмент моего кода:
from nltk.stem.porter import PorterStemmer
def stemming(word):
stemmer = PorterStemmer()
word = str(word)
if word.title():
stemmer.stem(word).capitalize()
elif word.isupper():
stemmer.stem(word).upper()
else:
stemmer.stem(word)
return word
dfBody['body'] = dfBody['body'].apply(lambda x: [stemming(y) for y in x])
Это мой результат без заглавных слов: output
Пример набора данных (мой набор данных очень большой):
file body
PP3169 ['performing', 'Maker', 'USA', 'computer', 'Conference', 'NIPS']
Ожидаемый результат (после применения функции стемминга):
file body
PP3169 ['perform', 'Make', 'USA', 'comput', 'Confer', 'NIPS']
Любой совет будет принят с благодарностью!
word =
- т.е.word = stemmer.stem(word).capitalize()
- person furas   schedule 13.09.2019word.title()
преобразует текст в заголовок. Вы должны сравнитьif word == word.title():
или проверитьif word[0].isupper() and word[1:].islower()
- person furas   schedule 13.09.2019