Я предварительно обрабатываю текстовые данные. Однако я столкнулся с проблемой лемматизации. Ниже приведен пример текста:
'В четверг в прокуратуру был направлен 18-летний мальчик, который якобы похитил в прошлом году криптовалюту на сумму около 15 миллионов иен (134 300 долларов США), взломав сайт хранения цифровой валюты. Полиция сообщила: «Это первое в Японии дело, в котором против хакера были возбуждены уголовные дела за потери в криптовалюте.», «\ n», «Мальчик из города Уцуномия, Точиги»Префектура, имя которой не разглашается из-за того, что он несовершеннолетний, якобы украл деньги после взлома Monappy, веб-сайта, где пользователи могут хранить виртуальную валюту monacoin в период с 14 августа по 1 сентября прошлого года ».« Он использовал программное обеспечение под названиемЭто затрудняет определение того, кто получает доступ к системе, но полиция опознала его, проанализировав записи сообщений, оставленные на сервере веб-сайта ».« Полиция сказала, что мальчик признался в обвинениях, цитируя его как «Я чувствовалкак я нашел трюк, которого никто не знает, и сделал это так, как будто ямы играем в видеоигры. »,« Он воспользовался недостатком функции веб-сайта, которая позволяет пользователю переводить валюту другому пользователю, зная, что система будет работать неправильно, если переводы будут повторяться в течение короткого периода времени. ',' Он неоднократно подавал запросы на перевод валюты самому себе, подавляя систему и позволяя ему регистрировать больше денег на своем счете. ',' Было затронуто около 7 700 пользователей, и оператор возместит их. ',' Мальчик позже положилПохищенные монакоины на счете, созданном другим оператором криптовалюты, получали выплаты в другой криптовалюте и покупали такие предметы, как смартфон, сообщила полиция. '' По словам оператора Monappy, украденные монакоины хранились с использованием системы спостоянное подключение к интернету, и те, кто оставался в автономном режиме, не были украдены. '
Мой код:
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)
Как видно из кода, я использую панд,Однако здесь я привел пример текста.
Моя проблемная область:
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)
Хотя код работает без каких-либо ошибок, функция леммы не работает ожидаемым образом.
Заранее спасибо.