π§ ΠΠ°ΠΊ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ Π² ΠΠΈΡΠΎΠ½ - Π»Π΅Π³ΠΊΠΈΠΉ Π³Π°ΠΉΠ΄ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
Π§ΡΠΎΠ±Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²:
1. ΠΠ°Π³Π»Π°Π²Π½ΡΠ΅ ΠΈ ΡΡΡΠΎΡΠ½ΡΠ΅ Π±ΡΠΊΠ²Ρ:
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
normalized_text = text.lower()
print(normalized_text) # ΠΏΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!
2. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡΠ½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
import re
text = "ΠΡΠΈΠ²Π΅Ρ, $ΠΠΈΡ!"
normalized_text = re.sub(r'[^Π°-ΡΠ-Π―ΡΠ\s]', '', text)
print(normalized_text) # ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ
3. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ²:
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
stop_words = set(stopwords.words("russian"))
tokens = word_tokenize(text)
normalized_text = " ".join(word for word in tokens if word.casefold() not in stop_words)
print(normalized_text) # ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ
4. ΠΠ΅ΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ:
from pymorphy2 import MorphAnalyzer
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
morph = MorphAnalyzer()
normalized_text = " ".join(morph.parse(word)[0].normal_form for word in text.split())
print(normalized_text) # ΠΏΡΠΈΠ²Π΅Ρ ΠΌΠΈΡ
ΠΡΠΎ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° Π² Python. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ Π² Python
ΠΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΠΊΡΡΠ° - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°. Π Python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
1. ΠΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π³ Π² Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° - ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΊ Π½ΠΈΠΆΠ½Π΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΡ. Π Python ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° lower()
. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
normalized_text = text.lower()
print(normalized_text) # Π²ΡΠ²ΠΎΠ΄ΠΈΡ "ΠΏΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!"
2. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ² ΠΏΡΠ½ΠΊΡΡΠ°ΡΠΈΠΈ
ΠΠ½Π°ΠΊΠΈ ΠΏΡΠ½ΠΊΡΡΠ°ΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅ΡΠ°ΡΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π½Π°ΠΊΠΎΠ² ΠΏΡΠ½ΠΊΡΡΠ°ΡΠΈΠΈ Π² Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ string
ΠΈ ΠΌΠ΅ΡΠΎΠ΄ translate()
. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
import string
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
translator = str.maketrans("", "", string.punctuation)
normalized_text = text.translate(translator)
print(normalized_text) # Π²ΡΠ²ΠΎΠ΄ΠΈΡ "ΠΡΠΈΠ²Π΅Ρ ΠΠΈΡ"
3. Π’ΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ
Π’ΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΡ - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅Π½Ρ. Π Python Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ nltk
(Natural Language Toolkit). Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
import nltk
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
tokens = nltk.word_tokenize(text)
print(tokens) # Π²ΡΠ²ΠΎΠ΄ΠΈΡ ["ΠΡΠΈΠ²Π΅Ρ", ",", "ΠΠΈΡ", "!"]
4. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ²
Π‘ΡΠΎΠΏ-ΡΠ»ΠΎΠ²Π° - ΡΡΠΎ ΡΠ»ΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ Π½Π΅ΡΡΡ ΡΠΌΡΡΠ»ΠΎΠ²ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π½Π΅ Π²Π»ΠΈΡΡΡ Π½Π° Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΠΊΡΡΠ°. Π Python Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ nltk
ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠΎΠΏ-ΡΠ»ΠΎΠ² ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
import nltk
from nltk.corpus import stopwords
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
tokens = nltk.word_tokenize(text)
stop_words = set(stopwords.words("russian"))
filtered_tokens = [word for word in tokens if word not in stop_words]
print(filtered_tokens) # Π²ΡΠ²ΠΎΠ΄ΠΈΡ ["ΠΡΠΈΠ²Π΅Ρ", ",", "ΠΠΈΡ", "!"]
5. ΠΠ΅ΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ
ΠΠ΅ΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ - ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ»ΠΎΠ²Π° ΠΊ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠΎΡΠΌΠ΅ (Π»Π΅ΠΌΠΌΠ΅). Π Python Π΄Π»Ρ Π»Π΅ΠΌΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ nltk
ΠΈ ΠΊΠ»Π°ΡΡ SnowballStemmer
. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ:
import nltk
from nltk.stem import SnowballStemmer
text = "ΠΡΠΈΠ²Π΅Ρ, ΠΠΈΡ!"
stemmer = SnowballStemmer("russian")
tokens = nltk.word_tokenize(text)
lemmatized_tokens = [stemmer.stem(word) for word in tokens]
print(lemmatized_tokens) # Π²ΡΠ²ΠΎΠ΄ΠΈΡ ["ΠΏΡΠΈΠ²Π΅Ρ", ",", "ΠΌΠΈΡ", "!"]
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠ° Π² Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.