Я пытаюсь подготовить текст в функции Python для конвейера машинного обучения, и у меня возникают проблемы с получением правильного вывода.Итак, я хочу сделать строчные буквы для всех слов, заменить символы пробелами, удалить символы и удалить стоп-слова из nltk.Я испробовал все виды различных подходов, от понимания списка до сопоставления с регулярным выражением, но я все еще не могу сделать это правильно.Пожалуйста, помогите!Вот необходимый импорт и основная функция:
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
import re
Вот функция:
REPLACE_BY_SPACE_RE = re.compile('[/(){}\[\]\|@,;]')
BAD_SYMBOLS_RE = re.compile('[^0-9a-z #+_]')
STOPWORDS = set(stopwords.words('english'))
def text_prepare(text):
"""
text: a string
return: modified initial string
"""
lower = text.lower() # lowercase text
space_replace = REPLACE_BY_SPACE_RE.sub(" ",lower) #replace REPLACE_BY_SPACE_RE symbols by space in text
nosymb = BAD_SYMBOLS_RE.sub("",space_replace) # delete symbols which are in BAD_SYMBOLS_RE from text
text = [word for word in nosymb if word not in STOPWORDS] # delete stopwords from text
return text
Вот тестовая функция:
def test_text_prepare():
examples = ["SQL Server - any equivalent of Excel's CHOOSE function?",
"How to free c++ memory vector<int> * arr?"]
answers = ["sql server equivalent excels choose function",
"free c++ memory vectorint arr"]
for ex, ans in zip(examples, answers):
if text_prepare(ex) != ans:
return "Wrong answer for the case: '%s'" % ex
return 'Basic tests are passed.'
Вотмой результат теста:
print(test_text_prepare())
Wrong answer for the case: 'SQL Server - any equivalent of Excel's CHOOSE function?'