π ΠΠ°ΠΊ ΠΎΡΠΈΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡ Π² Python: ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±
ΠΠ»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π² Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡΠ½ΠΈΡ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ²:
- ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ:
import re
text = "ΠΡΠΈΠ²Π΅Ρ, @ΠΌΠΈΡ! π"
clean_text = re.sub(r'[^\w\s]', '', text)
print(clean_text)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: "ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ"
text = " ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ! "
clean_text = " ".join(text.split())
print(clean_text)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: "ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!"
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΠ !"
clean_text = text.lower()
print(clean_text)
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: "ΠΏΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!"
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΡΠΈΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡ Π² Python
ΠΡΠΈΡΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (NLP - Natural Language Processing). ΠΡ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅Π΄ΠΈΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π°ΡΡ ΠΈΠ²ΠΎΠ² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π΄Π°Π½Π½ΡΡ . Π¦Π΅Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° - ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π΅Π³ΠΎ Π² ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π²ΠΈΠ΄, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ .
Π Python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ°. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ :
1. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ² ΠΏΡΠ΅ΠΏΠΈΠ½Π°Π½ΠΈΡ
ΠΠ½Π°ΠΊΠΈ ΠΏΡΠ΅ΠΏΠΈΠ½Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΎΡΠΊΠΈ, Π·Π°ΠΏΡΡΡΠ΅, Π²ΠΎΡΠΊΠ»ΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ Π²ΠΎΠΏΡΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΠΊΠΈ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½Ρ ΠΈΠ· ΡΠ΅ΠΊΡΡΠ°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ .translate() Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ string. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import string
def remove_punctuation(text):
translator = str.maketrans('', '', string.punctuation)
return text.translate(translator)
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!"
cleaned_text = remove_punctuation(text)
print(cleaned_text) # "ΠΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ"
2. ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° - ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ. ΠΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½ΡΡ , Π½Π΅ ΡΡΠΈΡΡΠ²Π°Ρ ΡΠ΅Π³ΠΈΡΡΡ ΡΠ»ΠΎΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ .lower(). ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΠ !"
cleaned_text = text.lower()
print(cleaned_text) # "ΠΏΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!"
3. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ²
Π‘ΡΠΎΜΠΏ-ΡΠ»ΠΎΠ²Π° ΡΡΠΎ ΡΠ»ΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π½Π΅ΡΡΡ ΡΠΌΡΡΠ»ΠΎΠ²ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² Π±ΠΎΠ»ΡΡΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ Π² ΡΠ΅ΠΊΡΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, "ΠΈ", "Π²", "Π½Π°"). Π£Π΄Π°Π»ΡΡ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ²Π°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ»ΠΎΠ²Π°Ρ . ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ NLTK (Natural Language Toolkit) Π² Python. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import nltk
from nltk.corpus import stopwords
nltk.download('stopwords')
stop_words = set(stopwords.words('russian'))
def remove_stopwords(text):
words = text.split()
cleaned_words = [word for word in words if word.lower() not in stop_words]
return ' '.join(cleaned_words)
text = "ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ²Π°ΠΌΠΈ"
cleaned_text = remove_stopwords(text)
print(cleaned_text) # "ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ²Π°ΠΌΠΈ"
4. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π» ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
ΠΡΠ»ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΡΠΈΡΠ»Π° ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΈΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΡΡ ΡΠΌΡΡΠ»ΠΎΠ²ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΡ . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ (regex). ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import re
def remove_numbers_and_symbols(text):
cleaned_text = re.sub('[^a-zA-ZΠ°-ΡΠ-Π―]+', ' ', text)
return cleaned_text
text = "ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° Ρ 123 ΡΠΈΡΠ»Π°ΠΌΠΈ #ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ!"
cleaned_text = remove_numbers_and_symbols(text)
print(cleaned_text) # "ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ"
5. Π’ΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΠΊΡΡΠ°
Π’ΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅Π½Ρ. ΠΠ»Ρ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ NLTK Π² Python. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import nltk
nltk.download('punkt')
from nltk.tokenize import word_tokenize
text = "ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΠΈ"
tokens = word_tokenize(text)
print(tokens) # ["ΠΡΠΎ", "ΠΏΡΠΈΠΌΠ΅Ρ", "ΡΠ΅ΠΊΡΡΠ°", "Π΄Π»Ρ", "ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΠΈ"]
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π§ΠΈΡΡΠΊΠ° ΡΠ΅ΠΊΡΡΠ° - Π²Π°ΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ° Π² Π°Π½Π°Π»ΠΈΠ·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π² Python, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ² ΠΏΡΠ΅ΠΏΠΈΠ½Π°Π½ΠΈΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ², ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ΅Π» ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΈ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π²Π°ΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π΄Π°Π½Π½ΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.