Методы для NLP, удаления знаков препинания
Можете помочь и отправить свои методы для лемматизация, токенизации, определения частей речи, удаления знаков препинания, удаления не букв.
Источник: Stack Overflow на русском
Можете помочь и отправить свои методы для лемматизация, токенизации, определения частей речи, удаления знаков препинания, удаления не букв.
Я могу поделиться с вами своими методами, которые я обычно используя при проведении nlp на Python:
import nltk
from nltk.corpus import stopwords
stopwords = nltk.corpus.stopwords.words('russian')
nltk.download('stopwords')
from nltk.tokenize import word_tokenize
import pymorphy2
def remove_punctuation(text):
return ''.join([ch for ch in text if ch not in
string.punctuation]) # метод для удаления пунктуации
def remove_numbers(text):
return ''.join([i if not i.isdigit() else ' ' for i in text])
# метод для удаления чисел
def remove_notalpha(text):
return ''.join(i if i.isalpha() else ' ' for i in text) #
метод для проверки на только алфавитные символы
import re
def remove_space(text):
return re.sub(r'\s+',' ', text, flags=re.I) # метод для
удаления пробелов
def remove_stopwords(text):
return [word for word in text if word not in stopwords] #
удаление стоп-слов
def tokenize(text):
t = word_tokenize(text)
return [token for token in t if token not in stopwords] #
метод для токенизации
wn = nltk.WordNetLemmatizer()
def lemmatize(text):
res = list()
for word in text:
p = morph.parse(word)[0]
res.append(p.normal_form)
return res # метод для лемматизации
morph = pymorphy2.MorphAnalyzer()
def part(text):
res = list()
for word in text:
p = morph.parse(word)[0]
a = (word, p.tag.cyr_repr)
res.append(tuple(a))
return res # метод для выделения значимых частей речи
И чтобы применить все эти методы для вашего текста (корпуса текстов):
text_list = []
for i in df['text']:
if i is not None:
i = remove_punctuation(i)
i = remove_numbers(i)
i = remove_notalpha(i)
i = remove_space(i)
i = tokenize(i)
i = remove_stopwords(i)
i = lemmatize(i)
text_list.append(i)
Для выделения значимых частей речи:
prep_txt_list = []
for txt in text_list:
prep_txt = part(txt)
prep_txt_list.append(prep_txt)