Вот пример текста:
"Из сотен тысяч борцов средней школы лишь небольшой процент знает, что значит выиграть титул штата. {{Elided}} является частью этого процента. Юниор из Ричмонда присоединился к этой группе, выиграв… Премиум-контент доступен только подписчикам. Пожалуйста, войдите здесь, чтобы получить доступ к контенту, или перейдите сюда, чтобы приобрести подписку."
и моя пользовательская функция:
Код: Выделить всё
import re
import string
import nltk
from nltk.corpus import stopwords
# function to detect paywall-related text
def detect_paywall(text):
paywall_keywords = ["login", "subscription", "purchase a subscription", "subscribers"]
for keyword in paywall_keywords:
if re.search(r'\b{}\b'.format(keyword), text, flags=re.IGNORECASE):
return True
return False
# function for text preprocessing
def preprocess_text(text):
# Check if the text contains paywall-related content
if detect_paywall(text):
# Remove paywall-related sentences or language from the text
sentences = nltk.sent_tokenize(text)
cleaned_sentences = [sentence for sentence in sentences if not detect_paywall(sentence)]
cleaned_text = ' '.join(cleaned_sentences)
return cleaned_text.strip() # Remove leading/trailing whitespace
# Tokenization
tokens = nltk.word_tokenize(text)
# Convert to lowercase
tokens = [token.lower() for token in tokens]
# Remove punctuation
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in tokens]
# Remove stopwords
stop_words = set(stopwords.words('english'))
words = [word for word in stripped if word.isalpha() and word not in stop_words]
return ' '.join(words)
Функция также противоречива, поскольку она работает с этим фрагментом текста (поскольку он удалит язык платного доступа), но не с один выше.
Из сотен тысяч борцов средней школы лишь небольшой процент знает, что значит выиграть титул штата. {{Elided}} является частью этого процента. Юный Ричмонд присоединился к этой группе, выиграв… Премиум-контент доступен только подписчикам. Пожалуйста, войдите здесь, чтобы получить доступ к контенту, или перейдите сюда, чтобы приобрести подписку.
Подробнее здесь: https://stackoverflow.com/questions/781 ... ext-pandas