Я предварительно обрабатываю текстовые данные. Однако я столкнулся с проблемой лемматизации. Ниже приведен образец текста:
«В четверг 18-летний мальчик был передан в прокуратуру за предполагаемую кражу криптовалюты на сумму около 15 миллионов йен (134 300 долларов США) в прошлом году путем взлома веб-сайта хранилища цифровой валюты», — заявила полиция. какие уголовные обвинения были возбуждены против хакера за потерю криптовалюты, сообщила полиция.', '\n', 'Мальчик из города Уцуномия, префектура Тотиги, чье имя не разглашается, поскольку он несовершеннолетний, предположительно украл деньги после взлома Monappy, веб-сайта, где пользователи могут хранить виртуальную валюту monacoin, в период с 14 августа по 1 сентября прошлого года», «Он использовал программное обеспечение под названием Tor, которое затрудняет определение того, кто получает доступ к системе, но полиция опознала его, проанализировав записи разговоров, оставленные на сервере веб-сайта». «Полиция заявила, что мальчик признался в обвинениях, процитировав его слова: «Я чувствовал, что нашел трюк, которого никто не знает, и сделал это так, как будто я играл в видео га меня».», «Он воспользовался слабостью функции веб-сайта, которая позволяет пользователю переводить валюту другому пользователю, зная, что система может дать сбой, если переводы будут повторяться в течение короткого периода времени.», « Он неоднократно отправлял запросы на перевод валюты самому себе, перегружая систему и позволяя ему зарегистрировать больше денег на своем счете.», «Пострадало около 7700 пользователей, и оператор выплатит им компенсацию», «Позже мальчик положил украденные monacoins в Учетная запись, созданная другим оператором криптовалюты, получала выплаты в другой криптовалюте и покупала такие предметы, как смартфон, сообщили в полиции. подключение к Интернету, а те, что хранились в автономном режиме, не были украдены».
Мой код:
import pandas as pd
import nltk
from nltk.stem import PorterStemmer
from nltk.stem import WordNetLemmatizer
from nltk.corpus import stopwords
df = pd.read_csv('All Articles.csv')
df['Articles'] = df['Articles'].str.lower()
stemming = PorterStemmer()
stops = set(stopwords.words('english'))
lemma = WordNetLemmatizer()
def identify_tokens(row):
Articles = row['Articles']
tokens = nltk.word_tokenize(Articles)
token_words = [w for w in tokens if w.isalpha()]
return token_words
df['words'] = df.apply(identify_tokens, axis=1)
def stem_list(row):
my_list = row['words']
stemmed_list = [stemming.stem(word) for word in my_list]
return (stemmed_list)
df['stemmed_words'] = df.apply(stem_list, axis=1)
def lemma_list(row):
my_list = row['stemmed_words']
lemma_list = [lemma.lemmatize(word, pos='v') for word in my_list]
return (lemma_list)
df['lemma_words'] = df.apply(lemma_list, axis=1)
def remove_stops(row):
my_list = row['lemma_words']
meaningful_words = [w for w in my_list if not w in stops]
return (meaningful_words)
df['stem_meaningful'] = df.apply(remove_stops, axis=1)
def rejoin_words(row):
my_list = row['stem_meaningful']
joined_words = (" ".join(my_list))
return joined_words
df['processed'] = df.apply(rejoin_words, axis=1)
Как видно из кода, я использую pandas. Однако здесь я привел образец текста.
Моя проблемная зона:
def lemma_list(row):
my_list = row['stemmed_words']
lemma_list = [lemma.lemmatize(word, pos='v') for word in my_list]
return (lemma_list)
df['lemma_words'] = df.apply(lemma_list, axis=1)
Хотя код работает без каких-либо ошибок, функция леммы не работает должным образом.
Заранее спасибо.